menu-icon
anue logo
熱門時事鉅亨號鉅亨買幣
search icon

區塊鏈

Aptos公布Gas計劃:花費如何計算?

BlockBeats 律動財經 2022-10-16 10:30


Aptos Labs 於 10 月 14 日公布了 Aptos 的 GAS 計劃,因為 MOVE 語言的上一個版本其實是打算在沒有 GAS 的前提下運行的,所以並沒有為 GAS 計劃做好準備,所以 Aptos labs 此次為 Aptos 建立的 GAS 計劃是 MOVE 語言首個 GAS 設計,被官方稱為「一場冒險」。

在 Aptos 的 GAS 計劃中,Aptos Labs 表明了自己制定 GAS 的原則、流程、如何計算 GAS、後期 GAS 費調整以及積極接受 Aptos 社區的建議。

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


流程

為了有效的執行,我們在 Aptos 鏈上的流程是:

1)定義我們的原則;

2)準備一個評估框架,以確定每個執行的價格;

3)為 Move 建立 GAS 計量系統和安全 GAS 代數;

4)將上游 GAS 框架導入 Aptos;

5)使 GAS 框架具有儲存意識;

6)最後,進一步細化 GAS 計劃。

原則

我們的定義原則是:

1、操作的成本應該與網路上的可用資源直接相關 (例如 CPU、內存、網路、儲存 I/O 和空間使用等)。此外,當技術和流程改進後,GAS 所需的成本應該要隨之降低。

2、Gas 應該由鏈上治理設置,並且可以無縫配置。

3、Gas 可以防止對網路中固定資源集的 DoS 攻擊,並且可能需要根據網路情況通過治理建議迅速進行調整。

4、Aptos 的 GAS 價格反映了 Aptos 基金會加速增長和保持區塊鏈人人可及的願望。

5、鼓勵在設計中做出好的選擇——例如優先考慮安全性、模塊化、斷言等事件。

計算 GAS

當用戶提交交易時,他們還必須在事務中指定兩個數量:

Max gas amount:以 GAS 單位計量。這是用戶 (即,交易發送者) 願意為執行交易花費的最大 GAS 單位數。

Gas unit price:以每單位 GAS 的八進制計算,其中 1 八進制=0.00000001 APT(=$10^{-8}$)。這是用戶願意支付的 GAS 價格。

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

1)固定成本,固定基數加上大額交易的額外費用。

2)執行成本,用於執行 Move 指令。

3)讀取成本,用於從持久儲存讀取數據。

4)寫入成本,用於將數據寫入持久儲存。

最終的交易費用可以用消耗的 GAS 總量 (以 GAS 單位計算) 乘以 GAS 單價來計算。例如,如果一筆交易消耗 670 個 GAS 單位,而用戶在交易中指定的天然氣單位價格為每單位 100 Octa,那麼最終的交易費用為 670 * 100 = 67000 Octa = 0.00067 APT。

如果一個交易在執行過程中耗盡了 gas,那麼發送方將根據最大 gas 量收取費用,並且該交易平台做的所有更改都將被恢復。

建立一個 GAS 計劃表

1、基本配置

GAS 計劃中有幾個組成部分與單個操作的細節無關,包括交易大小和最大 GAS 單位 (不同於用戶在交易中指定的最大 GAS 量)。

2、交易規模

對於大多數交易,交易規模可能在千字節的數量級。然而,Move 模塊的發布很容易就有幾千字節,而 Aptos 框架大約有 100 KB。大多數用戶模塊的大小一般在 4KB 到 40KB 之間。最初,我們將交易規模的值設置為 32KB,但根據社區的反應,要求提供更多空間以簡化應用程序開發,因此我們將交易規模調整為 64KB。

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

3、最大 GAS 單位

GAS 計劃中的的最大 GAS 單位定義了一個交易最多可以執行多少操作。注意!這不同於用戶在交易中指定的最大 GAS 量。

GAS 計劃的最大 GAS 單位直接影響到一個交易可以執行多長時間,將其設置過高可能會導致對區塊鏈產生負面性能影響交易。例如,用戶可能忘記在 while 循環中有一個增量,從而導致無限循環,這是一個常見錯誤。我們發現,即使我們進行了最大的框架升級,我們仍然不到 gas 計劃的最大 gas 單位(設定為 1,000,000)的 90%。

4、執行

為了評估執行成本,我們構建了一個基準框架,並在執行該框架時使用。

Valgrind 來分析 Move VM。它的輸出是一組帶注釋的源代碼,它告訴我們每行代碼產生了多少機器指令。

在上述分析的幫助下,我們粗略估計了所有 Move 指令和本機函數的相對成本。然而,我們注意到這個方法與內聯函數存在一些問題:它們不會自動包含在調用者的計數中。我們還看到,這隻發生在我們分析某些 Move 指令時,我們可以通過將數字相加來解決這個問題。

隨後,通過考慮增強系統穩健性和安全性的編碼範例,團隊得出了最終執行的機器指令數量。這個數字依次與儲存和最大 GAS 單位進行權衡,以確定它們在 GAS 計劃中的當前值。

5、儲存

