Tiêu đề gốc: "Thiết kế GAS đầu tiên của ngôn ngữ MOVE: Cách tính chi phí GAS trên chuỗi Aptos?" 》
Tác giả gốc: Aptos Labs
Bản tổng hợp gốc: Aptos Global
Aptos Labs đã công bố kế hoạch GAS của Aptos vào ngày 14 tháng 10, vì phiên bản trước của ngôn ngữ MOVE thực sự được thiết kế để chạy mà không cần GAS. Do đó, chúng tôi chưa sẵn sàng đối với kế hoạch GAS, vì vậy kế hoạch GAS do phòng thí nghiệm Aptos thiết lập cho Aptos lần này là thiết kế GAS đầu tiên của ngôn ngữ MOVE và được gọi chính thức là "một cuộc phiêu lưu".
Trong kế hoạch GAS của Aptos, Aptos Labs đã nêu các nguyên tắc và quy trình riêng của mình để hình thành GAS, cách tính GAS, các điều chỉnh phí GAS tiếp theo và tích cực tiếp thu các ý kiến của cộng đồng Aptos.
Đo lường GAS là một khái niệm cơ bản trong Aptos và nhiều blockchain khác, nó xác định việc thực thi và Tóm tắt tính toán lượng tài nguyên tính toán và lưu trữ theo yêu cầu của nền tảng giao dịch trên chuỗi lưu trữ. Kế hoạch GAS xác định chi phí tiêu thụ cho tất cả các lần thực thi trên chuỗi và được sử dụng để tính chi phí GAS được sử dụng trong quá trình thực hiện các giao dịch.
1) Xác định các nguyên tắc của chúng tôi;
2) Chuẩn bị một khung đánh giá để xác định giá cho mỗi lần thực hiện;
3) Thiết lập hệ thống đo lường GAS và đại số GAS an toàn cho Move;
4) Nhập khung GAS ngược dòng vào Aptos;
5) Làm cho khung GAS nhận biết được việc lưu trữ;
6) Cuối cùng, hoàn thiện thêm kế hoạch GAS.
1. Chi phí của hoạt động phải liên quan trực tiếp đến các tài nguyên có sẵn trên mạng (chẳng hạn như CPU, bộ nhớ, mạng, I/O lưu trữ và mức sử dụng dung lượng , vân vân.). Ngoài ra, khi công nghệ và quy trình được cải thiện, chi phí của GAS sẽ giảm.
2. Gas phải được thiết lập bằng cách quản trị trên chuỗi và có thể được cấu hình liền mạch.
3. Gas có thể ngăn chặn các cuộc tấn công DoS vào một nhóm tài nguyên cố định trong mạng và có thể cần được điều chỉnh nhanh chóng thông qua các đề xuất quản trị dựa trên điều kiện mạng.
4. Giá GAS của Aptos phản ánh mong muốn của Aptos Foundation trong việc thúc đẩy tăng trưởng và giúp mọi người có thể tiếp cận blockchain.
5. Khuyến khích những lựa chọn tốt trong thiết kế - chẳng hạn như ưu tiên bảo mật, tính mô-đun, xác nhận, v.v.
Khi người dùng gửi một giao dịch, họ Hai đại lượng cũng phải được chỉ định trong giao dịch:
Lượng gas tối đa: Được đo bằng đơn vị GAS. Đây là số lượng đơn vị GAS tối đa mà người dùng (tức là người gửi giao dịch) sẵn sàng chi tiêu để thực hiện giao dịch.
Đơn vị giá gas:Được tính bằng bát phân trên một đơn vị GAS, trong đó 1 bát phân=0,00000001 APT(=$10^{-8} $). Đây là mức giá gas mà người dùng sẵn sàng trả.
1) Chi phí cố định, Cơ sở cố định cộng với phí bổ sung cho các giao dịch lớn.
2) Chi phí thực thi, dùng để thực hiện các lệnh Move.
3) Đọc chi phí, dùng để đọc dữ liệu từ bộ lưu trữ liên tục.
4) Chi phí ghi, dùng để ghi dữ liệu vào bộ lưu trữ liên tục.
Phí giao dịch cuối cùng có thể được tính bằng cách nhân tổng lượng GAS tiêu thụ (tính bằng đơn vị GAS) với đơn giá GAS. Ví dụ: nếu một giao dịch tiêu thụ 670 đơn vị GAS và đơn giá gas do người dùng chỉ định trong giao dịch là 100 Octa mỗi đơn vị thì phí giao dịch cuối cùng là 670 * 100 = 67000 Octa = 0,00067 APT.
Nếu một giao dịch sử dụng hết gas trong quá trình thực hiện, người gửi sẽ bị tính phí dựa trên lượng gas tối đa và nền tảng giao dịch sẽ thực hiện. được hoàn nguyên.
Có một số thành phần của gói GAS độc lập với chi tiết của từng hoạt động riêng lẻ, bao gồm quy mô giao dịch và đơn vị GAS tối đa (khác với số GAS tối đa do người dùng chỉ định trong giao dịch).
Đối với hầu hết các giao dịch, quy mô giao dịch có thể nằm trong phạm vi có độ lớn hàng kilobyte. Tuy nhiên, bản phát hành mô-đun Move thường có kích thước vài kilobyte, trong khi khung Aptos là khoảng 100 KB. Hầu hết các mô-đun người dùng thường có kích thước từ 4KB đến 40KB. Ban đầu, chúng tôi đặt giá trị kích thước giao dịch thành 32KB, nhưng dựa trên phản hồi của cộng đồng yêu cầu thêm không gian để đơn giản hóa việc phát triển ứng dụng, chúng tôi đã điều chỉnh kích thước giao dịch thành 64KB.
Các giao dịch rất lớn sẽ dẫn đến chi phí băng thông trên mạng cao hơn và có thể tác động tiêu cực đến hiệu suất. Nếu bị lạm dụng, mempool có thể được khuyến khích bỏ qua các giao dịch lớn hơn, vì vậy cách tiếp cận của chúng tôi là cân bằng quy mô và khả năng tiếp cận của các giao dịch lớn nhất.
Đơn vị GAS tối đa trong kế hoạch GAS xác định một số lượng hoạt động tối đa mà một giao dịch có thể thực hiện. Để ý! Số tiền này khác với số GAS tối đa do người dùng chỉ định trong giao dịch.
Đơn vị GAS tối đa của gói GAS ảnh hưởng trực tiếp đến thời gian thực hiện giao dịch. Việc đặt nó quá cao có thể gây ra tác động tiêu cực đến hiệu suất trên blockchain. . Ví dụ: người dùng có thể quên tăng giá trị trong vòng lặp while, dẫn đến vòng lặp vô hạn, đây là một lỗi phổ biến. Chúng tôi nhận thấy rằngngay cả khi nâng cấp khung lớn nhất, chúng tôi vẫn sử dụng chưa đến 90% đơn vị gas tối đa của gói gas (đặt ở mức 1.000.000).
Để đánh giá chi phí thực hiện, chúng tôi đã xây dựng khung cơ sở và được sử dụng khi thực thi khung đó.
Valgrind Để phân tích Move VM. Đầu ra của nó là một tập hợp mã nguồn có chú thích cho chúng ta biết mỗi dòng mã tạo ra bao nhiêu lệnh máy.
Với sự trợ giúp của phân tích ở trên, chúng tôi có ước tính sơ bộ về chi phí tương đối của tất cả các hướng dẫn Di chuyển và các hàm gốc. Tuy nhiên, chúng tôi lưu ý rằng phương pháp này có một số vấn đề với các hàm nội tuyến: chúng không tự động được đưa vào số lượng của người gọi. Chúng tôi cũng thấy rằng điều này chỉ xảy ra khi chúng tôi phân tích các hướng dẫn Di chuyển nhất định và chúng tôi có thể khắc phục điều này bằng cách cộng các số lại với nhau.
Sau đó, nhóm nghiên cứu rút ra số lượng lệnh máy cuối cùng được thực thi bằng cách xem xét các mô hình mã hóa nhằm nâng cao độ bền và tính bảo mật của hệ thống. Con số này lần lượt được cân nhắc với các đơn vị GAS lưu trữ và tối đa để xác định giá trị hiện tại của chúng trong gói GAS.
Bất cứ khi nào truy cập vào một tệp được lưu trữ trong bộ lưu trữ liên tục Khi nào đọc hoặc ghi các mục hoặc dữ liệu trạng thái sổ cái, nút Aptos sẽ phát hành lệnh đọc hoặc ghi vào thiết bị lưu trữ. Tổng số lần truy cập dữ liệu mỗi giây phụ thuộc vào băng thông và dung lượng IOPS của thiết bị lưu trữ. Tương tự như các chu kỳ CPU lập lịch cho phần tính toán, việc truy cập dữ liệu là sự khan hiếm tức thời mà người dùng blockchain cạnh tranh thông qua thị trường phí khi hệ thống đang tải. Ngoài ra, chi phí chiếm dụng ổ đĩa để ghi dữ liệu là vĩnh viễn trên chuỗi. Nhóm Aptos thiết kế các gói GAS lưu trữ bằng cách tính đến các chi phí này.
Việc truy cập và lưu trữ bất kỳ mục trạng thái nào sẽ tạo ra và xác minh cấu trúc dữ liệu của toàn bộ trạng thái blockchain
Chi phí liên quan đến Cây Merkle Sứa:
Chi phí này liên quan đến số lượng các mục trạng thái khác nhau ($2^{ 256 }$). Ngoài ra còn có một chi phí tỷ lệ thuận với quy mô của mỗi dự án. Để vận hành một mục trạng thái, phí là (ngoại trừ các trường hợp ngoại lệ được mô tả trong phần tiếp theo):
Phí GAS lưu trữ = item_fee + (byte_fee * byte)
Mọi quyền truy cập vào một mục trạng thái thuộc một trong ba loại: đọc, tạo hoặc viết. Quyền truy cập được tính bằng phí dự án và phí byte, như được thể hiện trong phương trình trên.
Hoạt động đọc là hoạt động phổ biến nhất và chỉ bị giới hạn bởi sự khan hiếm tài nguyên tức thời. Do đó, phí đọc được hiệu chỉnh dựa trên IOPS của đĩa (chi phí dự án) và dung lượng băng thông của thông số kỹ thuật phần cứng tham chiếu.
create thêm một mặt hàng mới vào state store. Vì vậy, việc tạo thêm cấu trúc dữ liệu xác thực, khiến mọi thứ trở nên đắt hơn và do đó đắt nhất. Phí tạo được hiệu chỉnh dựa trên dung lượng đĩa tham chiếu do mạng sở hữu. Do đó, việc lấp đầy đĩa bằng các mục (item_fee) và byte (byte_fee) cần rất nhiều GAS.
Thao tác ghi cập nhật các mặt hàng hiện có trong state store. Do đó, hoạt động ghi không phát sinh thêm chi phí trong cấu trúc dữ liệu xác thực. Tuy nhiên, vẫn có thể làm hỏng đĩa bằng cách sửa đổi các mục hiện có thành byte lớn hơn. Do đó, chúng tôi tính phí các byte giống nhau trong mục được cập nhật như khi nó được tạo.
Cần lưu ý rằng chi phí liên quan đến việc lưu trữ được đánh giá trên cơ sở mỗi giao dịch: ngay cả khi bạn đọc/ghi cùng một tài nguyên nhiều lần, Bạn chỉ cần phải trả tiền một lần.
Dựa trên những cân nhắc ở trên, chúng tôi đã xác định 6 thông số GAS cấu thành nên tổng chi phí GAS. Xem bên dưới:
per_item_read: Chỉnh sửa dựa trên IOP
per_byte_read: Được hiệu chỉnh dựa trên băng thông thực tế
per_item_create: Được hiệu chỉnh dựa trên tổng số mục mục tiêu
per_byte_create : Được hiệu chỉnh theo tổng kích thước mục tiêu - 1KB đầu tiên của mỗi mục
per_item_write: Tương tự như per_item_read
per_byte_write: Tương tự như per_byte_create
Để biết thêm thông tin, hãy truy cập tại đây.
Cho dù sử dụng APT hay The Giá trị thị trường của một loại tiền tệ được tính bằng chi phí để thực hiện một hoạt động, với mỗi hoạt động và giao dịch yêu cầu một chi phí đơn vị cố định liên quan đến chi phí lưu trữ và thực hiện. Chi phí đơn vị khí đốt cố định giúp giữ lịch trình khí đốt không đổi và tách biệt khỏi giá trị thị trường tự do của APT. Ngoài ra, việc chọn chính xác số lượng đơn vị GAS sẽ giúp giữ nguyên lịch trình GAS của bạn. Với suy nghĩ này, nhóm Aptos đại diện cho các đơn vị GAS với độ chính xác khoảng 3 chữ số. Vì vậy, chi phí của một giao dịch chuyển nhượng là khoảng 700 đơn vị gas.
Mặc dù chúng tôi đã đầu tư vào Chương trình GAS Rất nhiều nỗ lực nhưng vẫn chưa hoàn thành. Là một dự án cộng đồng, các thành viên cộng đồng Aptos có thể chọn:
1) Dựa trên kinh nghiệm của bạn, hãy tìm ra những khía cạnh chưa hợp lý của kế hoạch GAS;
2) Nói it Quan tâm đến chương trình GAS và tham gia thảo luận cộng đồng.
3) Bỏ phiếu về các đề xuất quản trị liên quan đến GAS trên Aptos.
Các kế hoạch GAS được lưu trữ dưới dạng cấu hình trên chuỗi, nhưng có thể được thay đổi thông qua các đề xuất quản trị của Aptos và các chỉ thị mới có thể được thêm vào một cách liền mạch hoặc Chức năng gốc.
Chương trình GAS được thiết kế để có thể mở rộng, cho phép nâng cấp chương trình thông qua các đề xuất quản trị. Các thông số GAS có thể được điều chỉnh theo thời gian khi Aptos và cộng đồng Aptos tiếp tục cải thiện Move VM và kết hợp phản hồi của người dùng.
Đôi khi, công thức GAS có thể yêu cầu những thay đổi phức tạp ngoài cấu hình trên chuỗi. Các công thức GAS này thường được mã hóa bằng Rust và được phân biệt bằng các cờ tính năng GAS trên chuỗi. Để nâng cấp các công thức này, phần mềm nút phải được cập nhật các công thức mới, được phân biệt bằng các cờ chữ ký GAS khác nhau. Sau đó, phần mềm nút phải được phát hành và được các nhà khai thác nút áp dụng hàng loạt, đồng thời cuối cùng, đề xuất quản trị phải được phát hành và phê duyệt trước khi có thể sử dụng phiên bản gas mới.
Đây là giải pháp A khả thi đầu tiên của Move khuôn khổ GAS. Nó yêu cầu sửa đổi rộng rãi để Move VM và Aptos-Core. Chúng tôi hy vọng công việc này sẽ mở đường cho công việc trong tương lai:
1) Giảm chi phí thực hiện, Có một mô hình GAS thực tế cho thấy trình biên dịch và trình biên dịch ở đâu máy ảo hoạt động hiệu quả, nhóm có thể cải thiện hầu hết chúng để giảm chi phí thực thi.
2) Tính toán GAS đa chiều, cho phép người dùng chỉ định ngân sách riêng cho việc thực hiện và lưu trữ. Bằng cách này, người dùng không phải trả giá xăng cao cho các ứng dụng được mã hóa kém và mất quá nhiều thời gian để thực thi. Nó cũng sẽ cho phép định nghĩa chi tiết hơn về giá Gas tối đa cho các giao dịch phía blockchain;
3) Giảm bớt trạng thái cồng kềnh,Hiện tại không có cách nào dễ dàng để thu nhỏ tập hợp trạng thái, ngoại trừ hợp đồng (hoặc người dùng) xóa mọi thứ một cách rõ ràng. Người dùng trả tiền để xóa dữ liệu có thể tạo ra cơ hội chênh lệch giá, trong đó người dùng tạo bộ nhớ khi giá rẻ và xóa nó khi giá đắt. Aptos đã trì hoãn việc giải quyết thách thức này, điều này có thể làm suy yếu động cơ xóa dữ liệu trên chuỗi của các nhà phát triển. Nhóm đang khám phá khái niệm về TTL cho mỗi mục sẽ loại bỏ các mục trạng thái không được truy cập khi TTL hết hạn.
Liên kết gốc
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia
