前言

智能合約在區塊鏈上執行時,若修改合約內的狀態,需要支付 Gas。

名詞

Gas Price

願意支付的 Gas 單價。

Start Gas/Gas Limit

最多願意支付的總 Gas 數量。如果執行中消耗的 Gas 超過設定值則會中斷執行,而執行時消耗的 Gas 不會退還。

範例

function doMath(int a, int b) {
    a + b;
    b - a;
    a * b;
    a == 0;
}

根據 Opcodes for the EVM | ethereum.org

doMath 這個 function 內各個 operations 所需的 Gas 為:

CodeNameGas
a + bADD3
b - aSUB3
a * bMUL5
a == 0EQ3

需要 3+3+5+3 共 14 Gas。

若 Gas Price 設定為 300wei,則 total cost 為:

300 * 14 = 4200wei