Aptos鏈GAS設計解析: 首個MOVE語言GAS計劃詳解

robot
摘要生成中

MOVE語言首個GAS設計: Aptos鏈上GAS費用計算解析

MOVE語言的上一個版本原本計劃在無GAS的前提下運行,因此並未爲GAS設計做好準備。Aptos爲其區塊鏈建立的GAS計劃被稱爲"一場冒險",這是MOVE語言的首個GAS設計。

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

流程

Aptos鏈上的GAS設計流程包括:

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

原則

Aptos的GAS設計原則包括:

  1. 操作成本與網路可用資源直接相關,技術改進後GAS成本應隨之降低
  2. GAS由鏈上治理設置,可無縫配置
  3. GAS可防止對網路固定資源的DoS攻擊,需要根據網路情況快速調整
  4. GAS價格反映了保持區塊鏈人人可及的願景
  5. 鼓勵在設計中做出好的選擇,如優先考慮安全性、模塊化等

GAS計算

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

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

交易執行過程中將收取:

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

最終交易費用 = 消耗的GAS總量 * GAS單價

如果交易執行過程中耗盡GAS,發送方將按最大GAS量收費,該交易所做的所有更改將被恢復。

GAS計劃表

基本配置

GAS計劃中包括與單個操作無關的幾個組成部分,如交易大小和最大GAS單位。

交易規模

最初設爲32KB,後根據社區需求調整爲64KB。非常大規模的交易會提高網路帶寬成本,可能影響性能。

最大GAS單位

定義了單個交易最多可執行的操作數量,設置爲1,000,000。這直接影響交易可執行時長,設置過高可能對區塊鏈性能產生負面影響。

執行

通過基準框架和Valgrind分析Move VM,估算所有Move指令和本機函數的相對成本。考慮系統穩健性和安全性,得出最終執行的機器指令數量。

存儲

考慮存儲設備帶寬、IOPS容量和磁盤佔用成本,設計存儲GAS計劃。訪問和存儲任何狀態項都會產生與驗證整個區塊鏈狀態相關的成本。

存儲GAS費 = 項目費 + (字節費 * 字節數)

讀、創建和寫

  • 讀操作:最常見,根據磁盤IOPS和帶寬容量校準費用
  • 創建操作:在狀態存儲中添加新項,成本最高
  • 寫操作:更新現有項,對更新項中的字節收取與創建相同的費用

每筆交易只需爲相同資源的多次讀/寫支付一次費用。

穩定的GAS單位成本

每個操作和交易本身需要相對於存儲和執行成本的固定單位成本,有助於保持GAS計劃穩定。Aptos以約3位數精度表示GAS單位,如轉帳交易成本約700個GAS單位。

社區參與

Aptos鼓勵社區成員:

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

GAS成本調整

GAS計劃作爲鏈上配置存儲,可通過治理提案更改。設計爲可擴展,允許通過提案進行升級。某些復雜更改可能需要更新節點軟件並獲得大規模採用。

未來工作

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

  1. 降低執行成本
  2. 實現多維GAS計算,允許用戶爲執行和存儲指定單獨預算
  3. 緩解臃腫狀態問題,探索每個項目TTL概念
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 3
  • 分享
留言
0/400
空投猎手vip
· 07-12 13:51
谨慎点 gas设计总是埋坑
回復0
币圈塔罗师vip
· 07-12 13:44
钱包瑟瑟发抖.jpg
回復0
德根赌徒vip
· 07-12 13:41
gas终于有点搞头了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)