Gas
如何為乙太坊虛擬機指令選擇 gas 成本?
EVM 的不同指令有不同的相關 gas 成本——你可以查看黃皮書附錄 G 中的 gas-prices 列表。
雖然這些數字的粗略大小看起來相當合理,但確切的值仍然看起來像是被任意選擇的。另一方面,一些值看起來非常具體。選擇這些確切值有更深層次的理由嗎?
我與您分享電子表格,其中解釋了每個 OPCODE 的 gas 成本背後的公式。
1.0 版由乙太坊的核心開發者創建。我期待著如何闡明它的未來更新。這是一個需要解決的元共識挑戰。
創建契約或執行契約的交易的總成本基於 2 個因素:
gasUsed
是消耗的總氣體
gasPrice
交易中指定
Total cost = gasUsed * gasPrice
氣體使用
EVM 中的每個操作都被分配了一個數字,它消耗了多少氣體。
gasUsed
正在總結所有執行的操作的所有氣體。有一個電子表格可以一瞥它們背後的一些分析。對於估算
gasUsed
,有一個估算氣體 API 可以使用,但有一些注意事項。天然氣價格
使用者建構並簽署交易,每個使用者可以指定
gasPrice
他們想要的任何東西,這包括零。然而,在 Frontier 推出的乙太坊客戶端的預設 gasPrice 為 0.05e12 wei。隨著礦工優化他們的收入,如果大多數交易是以 0.05e12 wei 的 gasPrice 送出的,那麼很難說服礦工接受指定較低或零 gasPrice 的交易。在這個問題中詢問瞭如何選擇預設值。例子
讓我們看一個只添加 2 個數字的合約。從上面的電子表格中
ADD
消耗了 3 個氣體。使用預設汽油價格的近似成本將是:
3 * 0.05e12 = 1.5e11 wei
由於 1 Ether 是 1e18 wei,因此總成本將為 0.00000015 Ether。
這是一種簡化,因為它忽略了一些成本,例如在添加 2 個數字之前將它們傳遞給契約的成本。