Thiết kế GAS đầu tiên trong ngôn ngữ MOVE: Phương pháp tính toán chi phí GAS on-chain
Phiên bản trước của ngôn ngữ MOVE dự kiến sẽ hoạt động mà không cần GAS, vì vậy chưa chuẩn bị cho kế hoạch GAS. Gần đây, kế hoạch GAS được thiết lập cho một chuỗi công cộng nào đó là thiết kế GAS đầu tiên của ngôn ngữ MOVE, được gọi là "một cuộc phiêu lưu".
Kế hoạch GAS này nêu rõ các nguyên tắc, quy trình, phương pháp tính toán, điều chỉnh sau này và tiếp nhận ý kiến từ cộng đồng trong việc xây dựng GAS.
Đo lường GAS là một khái niệm cơ bản trong nhiều blockchain, nó định nghĩa lượng tài nguyên tính toán và lưu trữ cần thiết để thực hiện và lưu trữ giao dịch trên chuỗi. Kế hoạch GAS xác định chi phí tiêu thụ cho tất cả các thực thi trên chuỗi, được sử dụng để tính toán chi phí GAS sử dụng trong quá trình thực hiện giao dịch.
quy trình
Để thực hiện hiệu quả, quy trình on-chain như sau:
Nguyên tắc định nghĩa
Chuẩn bị khung đánh giá, xác định giá cho mỗi lần thực hiện
Thiết lập hệ thống đo lường GAS và đại số GAS an toàn cho MOVE.
Nhập khung GAS thượng nguồn
Tăng cường nhận thức lưu trữ cho khung GAS
Tiến hành chi tiết hóa kế hoạch GAS
nguyên tắc
Các nguyên tắc đã được định nghĩa bao gồm:
Chi phí hoạt động nên liên quan trực tiếp đến tài nguyên có sẵn của mạng và giảm theo sự tiến bộ của công nghệ.
GAS nên được thiết lập bởi quản trị on-chain, có thể cấu hình liền mạch.
GAS có thể ngăn chặn các cuộc tấn công DoS, có thể điều chỉnh nhanh chóng dựa trên tình hình mạng.
Giá GAS nên phản ánh tầm nhìn về việc tăng trưởng nhanh chóng và duy trì khả năng tiếp cận của blockchain.
Khuyến khích đưa ra những lựa chọn tốt trong thiết kế, như ưu tiên tính an toàn, tính mô-đun, v.v.
GAS tính toán
Người dùng phải chỉ định khi gửi giao dịch:
Số lượng GAS tối đa: Số đơn vị GAS mà người dùng sẵn sàng chi cho việc thực hiện giao dịch.
Đơn giá GAS: tính theo hệ bát phân cho mỗi đơn vị GAS, 1 bát phân = 0.00000001 APT
Trong quá trình thực hiện giao dịch sẽ thu phí:
Chi phí cố định
Chi phí thực hiện lệnh MOVE
Chi phí đọc dữ liệu từ lưu trữ bền vững
Chi phí ghi dữ liệu vào lưu trữ bền vững
Phí giao dịch cuối cùng = Tổng lượng GAS tiêu thụ × Giá GAS
Ví dụ, nếu giao dịch tiêu tốn 670 đơn vị GAS, giá GAS mà người dùng chỉ định là 100 Octa/đơn vị, thì phí cuối cùng sẽ là 670 × 100 = 67000 Octa = 0.00067 APT.
Nếu trong quá trình thực hiện giao dịch mà hết GAS, bên gửi sẽ bị tính phí theo số lượng GAS tối đa, các thay đổi thực hiện trong giao dịch sẽ được khôi phục.
###建立 kế hoạch GAS
Cấu hình cơ bản
Kế hoạch GAS bao gồm các thành phần không liên quan đến một hoạt động đơn lẻ, chẳng hạn như kích thước giao dịch và đơn vị GAS tối đa.
Quy mô giao dịch
Hầu hết quy mô giao dịch ở mức kilobyte. Mô-đun MOVE phát hành có thể đạt vài nghìn byte, một khung khoảng 100 KB. Mô-đun người dùng thường nằm trong khoảng 4-40 KB. Giá trị quy mô giao dịch ban đầu được đặt là 32 KB, sau đó được điều chỉnh thành 64 KB dựa trên phản hồi của cộng đồng.
Việc giao dịch quy mô lớn sẽ làm tăng chi phí băng thông mạng và có thể ảnh hưởng đến hiệu suất. Pool bộ nhớ có thể bỏ qua các giao dịch quy mô lớn, do đó cần đạt được sự cân bằng giữa quy mô tối đa và khả năng truy cập.
Đơn vị GAS tối đa
Đơn vị GAS tối đa trong kế hoạch GAS định nghĩa số lượng thao tác tối đa có thể thực hiện trong một giao dịch đơn lẻ. Việc thiết lập quá cao có thể ảnh hưởng tiêu cực đến hiệu suất của blockchain. Qua kiểm tra, ngay cả khi thực hiện nâng cấp khung tối đa, cũng chỉ sử dụng chưa đến 90% đơn vị GAS tối đa ( được thiết lập là 1.000.000).
Thực hiện
Đánh giá chi phí thực thi bằng cách xây dựng khung tham chiếu và sử dụng Valgrind để phân tích Move VM. Đầu ra là mã nguồn có chú thích, hiển thị số lượng lệnh máy được tạo ra bởi mỗi dòng mã.
Dựa trên đó, ước tính một cách sơ bộ chi phí tương đối của tất cả các lệnh MOVE và hàm gốc. Lưu ý rằng có một số vấn đề với các hàm nội tuyến, có thể được giải quyết bằng cách cộng các số lại với nhau.
Cuối cùng, xem xét các ví dụ mã hóa nhằm tăng cường tính ổn định và an toàn của hệ thống, rút ra số lượng lệnh máy được thực thi. So sánh con số này với lưu trữ và đơn vị GAS tối đa, xác định giá trị hiện tại trong kế hoạch GAS.
Lưu trữ
Khi truy cập vào trạng thái mục hoặc dữ liệu của sổ cái, nút sẽ gửi yêu cầu đọc và ghi đến 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à khả năng IOPS của thiết bị lưu trữ. Truy cập dữ liệu là nguồn tài nguyên khan hiếm tức thời mà người dùng cạnh tranh trên thị trường phí trong thời gian tải hệ thống. Chi phí chiếm dụng đĩa cho việc ghi dữ liệu là vĩnh viễn trên chuỗi.
Việc truy cập và lưu trữ bất kỳ mục trạng thái nào sẽ phát sinh chi phí liên quan đến cấu trúc dữ liệu xác minh toàn bộ trạng thái blockchain. Chi phí này liên quan đến cơ sở của các mục trạng thái khác nhau ($2^{256}$). Cũng có một chi phí tỷ lệ thuận với kích thước của từng mục.
Đối với phí thao tác mục trạng thái (, ngoại trừ các trường hợp ngoại lệ được mô tả trong phần tiếp theo ) là:
Lưu trữ phí GAS = item_fee + (byte_fee × bytes)
Đọc, tạo và viết
Truy cập mục trạng thái được chia thành ba loại: đọc, tạo hoặc ghi. Truy cập bị tính phí theo phí mục và phí byte.
Hoạt động đọc là phổ biến nhất, chỉ bị giới hạn bởi sự khan hiếm tài nguyên tạm thời. Chi phí đọc được hiệu chỉnh dựa trên IOPS đĩa và dung lượng băng thông theo thông số kỹ thuật phần cứng tham khảo.
Tạo hoạt động thêm mục mới vào lưu trữ trạng thái, làm tăng chi phí cấu trúc dữ liệu xác thực, do đó tốn kém nhất. Chi phí tạo được hiệu chỉnh dựa trên không gian đĩa tham chiếu mà mạng sở hữu.
Các thao tác ghi cập nhật các mục hiện có mà không phát sinh thêm chi phí trong cấu trúc dữ liệu xác thực. Tuy nhiên, việc sửa đổi các mục hiện có sang kích thước lớn hơn vẫn có thể chiếm dụng đĩa, vì vậy sẽ tính phí cho các byte trong mục cập nhật giống như khi tạo mới.
Chi phí liên quan đến lưu trữ được đánh giá dựa trên mỗi giao dịch: ngay cả khi đọc/ghi nhiều lần cùng một tài nguyên, chỉ tính phí một lần.
Dựa trên những xem xét trên, đã định nghĩa 6 tham số GAS cấu thành tổng chi phí:
per_item_read: Điều chỉnh theo IOPs
per_byte_read: căn cứ vào băng thông thực tế để hiệu chỉnh
per_item_create: căn chỉnh theo tổng mục tiêu
per_byte_create: Điều chỉnh theo tổng kích thước mục tiêu ( mỗi mục chứa 1KB đầu tiên )
per_item_write: giống như per_item_read
per_byte_write: giống như per_byte_create
chi phí GAS đơn vị ổn định
Mỗi thao tác và giao dịch đều cần một chi phí đơn vị cố định so với chi phí lưu trữ và thực hiện, bất kể giá trị thị trường tính bằng APT hay tiền tệ hợp pháp là bao nhiêu. Chi phí đơn vị GAS cố định giúp duy trì kế hoạch GAS ổn định và tách rời khỏi giá trị thị trường tự do của APT. Việc chọn chính xác số chữ số thập phân cho đơn vị GAS giúp duy trì sự ổn định của kế hoạch GAS. Với điều này trong tâm trí, đơn vị GAS được biểu thị với độ chính xác khoảng 3 chữ số. Vì vậy, chi phí cho giao dịch chuyển khoản khoảng 700 đơn vị GAS.
Tham gia cộng đồng
Các thành viên trong cộng đồng có thể:
Tìm ra những điểm không hợp lý trong kế hoạch GAS
Đưa ra lo ngại và tham gia thảo luận
Tiến hành bỏ phiếu cho các đề xuất quản trị liên quan đến GAS
điều chỉnh chi phí GAS
Kế hoạch GAS được sử dụng như lưu trữ cấu hình trên chuỗi, có thể được thay đổi thông qua các đề xuất quản trị và có thể thêm các chỉ thị hoặc tính năng gốc một cách liền mạch.
Kế hoạch GAS được thiết kế có thể mở rộng, cho phép nâng cấp thông qua các đề xuất quản trị. Với những cải tiến liên tục và việc tiếp thu phản hồi từ người dùng, các tham số GAS có thể được điều chỉnh theo thời gian.
Đôi khi công thức GAS có thể cần thay đổi phức tạp. Những công thức này thường được mã hóa bằng Rust và được phân biệt qua các dấu hiệu GAS trên chuỗi. Việc nâng cấp những công thức này cần cập nhật phần mềm nút, áp dụng rộng rãi và được phê duyệt thông qua đề xuất quản trị để sử dụng phiên bản GAS mới.
Công việc tương lai
Là khung GAS khả thi đầu tiên của MOVE, hướng công việc trong tương lai bao gồm:
Giảm chi phí thực thi: Sử dụng mô hình GAS thực để hiển thị hiệu suất của biên dịch viên và máy ảo, cải tiến để giảm chi phí thực thi.
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ữ, tránh phải trả giá GAS cao do vấn đề chất lượng mã.
Giảm bớt tình trạng cồng kềnh: Khám phá khái niệm TTL của từng dự án, xóa các mục trạng thái chưa được truy cập khi TTL hết hạn.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
8 thích
Phần thưởng
8
7
Chia sẻ
Bình luận
0/400
AirdropHunterWang
· 11giờ trước
Tính phí lại trở nên phức tạp, thật đau đầu.
Xem bản gốcTrả lời0
SchrodingerGas
· 07-14 08:30
Các nhà phát triển lại đang chơi trò chơi lý thuyết trò chơi... gas vẫn là cơn ác mộng của đồ ngốc
Xem bản gốcTrả lời0
GweiTooHigh
· 07-13 22:55
gas phí quá cao thật sự không chịu nổi
Xem bản gốcTrả lời0
rugged_again
· 07-12 03:48
Nói những điều này không bằng nói trực tiếp gas có thể giảm bao nhiêu?
Xem bản gốcTrả lời0
MetaverseMigrant
· 07-12 03:34
Tsk: Khí này có thể phức tạp hơn một chút
Xem bản gốcTrả lời0
NewDAOdreamer
· 07-12 03:30
Nhận tiền theo cách ngược lại cũng là nỗi đau cả đời của coder.
Thiết kế GAS sáng tạo bởi MOVE: Phân tích phương pháp tính toán tiêu thụ tài nguyên trên chuỗi
Thiết kế GAS đầu tiên trong ngôn ngữ MOVE: Phương pháp tính toán chi phí GAS on-chain
Phiên bản trước của ngôn ngữ MOVE dự kiến sẽ hoạt động mà không cần GAS, vì vậy chưa chuẩn bị cho kế hoạch GAS. Gần đây, kế hoạch GAS được thiết lập cho một chuỗi công cộng nào đó là thiết kế GAS đầu tiên của ngôn ngữ MOVE, được gọi là "một cuộc phiêu lưu".
Kế hoạch GAS này nêu rõ các nguyên tắc, quy trình, phương pháp tính toán, điều chỉnh sau này và tiếp nhận ý kiến từ cộng đồng trong việc xây dựng GAS.
Đo lường GAS là một khái niệm cơ bản trong nhiều blockchain, nó định nghĩa lượng tài nguyên tính toán và lưu trữ cần thiết để thực hiện và lưu trữ giao dịch trên chuỗi. Kế hoạch GAS xác định chi phí tiêu thụ cho tất cả các thực thi trên chuỗi, được sử dụng để tính toán chi phí GAS sử dụng trong quá trình thực hiện giao dịch.
quy trình
Để thực hiện hiệu quả, quy trình on-chain như sau:
nguyên tắc
Các nguyên tắc đã được định nghĩa bao gồm:
GAS tính toán
Người dùng phải chỉ định khi gửi giao dịch:
Trong quá trình thực hiện giao dịch sẽ thu phí:
Phí giao dịch cuối cùng = Tổng lượng GAS tiêu thụ × Giá GAS
Ví dụ, nếu giao dịch tiêu tốn 670 đơn vị GAS, giá GAS mà người dùng chỉ định là 100 Octa/đơn vị, thì phí cuối cùng sẽ là 670 × 100 = 67000 Octa = 0.00067 APT.
Nếu trong quá trình thực hiện giao dịch mà hết GAS, bên gửi sẽ bị tính phí theo số lượng GAS tối đa, các thay đổi thực hiện trong giao dịch sẽ được khôi phục.
###建立 kế hoạch GAS
Kế hoạch GAS bao gồm các thành phần không liên quan đến một hoạt động đơn lẻ, chẳng hạn như kích thước giao dịch và đơn vị GAS tối đa.
Hầu hết quy mô giao dịch ở mức kilobyte. Mô-đun MOVE phát hành có thể đạt vài nghìn byte, một khung khoảng 100 KB. Mô-đun người dùng thường nằm trong khoảng 4-40 KB. Giá trị quy mô giao dịch ban đầu được đặt là 32 KB, sau đó được điều chỉnh thành 64 KB dựa trên phản hồi của cộng đồng.
Việc giao dịch quy mô lớn sẽ làm tăng chi phí băng thông mạng và có thể ảnh hưởng đến hiệu suất. Pool bộ nhớ có thể bỏ qua các giao dịch quy mô lớn, do đó cần đạt được sự cân bằng giữa quy mô tối đa và khả năng truy cập.
Đơn vị GAS tối đa trong kế hoạch GAS định nghĩa số lượng thao tác tối đa có thể thực hiện trong một giao dịch đơn lẻ. Việc thiết lập quá cao có thể ảnh hưởng tiêu cực đến hiệu suất của blockchain. Qua kiểm tra, ngay cả khi thực hiện nâng cấp khung tối đa, cũng chỉ sử dụng chưa đến 90% đơn vị GAS tối đa ( được thiết lập là 1.000.000).
Đánh giá chi phí thực thi bằng cách xây dựng khung tham chiếu và sử dụng Valgrind để phân tích Move VM. Đầu ra là mã nguồn có chú thích, hiển thị số lượng lệnh máy được tạo ra bởi mỗi dòng mã.
Dựa trên đó, ước tính một cách sơ bộ chi phí tương đối của tất cả các lệnh MOVE và hàm gốc. Lưu ý rằng có một số vấn đề với các hàm nội tuyến, có thể được giải quyết bằng cách cộng các số lại với nhau.
Cuối cùng, xem xét các ví dụ mã hóa nhằm tăng cường tính ổn định và an toàn của hệ thống, rút ra số lượng lệnh máy được thực thi. So sánh con số này với lưu trữ và đơn vị GAS tối đa, xác định giá trị hiện tại trong kế hoạch GAS.
Khi truy cập vào trạng thái mục hoặc dữ liệu của sổ cái, nút sẽ gửi yêu cầu đọc và ghi đến 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à khả năng IOPS của thiết bị lưu trữ. Truy cập dữ liệu là nguồn tài nguyên khan hiếm tức thời mà người dùng cạnh tranh trên thị trường phí trong thời gian tải hệ thống. Chi phí chiếm dụng đĩa cho việc ghi dữ liệu là vĩnh viễn trên chuỗi.
Việc truy cập và lưu trữ bất kỳ mục trạng thái nào sẽ phát sinh chi phí liên quan đến cấu trúc dữ liệu xác minh toàn bộ trạng thái blockchain. Chi phí này liên quan đến cơ sở của các mục trạng thái khác nhau ($2^{256}$). Cũng có một chi phí tỷ lệ thuận với kích thước của từng mục.
Đối với phí thao tác mục trạng thái (, ngoại trừ các trường hợp ngoại lệ được mô tả trong phần tiếp theo ) là:
Lưu trữ phí GAS = item_fee + (byte_fee × bytes)
Đọc, tạo và viết
Truy cập mục trạng thái được chia thành ba loại: đọc, tạo hoặc ghi. Truy cập bị tính phí theo phí mục và phí byte.
Hoạt động đọc là phổ biến nhất, chỉ bị giới hạn bởi sự khan hiếm tài nguyên tạm thời. Chi phí đọc được hiệu chỉnh dựa trên IOPS đĩa và dung lượng băng thông theo thông số kỹ thuật phần cứng tham khảo.
Tạo hoạt động thêm mục mới vào lưu trữ trạng thái, làm tăng chi phí cấu trúc dữ liệu xác thực, do đó tốn kém nhất. Chi phí tạo được hiệu chỉnh dựa trên không gian đĩa tham chiếu mà mạng sở hữu.
Các thao tác ghi cập nhật các mục hiện có mà không phát sinh thêm chi phí trong cấu trúc dữ liệu xác thực. Tuy nhiên, việc sửa đổi các mục hiện có sang kích thước lớn hơn vẫn có thể chiếm dụng đĩa, vì vậy sẽ tính phí cho các byte trong mục cập nhật giống như khi tạo mới.
Chi phí liên quan đến lưu trữ được đánh giá dựa trên mỗi giao dịch: ngay cả khi đọc/ghi nhiều lần cùng một tài nguyên, chỉ tính phí một lần.
Dựa trên những xem xét trên, đã định nghĩa 6 tham số GAS cấu thành tổng chi phí:
chi phí GAS đơn vị ổn định
Mỗi thao tác và giao dịch đều cần một chi phí đơn vị cố định so với chi phí lưu trữ và thực hiện, bất kể giá trị thị trường tính bằng APT hay tiền tệ hợp pháp là bao nhiêu. Chi phí đơn vị GAS cố định giúp duy trì kế hoạch GAS ổn định và tách rời khỏi giá trị thị trường tự do của APT. Việc chọn chính xác số chữ số thập phân cho đơn vị GAS giúp duy trì sự ổn định của kế hoạch GAS. Với điều này trong tâm trí, đơn vị GAS được biểu thị với độ chính xác khoảng 3 chữ số. Vì vậy, chi phí cho giao dịch chuyển khoản khoảng 700 đơn vị GAS.
Tham gia cộng đồng
Các thành viên trong cộng đồng có thể:
điều chỉnh chi phí GAS
Kế hoạch GAS được sử dụng như lưu trữ cấu hình trên chuỗi, có thể được thay đổi thông qua các đề xuất quản trị và có thể thêm các chỉ thị hoặc tính năng gốc một cách liền mạch.
Kế hoạch GAS được thiết kế có thể mở rộng, cho phép nâng cấp thông qua các đề xuất quản trị. Với những cải tiến liên tục và việc tiếp thu phản hồi từ người dùng, các tham số GAS có thể được điều chỉnh theo thời gian.
Đôi khi công thức GAS có thể cần thay đổi phức tạp. Những công thức này thường được mã hóa bằng Rust và được phân biệt qua các dấu hiệu GAS trên chuỗi. Việc nâng cấp những công thức này cần cập nhật phần mềm nút, áp dụng rộng rãi và được phê duyệt thông qua đề xuất quản trị để sử dụng phiên bản GAS mới.
Công việc tương lai
Là khung GAS khả thi đầu tiên của MOVE, hướng công việc trong tương lai bao gồm:
Giảm chi phí thực thi: Sử dụng mô hình GAS thực để hiển thị hiệu suất của biên dịch viên và máy ảo, cải tiến để giảm chi phí thực thi.
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ữ, tránh phải trả giá GAS cao do vấn đề chất lượng mã.
Giảm bớt tình trạng cồng kềnh: Khám phá khái niệm TTL của từng dự án, xóa các mục trạng thái chưa được truy cập khi TTL hết hạn.