MOVE語言創新:解析Aptos鏈Gas消耗計算方法

robot
摘要生成中

MOVE語言首個Gas設計:Aptos鏈上的Gas消耗計算方法

Gas計量是Aptos和許多其他區塊鏈的基本概念,它定義了執行和存儲鏈上交易所需的計算和存儲資源量的抽象計算。Gas計劃確定了鏈上所有執行消耗的成本,用於計算執行交易期間使用的Gas花費。

流程

爲了有效執行,Aptos鏈上的流程包括:

  1. 定義原則
  2. 準備評估框架,確定每個執行的價格
  3. 爲Move建立Gas計量系統和安全Gas代數
  4. 將上遊Gas框架導入Aptos
  5. 使Gas框架具有存儲意識
  6. 進一步細化Gas計劃

原則

定義的原則包括:

  1. 操作成本應與網路可用資源直接相關。技術和流程改進後,Gas所需成本應隨之降低。
  2. Gas應由鏈上治理設置,並可無縫配置。
  3. Gas可防止對網路固定資源集的DoS攻擊,可能需要根據網路情況通過治理建議快速調整。
  4. Aptos的Gas價格反映了加速增長和保持區塊鏈普及性的願望。
  5. 鼓勵在設計中做出優秀選擇,如優先考慮安全性、模塊化、斷言等。

Gas計算

用戶提交交易時,需要指定兩個數量:

  • 最大Gas數量:以Gas單位計量,用戶願意爲執行交易花費的最大Gas單位數。
  • Gas單價:以每單位Gas的八進制計算,1八進制=0.00000001 APT。

執行過程中,交易將被收取:

  1. 固定成本:固定基數加上大額交易的額外費用
  2. 執行成本:用於執行Move指令
  3. 讀取成本:用於從持久存儲讀取數據
  4. 寫入成本:用於將數據寫入持久存儲

最終交易費用可用消耗的Gas總量乘以Gas單價計算。例如,如果一筆交易消耗670個Gas單位,用戶指定的Gas單價爲每單位100 Octa,則最終交易費用爲670 * 100 = 67000 Octa = 0.00067 APT。

如果交易執行中耗盡Gas,發送方將根據最大Gas量收取費用,該交易所做的所有更改都將被恢復。

Gas計劃表建立

基本配置

Gas計劃中有幾個組成部分與單個操作細節無關,包括交易大小和最大Gas單位。

交易規模

大多數交易規模可能在千字節量級。Move模塊發布可能有幾千字節,Aptos框架約100 KB。用戶模塊大小通常在4KB到40KB之間。最初交易規模設爲32KB,後根據社區反應調整爲64KB。

非常大規模的交易會導致網路帶寬成本提高,可能對性能產生負面影響。內存池會被鼓勵忽略規模更大的交易,因此需在最大規模交易大小和可訪問性之間取得平衡。

最大Gas單位

Gas計劃中的最大Gas單位定義了一個交易最多可執行多少操作。這與用戶在交易中指定的最大Gas量不同。設置過高可能導致對區塊鏈產生負面性能影響。即使進行最大框架升級,也不到Gas計劃最大Gas單位(設定爲1,000,000)的90%。

執行

爲評估執行成本,構建了基準框架並使用Valgrind分析Move VM。輸出是一組帶注釋的原始碼,顯示每行代碼產生的機器指令數量。

基於分析結果,估算了所有Move指令和本機函數的相對成本。注意到與內聯函數存在一些問題,通過將數字相加解決。

考慮增強系統穩健性和安全性的編碼範例,得出最終執行的機器指令數量。這個數字與存儲和最大Gas單位進行權衡,確定Gas計劃中的當前值。

存儲

Aptos節點訪問存儲在持久存儲中的帳本狀態項或數據時,會向存儲設備發出讀取或寫入。每秒數據訪問總數取決於存儲設備的帶寬和IOPS容量。數據訪問是用戶在系統負載時通過費用市場競爭的瞬時稀缺性。寫入數據的磁盤佔用成本在鏈上是永久的。

訪問和存儲任何狀態項都會產生與驗證整個區塊鏈狀態的數據結構(水母默克爾樹)相關的成本。此成本與不同狀態項的基數有關。還有一個成本與每個項目的大小成正比。

存儲Gas費 = item_fee + (byte_fee * bytes)

讀、創建和寫

對狀態項的訪問分爲讀、創建或寫三種類型。訪問按項目費和字節費收費。

讀操作最常見,只受瞬時資源稀缺限制。讀取費用根據磁盤IOPS和參考硬件規範的帶寬容量校準。

創建是在狀態存儲中添加新項,增加了身分驗證數據結構,成本最高。創建費用根據網路擁有的參考磁盤空間校準。

寫操作更新狀態存儲中的現有項,不會在身分驗證數據結構中產生額外開銷。對更新項中的字節收取與創建時相同的費用。

存儲相關成本基於每筆交易評估:即使多次讀取/寫入相同資源,也只需支付一次費用。

基於上述考慮,定義了6個Gas參數:

  • per_item_read:根據IOPs校正
  • per_byte_read:根據實際帶寬校準
  • per_item_create:根據目標總項目校準
  • per_byte_create:根據目標總大小校準
  • per_item_write:與per_item_read相同
  • per_byte_write:與per_byte_create相同

穩定的Gas單位成本

每個操作和交易本身需要相對於存儲和執行成本的固定單位成本。固定Gas單位成本有助於保持Gas計劃不變,與APT的自由市場價值脫鉤。Aptos團隊以約3位數精度表示Gas單位。轉帳交易成本約爲700個Gas單位。

社區參與

Aptos社區成員可以:

  1. 找出Gas計劃不合理之處
  2. 表達對Gas計劃的擔憂,參與社區討論
  3. 就Aptos上與Gas相關的治理提案進行投票

Gas成本調整

Gas計劃作爲鏈上配置存儲,可通過Aptos治理提案更改,並可無縫添加新指令或原生功能。Gas計劃設計爲可擴展,允許通過治理提案升級。隨着Aptos和社區改進Move VM並納入用戶反饋,Gas參數可隨時間調整。

復雜的Gas公式更改需要更新節點軟件,並以不同Gas特徵標志區分。需發布節點軟件並大量採用,最後發布並批準治理提案使用新Gas版本。

未來工作

作爲Move的首個可行Gas框架,未來工作方向包括:

  1. 降低執行成本:改進編譯器和虛擬機效率
  2. 多維Gas計算:允許用戶爲執行和存儲指定單獨預算
  3. 緩解臃腫狀態:探索每個項目TTL概念,在TTL到期時刪除未訪問的狀態項目
MOVE-3.61%
APT-4.02%
GAS2.15%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 10
  • 轉發
  • 分享
留言
0/400
FlashLoanKingvip
· 07-15 09:55
链下套利也不错啊
回復0
地板价观察员vip
· 07-15 04:26
gas还不如涨到天花板呢
回復0
夹子检测者vip
· 07-14 16:16
有点麻烦 下个月优化再看
回復0
跳跃的蜡烛线vip
· 07-12 16:24
真没感觉move有啥特别的~
回復0
BlockDetectivevip
· 07-12 16:22
move是热度王
回復0
VitaliksTwinvip
· 07-12 16:21
move卷麻了
回復0
Crypto笑话王vip
· 07-12 16:16
又双叒又要大出血了,gas费还想玩花样是吧
回復0
Crypto段子手vip
· 07-12 16:07
又一个割韭菜的新借口
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)