每當訪問儲存在持久儲存中的賬本狀態項或數據時,Aptos 節點都會向儲存設備發出讀取或寫入。每秒的數據訪問總數取決於儲存設備的帶寬和 IOPS 容量。與 gas 調度計算部分的 CPU 周期類似,數據訪問是區塊鏈用戶在系統負載時通過費用市場競爭的瞬時稀缺性,此外,寫入數據的磁盤占用成本在鏈上是永久的。Aptos 團隊通過考慮這些成本來設計儲存 GAS 計劃。

訪問和儲存任何狀態項都會產生與驗證整個區塊鏈狀態的數據結構

水母默克爾樹相關的成本:

此成本與不同狀態項的基數有關($2^{256}$)。還有一個成本與每個項目的大小成正比。要對一個狀態項進行操作,費用為(下一節中描述的例外情況除外):

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

讀、創建和寫

對狀態項的任何訪問都屬於以下三種類型之一:讀、創建或寫。訪問按項目費和字節費收費,如上面的等式所示。

讀操作是最常見的操作,它只受瞬時資源稀缺的限制。因此,讀取費用是根據磁盤 IOPS(項目費用) 和參考硬體規範的帶寬容量進行校準的。

create 是在狀態儲存中添加一個新項。因此,create 增加了身份驗證數據結構,使一切都變得更昂貴,因此成本最高。創建費用是根據網路擁有的參考磁盤空間進行校準的。因此,用項目 (item_fee) 和字節 (byte_fee) 填滿磁盤需要大量的 GAS。

寫操作更新狀態儲存中的現有項。因此,寫操作不會在身份驗證數據結構中產生額外的開銷。然而,通過修改現有的條目到更大的字節,仍然可以破壞磁盤。因此,我們對更新項中的字節收取與創建時相同的費用。

應該注意的是,與儲存相關的成本是基於每一筆交易進行評估的:即使您多次讀取/寫入相同的資源,也只需要支付一次費用。

基於上述考慮,我們定義了 6 個 GAS 參數,它們構成了 GAS 總費用的組成部分。見以下:

per_item_read:根據 IOPs 進行校正

per_byte_read:根據實際帶寬校準

per_item_create:根據目標總項目進行校準

per_byte_create:根據目標總大小進行校準-每個項目包含的第一個 1KB

per_item_write:與 per_item_read 相同

per_byte_write:與 per_byte_create 相同

更多資訊,請訪問此處。

穩定的 GAS 單位成本

無論以 APT 或法定貨幣的市場價值計算執行操作的成本如何,每個操作和交易本身都需要相對於儲存和執行成本的固定單位成本。固定的 gas 單位成本有助於保持 gas 計劃不變,並與 APT 的自由市場價值脫鈎。此外,正確選擇 GAS 單位的精確位數有助於保持 GAS 計劃不變。考慮到這一點,Aptos 團隊以大約 3 位數的精度來表示 GAS 單位。因此,轉賬交易的成本大約是 700 個 gas 單位。

社區參與

即使我們對 GAS 計劃投入了大量的精力,但是它還遠遠不夠完善。作為一個社區項目,Aptos 社區成員可以選擇:

1)根據你的經驗,找出 GAS 計劃不合理的地方;

2)說出你對 GAS 計劃的擔憂,並參與社區討論。

3)就 Aptos 上與 GAS 相關的治理提案進行投票。

如何調整 GAS 成本?

GAS 計劃作為鏈上配置被儲存,但是可以通過 Aptos 治理提案進行更改,並且可以無縫添加新指令或原生功能。

GAS 計劃被設計為可擴展的,允許通過治理提案對其進行升級。隨著 Aptos 和 Aptos 社區不斷改進 Move VM 並納入用戶反饋,GAS 參數可以隨著時間的推移進行調整。

有時,GAS 公式可能需要超出鏈上配置的複雜更改。這些 GAS 公式通常用 Rust 編碼,並通過鏈上 GAS 特徵標誌來區分。要升級這些公式,必須使用新公式更新節點軟體,並以不同的 GAS 特徵標誌進行區分。然後必須發布節點軟體並為節點營運商大量採用,最後,必須發布並批准治理提案才能使用新的 gas 版本。

未來的工作

這是 Move 的第一個可行的 GAS 框架。它需要對 Move VM 和 Aptos-Core 進行大量修改。我們希望這項工作為今後的工作鋪平道路:

1)降低執行成本,擁有一個真實的 GAS 模型表明編譯器和虛擬機在哪裡有效率,團隊可以改進其中的大部分以降低執行成本。

2)多維 GAS 計算,允許用戶為執行和儲存指定單獨的預算。這樣,用戶就不必為因為代碼編寫不佳的應用程序花費過長的執行時間,支付高昂的 gas 價格。它還將允許對區塊鏈端交易的最大 Gas 價格進行更細粒度的定義;

3)緩解臃腫狀態,目前沒有簡單的方法來縮小狀態集,除了合約(或用戶)顯式刪除事物。用戶付錢刪除數據可能會帶來套利機會,用戶在便宜的時候創建儲存,在昂貴的時候刪除它。Aptos 推遲了解決這一挑戰,這可能會削弱開發人員刪除鏈上數據的動力。該團隊正在探索每個項目 TTL 的概念,該概念將在 TTL 到期時刪除未訪問的狀態項目。

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠

文章標籤


Empty