Mining
了解礦工控制的gaslimit的潛在問題
我知道在 EVM 上執行的智能合約可以訪問某些系統屬性,例如時間戳、塊號和氣體限制。
我也知道這些屬性可以由礦工控制,一個最佳實踐是我們應該非常謹慎地使用這些系統屬性。
但是,我的問題是,如果惡意礦工故意控制 Solidity 程式碼使用的“block.gaslimit”屬性,會出現什麼問題?是否存在任何基於此的“現實世界”攻擊或威脅?只是想在這裡了解更多。非常感謝。
請注意,礦工只能輕微更改氣體限制。如果 gas 限制超過 1/1024 加或減父 gas 限制,則塊頭無效,這意味著如果塊 10 的 gas 限制為 1,000,000,則塊 11 的 gas 限制必須介於
1000000-floor(1000000/1024)
和之間1000000+floor(1000000/1024)
。所以合約編寫者在編寫合約時當然應該意識到這一點,所以他們不應該做出諸如“gas limit 將始終為 x”之類的假設
至於你對block.number的評論,其實是一樣的。一個區塊只有在其區塊編號是父區塊 + 1 時才有效。因此,合約不能斷言交易將在某個時間被開採,但他們可以確定該區塊
block.number
將是它實際被開采的區塊.