Thiết kế phí nhiên liệu đầu tiên của ngôn ngữ MOVE: Cách tính tiêu thụ trên chuỗi
Chi phí nhiên liệu là một khái niệm cơ bản của nhiều blockchain, nó định nghĩa một phép tính trừu tượng về 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ữ các giao dịch on-chain. Kế hoạch chi phí nhiên liệu sẽ xác định tất cả các chi phí tiêu tốn cho việc thực hiện trên chuỗi, được sử dụng để tính toán chi phí nhiên liệu 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 trên chuỗi là:
Nguyên tắc định nghĩa
Chuẩn bị khung đánh giá, xác định giá cho từng thực hiện
Thiết lập hệ thống đo lường phí nhiên liệu và đại số phí nhiên liệu cho MOVE
Nhập khung phí nhiên liệu thượng nguồn
Làm cho khung phí nhiên liệu có ý thức về lưu trữ
Cụ thể hóa kế hoạch phí nhiên liệu
nguyên tắc
Nguyên tắc được định nghĩa là:
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 ( như CPU, bộ nhớ, mạng, I/O lưu trữ và sử dụng không gian, v.v. ). Sau khi cải thiện công nghệ và quy trình, chi phí nhiên liệu nên giảm theo.
Phí nhiên liệu nên được thiết lập bởi quản trị on-chain và có thể được cấu hình liền mạch.
Phí nhiên liệu có thể ngăn chặn các cuộc tấn công DoS vào tài nguyên cố định của mạng, có thể cần điều chỉnh nhanh chóng thông qua các đề xuất quản trị dựa trên tình hình mạng.
Giá phí nhiên liệu phản ánh tầm nhìn về việc tăng trưởng nhanh chóng và duy trì sự phổ biến của blockchain.
Khuyến khích đưa ra lựa chọn tốt trong thiết kế, chẳng hạn như ưu tiên tính bảo mật, tính mô-đun, các sự kiện xác nhận, v.v.
Tính phí nhiên liệu
Người dùng phải chỉ định hai số lượng trong giao dịch khi gửi giao dịch:
Số lượng phí nhiên liệu tối đa: Được đo bằng đơn vị phí nhiên liệu. Đây là số đơn vị phí nhiên liệu mà người dùng sẵn sàng chi cho việc thực hiện giao dịch.
Giá đơn vị phí nhiên liệu: Tính bằng hệ bát phân cho mỗi đơn vị phí nhiên liệu, 1 hệ bát phân=0.00000001 APT(=$10^{-8}$). Đây là giá phí nhiên liệu mà người dùng sẵn sàng thanh toán.
Trong quá trình thực hiện, giao dịch sẽ bị tính phí:
Chi phí cố định, cơ sở cố định cộng với phí giao dịch lớn thêm.
Chi phí thực hiện, dùng để thực hiện lệnh MOVE.
Đọc chi phí, dùng để đọc dữ liệu từ lưu trữ bền vững.
Chi phí ghi, dùng để ghi dữ liệu vào lưu trữ vĩnh viễn.
Cuối cùng, phí giao dịch có thể được tính bằng tổng lượng phí nhiên liệu tiêu thụ nhân với đơn giá phí nhiên liệu. Ví dụ, nếu một giao dịch tiêu tốn 670 đơn vị phí nhiên liệu, đơn giá phí nhiên liệu mà người dùng chỉ định 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 trong quá trình thực hiện giao dịch hết phí nhiên liệu, bên gửi sẽ bị tính phí theo lượng phí nhiên liệu tối đa, tất cả các thay đổi được thực hiện trong giao dịch đó sẽ được khôi phục.
lập kế hoạch phí nhiên liệu
1. Cấu hình cơ bản
Kế hoạch phí nhiên liệu có một số thành phần không liên quan đến chi tiết của các hoạt động đơn lẻ, bao gồm kích thước giao dịch và đơn vị phí nhiên liệu tối đa ( khác với số lượng phí nhiên liệu tối đa mà người dùng chỉ định trong giao dịch ).
2. Quy mô giao dịch
Hầu hết các quy mô giao dịch có thể ở mức quy mô kilobyte. Tuy nhiên, việc phát hành mô-đun MOVE dễ dàng có hàng nghìn byte, trong khi khung khoảng 100 KB. Kích thước mô-đun của hầu hết người dùng thường nằm trong khoảng từ 4KB đến 40KB. Ban đầu, giá trị quy mô giao dịch được đặt là 32KB, nhưng do phản hồi từ cộng đồng yêu cầu cung cấp thêm không gian để đơn giản hóa việc phát triển ứng dụng, nên quy mô giao dịch đã được điều chỉnh thành 64KB.
Giao dịch quy mô rất lớn có thể dẫn đến việc tăng chi phí băng thông toàn mạng, có thể ảnh hưởng tiêu cực đến hiệu suất. Nếu bị lạm dụng, bộ nhớ tạm sẽ được khuyến khích bỏ qua các giao dịch có quy mô lớn hơn, vì vậy phương pháp của chúng tôi là đạt được sự cân bằng giữa kích thước giao dịch lớn nhất và khả năng tiếp cận.
3. Đơn vị phí nhiên liệu tối đa
Đơn vị phí nhiên liệu tối đa trong kế hoạch phí nhiên liệu xác định giao dịch có thể thực hiện bao nhiêu thao tác tối đa. Lưu ý! Điều này khác với lượng phí nhiên liệu tối đa mà người dùng chỉ định trong giao dịch.
Đơn vị phí nhiên liệu tối đa của kế hoạch phí nhiên liệu ảnh hưởng trực tiếp đến thời gian mà một giao dịch có thể thực hiện, việc đặt quá cao có thể dẫn đến ảnh hưởng tiêu cực đến hiệu suất của blockchain. Ví dụ, người dùng có thể quên có một biến gia tăng trong vòng lặp while, dẫn đến vòng lặp vô hạn, đây là một lỗi thường gặp. Ngay cả khi thực hiện nâng cấp khung tối đa, vẫn chưa đạt đến đơn vị phí nhiên liệu tối đa của kế hoạch phí nhiên liệu ( được đặt là 90% của 1,000,000).
4. Thực hiện
Để đánh giá chi phí thực hiện, một khung tham chiếu đã được xây dựng và Valgrind được sử dụng để phân tích MOVE VM khi thực hiện khung này. Đầu ra của nó là một tập hợp mã nguồn có chú thích, cho biết mỗi dòng mã đã tạo ra bao nhiêu lệnh máy.
Dựa trên phân tích ở trên, đã ước lượng sơ bộ chi phí tương đối của tất cả các lệnh MOVE và hàm gốc. Tuy nhiên, phương pháp này có một số vấn đề với các hàm nội tuyến: chúng sẽ không tự động bao gồm trong số đếm 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 phân tích một số lệnh MOVE nhất định, có thể được giải quyết bằng cách cộng các số lại với nhau.
Sau đó, thông qua việc 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, đội ngũ đã đưa ra số lượng lệnh máy thực thi cuối cùng. Số này lần lượt được cân nhắc với đơn vị lưu trữ và tối đa chi phí nhiên liệu để xác định giá trị hiện tại của chúng trong kế hoạch chi phí nhiên liệu.
5. Lưu trữ
Mỗi khi truy cập vào các mục trạng thái sổ cái hoặc dữ liệu được lưu trữ trong lưu trữ bền, nút sẽ phát ra yêu cầu đọc hoặc ghi tới 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ư chu kỳ CPU trong phần tính toán phí nhiên liệu, 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 qua thị trường phí khi hệ thống có tải, bên cạnh đó, chi phí chiếm dụng đĩa khi ghi dữ liệu là vĩnh viễn trên chuỗi. Đội ngũ đã thiết kế kế hoạch phí nhiên liệu lưu trữ bằng cách xem xét những 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ẽ phát sinh chi phí liên quan đến cấu trúc dữ liệu xác minh trạng thái toàn bộ 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 mỗi mục. Để thao tác với một mục trạng thái, phí là ( trừ các trường hợp ngoại lệ được mô tả trong phần tiếp theo ):
Bất kỳ truy cập nào vào mục trạng thái đều thuộc một trong ba loại sau: đọc, tạo hoặc ghi. Truy cập được tính phí theo phí mục và phí byte, như đã chỉ ra trong phương trình phía trên.
Hoạt động đọc là hoạt động phổ biến nhất, nó chỉ bị hạn chế bởi sự khan hiếm tài nguyên tạm thời. Do đó, chi phí đọc được điều chỉnh dựa trên chi phí IOPS đĩa ( và dung lượng băng thông của thông số kỹ thuật phần cứng tham khảo.
create là việc thêm một mục mới vào kho lưu trữ trạng thái. Do đó, create đã tăng cấu trúc dữ liệu xác thực, khiến mọi thứ trở nên đắt đỏ hơn, vì vậy chi phí cao nhất. Chi phí tạo ra được căn chỉnh dựa trên không gian đĩa tham chiếu mà mạng sở hữu. Do đó, việc làm đầy đĩa với mục )item_fee( và byte )byte_fee( cần rất nhiều phí nhiên liệu.
Các thao tác ghi cập nhật các mục hiện có trong kho trạng thái. Do đó, thao tác ghi sẽ không tạo ra chi phí bổ sung trong cấu trúc dữ liệu xác thực. Tuy nhiên, bằng cách sửa đổi các mục hiện có thành các byte lớn hơn, vẫn có thể làm hỏng đĩa. Vì vậy, chúng tôi tính phí cho các byte trong mục cập nhật giống như khi tạo.
Cần lưu ý rằng chi phí liên quan đến lưu trữ được đánh giá dựa trên từng giao dịch: ngay cả khi đọc/ghi nhiều lần cùng một tài nguyên, chỉ cần trả một khoản phí.
Dựa trên những xem xét trên, chúng tôi đã định nghĩa 6 tham số phí nhiên liệu, chúng cấu thành phần của tổng chi phí phí nhiên liệu. Xem dưới đây:
per_item_read: Điều chỉnh theo IOPs
per_byte_read: căn chỉnh theo băng thông thực tế
per_item_create: điều chỉnh theo tổng mục tiêu dự án
per_byte_create: Điều chỉnh theo kích thước tổng mục tiêu - 1KB đầu tiên chứa trong mỗi mục
per_item_write: giống như per_item_read
per_byte_write: tương tự như per_byte_create
) chi phí đơn vị nhiên liệu ổn định
Dù tính toán chi phí thực hiện giao dịch theo giá trị thị trường của APT hoặc tiền tệ pháp định, mỗi giao dịch và giao dịch bản thân đều cần 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ị nhiên liệu cố định giúp giữ cho kế hoạch phí nhiên liệu không thay đổi và tách rời khỏi giá trị thị trường tự do của APT. Hơn nữa, việc chọn số chữ số chính xác cho đơn vị phí nhiên liệu giúp duy trì kế hoạch phí nhiên liệu không thay đổi. Xét đến điều này, đội ngũ đã biểu thị đơn vị phí nhiên liệu với độ chính xác khoảng 3 chữ số. Do đó, chi phí cho giao dịch chuyển khoản khoảng 700 đơn vị phí nhiên liệu.
Tham gia cộng đồng
Ngay cả khi đã đầu tư rất nhiều công sức vào kế hoạch phí nhiên liệu, nhưng nó vẫn còn xa mới hoàn thiện. Là một dự án cộng đồng, các thành viên trong cộng đồng có thể lựa chọn:
Dựa trên kinh nghiệm, tìm ra những điểm không hợp lý trong kế hoạch phí nhiên liệu.
Nói ra những lo ngại về kế hoạch phí nhiên liệu và tham gia thảo luận trong cộng đồng
Tiến hành bỏ phiếu cho các đề xuất quản trị liên quan đến phí nhiên liệu
Làm thế nào để điều chỉnh chi phí nhiên liệu?
Kế hoạch phí nhiên liệu được lưu trữ dưới dạng cấu hình on-chain, nhưng có thể được thay đổi thông qua đề xuất quản trị và có thể dễ dàng thêm các lệnh mới hoặc chức năng gốc.
Kế hoạch phí nhiên liệu được thiết kế để mở rộng, cho phép nâng cấp thông qua các đề xuất quản trị. Với việc cải tiến liên tục MOVE VM và tiếp thu phản hồi từ người dùng, các tham số phí nhiên liệu có thể được điều chỉnh theo thời gian.
Đôi khi, công thức phí nhiên liệu có thể cần thay đổi phức tạp vượt ra ngoài cấu hình on-chain. Những công thức phí nhiên liệu này thường được mã hóa bằng Rust và được phân biệt bằng các biểu tượng đặc trưng phí nhiên liệu on-chain. Để nâng cấp những công thức này, cần phải cập nhật phần mềm nút bằng công thức mới và phân biệt bằng các biểu tượng đặc trưng phí nhiên liệu 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 rộng rãi. Cuối cùng, cần phải phát hành và phê duyệt đề xuất quản trị để có thể sử dụng phiên bản phí nhiên liệu mới.
Công việc trong tương lai
Đây là khung phí nhiên liệu khả thi đầu tiên của MOVE. Nó cần nhiều sửa đổi đối với MOVE VM và Core. Chúng tôi hy vọng công việc này sẽ mở đường cho các công việc trong tương lai:
1### Giảm chi phí thực hiện, sở hữu một mô hình phí nhiên liệu thực tế cho thấy nơi mà trình biên dịch và máy ảo có hiệu suất, đội ngũ có thể cải thiện phần lớn trong số đó để giảm chi phí thực hiện.
2) Tính toán phí nhiên liệu đa chiều, cho phép người dùng chỉ định ngân sách riêng cho việc thực thi và lưu trữ. Như vậy, người dùng không phải trả phí nhiên liệu cao cho thời gian thực thi kéo dài do ứng dụng lập trình kém. Nó cũng sẽ cho phép định nghĩa chi tiết hơn về mức giá phí nhiên liệu tối đa cho giao dịch trên chuỗi.
3) Giảm tình trạng cồng kềnh, hiện tại không có cách đơn giản nào để thu hẹp tập trạng thái, ngoài hợp đồng ) hoặc người dùng ( xóa rõ ràng các đối tượng. Việc người dùng trả tiền để xóa dữ liệu có thể mang lại cơ hội chênh lệch giá, người dùng tạo lưu trữ khi giá rẻ, và xóa nó khi giá đắt. Việc trì hoãn việc giải quyết thách thức này có thể làm giảm động lực của các nhà phát triển để xóa dữ liệu trên chuỗi. Đội ngũ đang khám phá khái niệm TTL cho mỗi dự án, khái niệm này sẽ 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.
24 thích
Phần thưởng
24
9
Chia sẻ
Bình luận
0/400
SatoshiLegend
· 07-18 12:03
An toàn trên chuỗi mới là cơ bản. Việc tính toán phí nhiên liệu về bản chất chính là sự trừu tượng hóa phân bổ tài nguyên.
Xem bản gốcTrả lời0
LayoffMiner
· 07-18 04:42
move không quen lắm, chỉ nhìn hình một chút thôi
Xem bản gốcTrả lời0
ZkSnarker
· 07-18 00:42
về mặt kỹ thuật chỉ là đại số với các bước bổ sung... không nói dối, cần phải cải thiện kỹ năng về các trừu tượng chi phí.
Xem bản gốcTrả lời0
wrekt_but_learning
· 07-16 22:19
Phí nhiên liệu phức tạp quá, mệt chết đi được.
Xem bản gốcTrả lời0
LightningSentry
· 07-15 20:58
move lại được chơi cho Suckers
Xem bản gốcTrả lời0
ZenZKPlayer
· 07-15 20:56
Phí gas này chính là một hố đen
Xem bản gốcTrả lời0
InfraVibes
· 07-15 20:55
Quá phức tạp rồi phải không? Nói rõ cách tính trước đã.
Thiết kế phí nhiên liệu đầu tiên của ngôn ngữ MOVE: Chi phí tính toán trên chuỗi được xác định như thế nào
Thiết kế phí nhiên liệu đầu tiên của ngôn ngữ MOVE: Cách tính tiêu thụ trên chuỗi
Chi phí nhiên liệu là một khái niệm cơ bản của nhiều blockchain, nó định nghĩa một phép tính trừu tượng về 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ữ các giao dịch on-chain. Kế hoạch chi phí nhiên liệu sẽ xác định tất cả các chi phí tiêu tốn cho việc thực hiện trên chuỗi, được sử dụng để tính toán chi phí nhiên liệu 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 trên chuỗi là:
nguyên tắc
Nguyên tắc được định nghĩa là:
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 ( như CPU, bộ nhớ, mạng, I/O lưu trữ và sử dụng không gian, v.v. ). Sau khi cải thiện công nghệ và quy trình, chi phí nhiên liệu nên giảm theo.
Phí nhiên liệu nên được thiết lập bởi quản trị on-chain và có thể được cấu hình liền mạch.
Phí nhiên liệu có thể ngăn chặn các cuộc tấn công DoS vào tài nguyên cố định của mạng, có thể cần điều chỉnh nhanh chóng thông qua các đề xuất quản trị dựa trên tình hình mạng.
Giá phí nhiên liệu phản ánh tầm nhìn về việc tăng trưởng nhanh chóng và duy trì sự phổ biến của blockchain.
Khuyến khích đưa ra lựa chọn tốt trong thiết kế, chẳng hạn như ưu tiên tính bảo mật, tính mô-đun, các sự kiện xác nhận, v.v.
Tính phí nhiên liệu
Người dùng phải chỉ định hai số lượng trong giao dịch khi gửi giao dịch:
Số lượng phí nhiên liệu tối đa: Được đo bằng đơn vị phí nhiên liệu. Đây là số đơn vị phí nhiên liệu mà người dùng sẵn sàng chi cho việc thực hiện giao dịch.
Giá đơn vị phí nhiên liệu: Tính bằng hệ bát phân cho mỗi đơn vị phí nhiên liệu, 1 hệ bát phân=0.00000001 APT(=$10^{-8}$). Đây là giá phí nhiên liệu mà người dùng sẵn sàng thanh toán.
Trong quá trình thực hiện, giao dịch sẽ bị tính phí:
Cuối cùng, phí giao dịch có thể được tính bằng tổng lượng phí nhiên liệu tiêu thụ nhân với đơn giá phí nhiên liệu. Ví dụ, nếu một giao dịch tiêu tốn 670 đơn vị phí nhiên liệu, đơn giá phí nhiên liệu mà người dùng chỉ định 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 trong quá trình thực hiện giao dịch hết phí nhiên liệu, bên gửi sẽ bị tính phí theo lượng phí nhiên liệu tối đa, tất cả các thay đổi được thực hiện trong giao dịch đó sẽ được khôi phục.
lập kế hoạch phí nhiên liệu
1. Cấu hình cơ bản
Kế hoạch phí nhiên liệu có một số thành phần không liên quan đến chi tiết của các hoạt động đơn lẻ, bao gồm kích thước giao dịch và đơn vị phí nhiên liệu tối đa ( khác với số lượng phí nhiên liệu tối đa mà người dùng chỉ định trong giao dịch ).
2. Quy mô giao dịch
Hầu hết các quy mô giao dịch có thể ở mức quy mô kilobyte. Tuy nhiên, việc phát hành mô-đun MOVE dễ dàng có hàng nghìn byte, trong khi khung khoảng 100 KB. Kích thước mô-đun của hầu hết người dùng thường nằm trong khoảng từ 4KB đến 40KB. Ban đầu, giá trị quy mô giao dịch được đặt là 32KB, nhưng do phản hồi từ cộng đồng yêu cầu cung cấp thêm không gian để đơn giản hóa việc phát triển ứng dụng, nên quy mô giao dịch đã được điều chỉnh thành 64KB.
Giao dịch quy mô rất lớn có thể dẫn đến việc tăng chi phí băng thông toàn mạng, có thể ảnh hưởng tiêu cực đến hiệu suất. Nếu bị lạm dụng, bộ nhớ tạm sẽ được khuyến khích bỏ qua các giao dịch có quy mô lớn hơn, vì vậy phương pháp của chúng tôi là đạt được sự cân bằng giữa kích thước giao dịch lớn nhất và khả năng tiếp cận.
3. Đơn vị phí nhiên liệu tối đa
Đơn vị phí nhiên liệu tối đa trong kế hoạch phí nhiên liệu xác định giao dịch có thể thực hiện bao nhiêu thao tác tối đa. Lưu ý! Điều này khác với lượng phí nhiên liệu tối đa mà người dùng chỉ định trong giao dịch.
Đơn vị phí nhiên liệu tối đa của kế hoạch phí nhiên liệu ảnh hưởng trực tiếp đến thời gian mà một giao dịch có thể thực hiện, việc đặt quá cao có thể dẫn đến ảnh hưởng tiêu cực đến hiệu suất của blockchain. Ví dụ, người dùng có thể quên có một biến gia tăng trong vòng lặp while, dẫn đến vòng lặp vô hạn, đây là một lỗi thường gặp. Ngay cả khi thực hiện nâng cấp khung tối đa, vẫn chưa đạt đến đơn vị phí nhiên liệu tối đa của kế hoạch phí nhiên liệu ( được đặt là 90% của 1,000,000).
4. Thực hiện
Để đánh giá chi phí thực hiện, một khung tham chiếu đã được xây dựng và Valgrind được sử dụng để phân tích MOVE VM khi thực hiện khung này. Đầu ra của nó là một tập hợp mã nguồn có chú thích, cho biết mỗi dòng mã đã tạo ra bao nhiêu lệnh máy.
Dựa trên phân tích ở trên, đã ước lượng sơ bộ chi phí tương đối của tất cả các lệnh MOVE và hàm gốc. Tuy nhiên, phương pháp này có một số vấn đề với các hàm nội tuyến: chúng sẽ không tự động bao gồm trong số đếm 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 phân tích một số lệnh MOVE nhất định, có thể được giải quyết bằng cách cộng các số lại với nhau.
Sau đó, thông qua việc 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, đội ngũ đã đưa ra số lượng lệnh máy thực thi cuối cùng. Số này lần lượt được cân nhắc với đơn vị lưu trữ và tối đa chi phí nhiên liệu để xác định giá trị hiện tại của chúng trong kế hoạch chi phí nhiên liệu.
5. Lưu trữ
Mỗi khi truy cập vào các mục trạng thái sổ cái hoặc dữ liệu được lưu trữ trong lưu trữ bền, nút sẽ phát ra yêu cầu đọc hoặc ghi tới 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ư chu kỳ CPU trong phần tính toán phí nhiên liệu, 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 qua thị trường phí khi hệ thống có tải, bên cạnh đó, chi phí chiếm dụng đĩa khi ghi dữ liệu là vĩnh viễn trên chuỗi. Đội ngũ đã thiết kế kế hoạch phí nhiên liệu lưu trữ bằng cách xem xét những 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ẽ phát sinh chi phí liên quan đến cấu trúc dữ liệu xác minh trạng thái toàn bộ 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 mỗi mục. Để thao tác với một mục trạng thái, phí là ( trừ các trường hợp ngoại lệ được mô tả trong phần tiếp theo ):
Lưu trữ phí nhiên liệu = item_fee + (byte_fee * bytes)
Đọc, tạo và viết
Bất kỳ truy cập nào vào mục trạng thái đều thuộc một trong ba loại sau: đọc, tạo hoặc ghi. Truy cập được tính phí theo phí mục và phí byte, như đã chỉ ra trong phương trình phía trên.
Hoạt động đọc là hoạt động phổ biến nhất, nó chỉ bị hạn chế bởi sự khan hiếm tài nguyên tạm thời. Do đó, chi phí đọc được điều chỉnh dựa trên chi phí IOPS đĩa ( và dung lượng băng thông của thông số kỹ thuật phần cứng tham khảo.
create là việc thêm một mục mới vào kho lưu trữ trạng thái. Do đó, create đã tăng cấu trúc dữ liệu xác thực, khiến mọi thứ trở nên đắt đỏ hơn, vì vậy chi phí cao nhất. Chi phí tạo ra được căn chỉnh dựa trên không gian đĩa tham chiếu mà mạng sở hữu. Do đó, việc làm đầy đĩa với mục )item_fee( và byte )byte_fee( cần rất nhiều phí nhiên liệu.
Các thao tác ghi cập nhật các mục hiện có trong kho trạng thái. Do đó, thao tác ghi sẽ không tạo ra chi phí bổ sung trong cấu trúc dữ liệu xác thực. Tuy nhiên, bằng cách sửa đổi các mục hiện có thành các byte lớn hơn, vẫn có thể làm hỏng đĩa. Vì vậy, chúng tôi tính phí cho các byte trong mục cập nhật giống như khi tạo.
Cần lưu ý rằng chi phí liên quan đến lưu trữ được đánh giá dựa trên từng giao dịch: ngay cả khi đọc/ghi nhiều lần cùng một tài nguyên, chỉ cần trả một khoản phí.
Dựa trên những xem xét trên, chúng tôi đã định nghĩa 6 tham số phí nhiên liệu, chúng cấu thành phần của tổng chi phí phí nhiên liệu. Xem dưới đây:
per_item_read: Điều chỉnh theo IOPs per_byte_read: căn chỉnh theo băng thông thực tế per_item_create: điều chỉnh theo tổng mục tiêu dự án per_byte_create: Điều chỉnh theo kích thước tổng mục tiêu - 1KB đầu tiên chứa trong mỗi mục per_item_write: giống như per_item_read per_byte_write: tương tự như per_byte_create
) chi phí đơn vị nhiên liệu ổn định
Dù tính toán chi phí thực hiện giao dịch theo giá trị thị trường của APT hoặc tiền tệ pháp định, mỗi giao dịch và giao dịch bản thân đều cần 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ị nhiên liệu cố định giúp giữ cho kế hoạch phí nhiên liệu không thay đổi và tách rời khỏi giá trị thị trường tự do của APT. Hơn nữa, việc chọn số chữ số chính xác cho đơn vị phí nhiên liệu giúp duy trì kế hoạch phí nhiên liệu không thay đổi. Xét đến điều này, đội ngũ đã biểu thị đơn vị phí nhiên liệu với độ chính xác khoảng 3 chữ số. Do đó, chi phí cho giao dịch chuyển khoản khoảng 700 đơn vị phí nhiên liệu.
Tham gia cộng đồng
Ngay cả khi đã đầu tư rất nhiều công sức vào kế hoạch phí nhiên liệu, nhưng nó vẫn còn xa mới hoàn thiện. Là một dự án cộng đồng, các thành viên trong cộng đồng có thể lựa chọn:
Làm thế nào để điều chỉnh chi phí nhiên liệu?
Kế hoạch phí nhiên liệu được lưu trữ dưới dạng cấu hình on-chain, nhưng có thể được thay đổi thông qua đề xuất quản trị và có thể dễ dàng thêm các lệnh mới hoặc chức năng gốc.
Kế hoạch phí nhiên liệu được thiết kế để mở rộng, cho phép nâng cấp thông qua các đề xuất quản trị. Với việc cải tiến liên tục MOVE VM và tiếp thu phản hồi từ người dùng, các tham số phí nhiên liệu có thể được điều chỉnh theo thời gian.
Đôi khi, công thức phí nhiên liệu có thể cần thay đổi phức tạp vượt ra ngoài cấu hình on-chain. Những công thức phí nhiên liệu này thường được mã hóa bằng Rust và được phân biệt bằng các biểu tượng đặc trưng phí nhiên liệu on-chain. Để nâng cấp những công thức này, cần phải cập nhật phần mềm nút bằng công thức mới và phân biệt bằng các biểu tượng đặc trưng phí nhiên liệu 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 rộng rãi. Cuối cùng, cần phải phát hành và phê duyệt đề xuất quản trị để có thể sử dụng phiên bản phí nhiên liệu mới.
Công việc trong tương lai
Đây là khung phí nhiên liệu khả thi đầu tiên của MOVE. Nó cần nhiều sửa đổi đối với MOVE VM và Core. Chúng tôi hy vọng công việc này sẽ mở đường cho các công việc trong tương lai:
1### Giảm chi phí thực hiện, sở hữu một mô hình phí nhiên liệu thực tế cho thấy nơi mà trình biên dịch và máy ảo có hiệu suất, đội ngũ có thể cải thiện phần lớn trong số đó để giảm chi phí thực hiện.
2) Tính toán phí nhiên liệu đa chiều, cho phép người dùng chỉ định ngân sách riêng cho việc thực thi và lưu trữ. Như vậy, người dùng không phải trả phí nhiên liệu cao cho thời gian thực thi kéo dài do ứng dụng lập trình kém. Nó cũng sẽ cho phép định nghĩa chi tiết hơn về mức giá phí nhiên liệu tối đa cho giao dịch trên chuỗi.
3) Giảm tình trạng cồng kềnh, hiện tại không có cách đơn giản nào để thu hẹp tập trạng thái, ngoài hợp đồng ) hoặc người dùng ( xóa rõ ràng các đối tượng. Việc người dùng trả tiền để xóa dữ liệu có thể mang lại cơ hội chênh lệch giá, người dùng tạo lưu trữ khi giá rẻ, và xóa nó khi giá đắt. Việc trì hoãn việc giải quyết thách thức này có thể làm giảm động lực của các nhà phát triển để xóa dữ liệu trên chuỗi. Đội ngũ đang khám phá khái niệm TTL cho mỗi dự án, khái niệm này sẽ xóa các mục trạng thái chưa được truy cập khi TTL hết hạn.