Gas-Refund
乙太坊黃皮書返還gas公式
礦工執行交易後,向交易者退還剩餘的氣體。乙太坊黃皮書第 6 節對此進行了解釋。在計算退還gas的金額時,使用以下公式。
在上圖中,我如何理解公式 64. 當 g’ 表示交易執行後的剩餘氣體時,等式左側的第二項是什麼意思?
A r是事務子狀態的一部分。它在第 6.1 節中定義:
退款餘額,通過使用 SSTORE 指令增加,以便將合約儲存從某個非零值重置為零。雖然不會立即退還,但允許部分抵消總執行成本。
如您所引用的部分所述,在將其添加到已退還的 gas 之前,它的上限最多為已使用總量的一半。
第二項表示退還的 gas 將等於剩餘的 gas 加上退款計數器所說的最小值與已用 gas 的一半之間的最小值。讓我們看一個例子:
假設您對設置變數 x = 1 且 x 最初為 0 的函式進行事務處理。
您的 gas 成本(簡化)為:
gas limit 100000 gas (for the sake of this example example) Transaction = 21000 () Execution = 20000 (x=1, changes the storage from zero to nonzero) Total cost = 41000 gas Refund counter = 0 gas refunded amount = 59000 gas
現在,如果您這次執行函式使 x = 0,則成本為:
gaslimit 100000 gas (for the sake of this example) Transaction 21000 gas setting x = 0, 5000 gas refund counter = -15000 gas Total refund = 74000 + minimum(13000, 15000)
其中 13000 是使用氣體的一半 = (100000- 74000)/2,而 15000 是氣體計數器值。
所以你會得到退款 = 74000 + 13000
希望這可以幫助