Gas

如何為乙太坊虛擬機指令選擇 gas 成本?

  • January 9, 2018

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 個數字之前將它們傳遞給契約的成本。

引用自:https://ethereum.stackexchange.com/questions/52