# MOVE語言首個GAS設計:鏈上GAS費用計算方法探析MOVE語言的上一版本原本設計爲無GAS運行,因此並未爲GAS計劃做好準備。近期某區塊鏈項目爲其MOVE語言鏈推出的GAS計劃,是MOVE語言首個GAS設計,被稱爲"一場冒險"。該GAS計劃闡明了制定GAS的原則、流程、計算方法、後期調整等內容,並表示歡迎社區建議。GAS計量是許多區塊鏈的基本概念,用於定義執行和存儲鏈上交易所需的計算和存儲資源量。GAS計劃確定了鏈上所有執行的成本,用於計算交易執行期間的GAS花費。## 流程爲實現有效執行,該項目鏈上流程包括:1. 定義原則2. 準備評估框架,確定每個執行的價格3. 爲Move建立GAS計量系統和安全GAS代數 4. 導入上遊GAS框架5. 使GAS框架具有存儲意識6. 進一步細化GAS計劃## 原則定義的原則包括:1. 操作成本應與網路可用資源直接相關,並隨技術改進而降低2. GAS由鏈上治理設置,可無縫配置3. GAS可防止DoS攻擊,可根據網路情況快速調整4. GAS價格反映了加速增長和保持區塊鏈可及性的願景5. 鼓勵在設計中做出優先考慮安全性、模塊化等的好選擇## 計算GAS用戶提交交易時需指定:- 最大GAS數量:用戶願意爲執行交易花費的最大GAS單位數- GAS單價:以每單位GAS的八進制計算,1八進制=0.00000001原生代幣交易執行過程中將收取:1. 固定成本:固定基數加大額交易的額外費用2. 執行成本:用於執行Move指令3. 讀取成本:用於從持久存儲讀取數據4. 寫入成本:用於將數據寫入持久存儲最終交易費用 = 消耗的GAS總量 × GAS單價例如,若交易消耗670個GAS單位,用戶指定GAS單價爲100 Octa/單位,則最終費用爲670 × 100 = 67000 Octa = 0.00067原生代幣。若交易執行中耗盡GAS,發送方將按最大GAS量收費,交易所做更改將被恢復。## 建立GAS計劃表### 基本配置GAS計劃包含與單個操作細節無關的組成部分,如交易大小和最大GAS單位。### 交易規模大多數交易規模在KB級別,但模塊發布可達幾千字節。最初交易規模設爲32KB,後根據社區反饋調整爲64KB,以簡化應用開發。大規模交易會增加網路帶寬成本,可能影響性能。內存池會傾向忽略更大規模交易,因此需在最大規模和可訪問性間平衡。### 最大GAS單位GAS計劃的最大GAS單位定義了交易最多可執行的操作量。設置過高可能導致負面性能影響。目前即使進行最大框架升級,也不到最大GAS單位(1,000,000)的90%。### 執行通過基準框架和Valgrind分析Move VM,估算所有Move指令和本機函數的相對成本。考慮系統穩健性和安全性,得出最終執行的機器指令數量,與存儲和最大GAS單位權衡確定GAS計劃中的當前值。### 存儲訪問帳本狀態項或數據時,節點向存儲設備發出讀寫。數據訪問總數受存儲設備帶寬和IOPS限制。存儲GAS計劃考慮了這些成本。訪問和存儲任何狀態項都產生與驗證區塊鏈狀態數據結構相關的成本。費用與狀態項基數和大小相關:存儲GAS費 = 項目費 + (字節費 × 字節數)### 讀、創建和寫狀態項訪問分爲讀、創建或寫三種類型:- 讀操作最常見,僅受瞬時資源稀缺限制- 創建在狀態存儲中添加新項,成本最高- 寫操作更新現有項,對更新項中的字節收取與創建相同的費用存儲相關成本基於每筆交易評估,即使多次讀寫同一資源也只收取一次費用。### 穩定的GAS單位成本每個操作和交易本身需要相對於存儲和執行成本的固定單位成本,有助於保持GAS計劃不變。GAS單位精度約爲3位,如轉帳交易成本約700個GAS單位。## 社區參與社區成員可以:1. 找出GAS計劃不合理之處2. 參與社區討論3. 就相關治理提案投票## GAS成本調整GAS計劃作爲鏈上配置存儲,可通過治理提案更改。設計爲可擴展,允許通過提案升級。隨時間推移,GAS參數可根據用戶反饋調整。復雜的GAS公式更改需更新節點軟件,大規模採用後通過治理提案批準使用新版本。## 未來工作作爲Move首個可行GAS框架,未來工作方向包括:1. 降低執行成本2. 多維GAS計算,允許用戶爲執行和存儲指定單獨預算3. 緩解臃腫狀態,探索每個項目TTL概念,在TTL到期時刪除未訪問的狀態項目
MOVE語言首創GAS計劃:鏈上費用計算方法全解析
MOVE語言首個GAS設計:鏈上GAS費用計算方法探析
MOVE語言的上一版本原本設計爲無GAS運行,因此並未爲GAS計劃做好準備。近期某區塊鏈項目爲其MOVE語言鏈推出的GAS計劃,是MOVE語言首個GAS設計,被稱爲"一場冒險"。
該GAS計劃闡明了制定GAS的原則、流程、計算方法、後期調整等內容,並表示歡迎社區建議。
GAS計量是許多區塊鏈的基本概念,用於定義執行和存儲鏈上交易所需的計算和存儲資源量。GAS計劃確定了鏈上所有執行的成本,用於計算交易執行期間的GAS花費。
流程
爲實現有效執行,該項目鏈上流程包括:
原則
定義的原則包括:
計算GAS
用戶提交交易時需指定:
交易執行過程中將收取:
最終交易費用 = 消耗的GAS總量 × GAS單價
例如,若交易消耗670個GAS單位,用戶指定GAS單價爲100 Octa/單位,則最終費用爲670 × 100 = 67000 Octa = 0.00067原生代幣。
若交易執行中耗盡GAS,發送方將按最大GAS量收費,交易所做更改將被恢復。
建立GAS計劃表
基本配置
GAS計劃包含與單個操作細節無關的組成部分,如交易大小和最大GAS單位。
交易規模
大多數交易規模在KB級別,但模塊發布可達幾千字節。最初交易規模設爲32KB,後根據社區反饋調整爲64KB,以簡化應用開發。
大規模交易會增加網路帶寬成本,可能影響性能。內存池會傾向忽略更大規模交易,因此需在最大規模和可訪問性間平衡。
最大GAS單位
GAS計劃的最大GAS單位定義了交易最多可執行的操作量。設置過高可能導致負面性能影響。目前即使進行最大框架升級,也不到最大GAS單位(1,000,000)的90%。
執行
通過基準框架和Valgrind分析Move VM,估算所有Move指令和本機函數的相對成本。考慮系統穩健性和安全性,得出最終執行的機器指令數量,與存儲和最大GAS單位權衡確定GAS計劃中的當前值。
存儲
訪問帳本狀態項或數據時,節點向存儲設備發出讀寫。數據訪問總數受存儲設備帶寬和IOPS限制。存儲GAS計劃考慮了這些成本。
訪問和存儲任何狀態項都產生與驗證區塊鏈狀態數據結構相關的成本。費用與狀態項基數和大小相關:
存儲GAS費 = 項目費 + (字節費 × 字節數)
讀、創建和寫
狀態項訪問分爲讀、創建或寫三種類型:
存儲相關成本基於每筆交易評估,即使多次讀寫同一資源也只收取一次費用。
穩定的GAS單位成本
每個操作和交易本身需要相對於存儲和執行成本的固定單位成本,有助於保持GAS計劃不變。GAS單位精度約爲3位,如轉帳交易成本約700個GAS單位。
社區參與
社區成員可以:
GAS成本調整
GAS計劃作爲鏈上配置存儲,可通過治理提案更改。設計爲可擴展,允許通過提案升級。隨時間推移,GAS參數可根據用戶反饋調整。
復雜的GAS公式更改需更新節點軟件,大規模採用後通過治理提案批準使用新版本。
未來工作
作爲Move首個可行GAS框架,未來工作方向包括: