Web3js

區塊氣體限制計算

  • April 25, 2022

$$ Working on BSC $$

我試圖更好地理解塊gasLimit欄位,

據我所知,它對區塊中交易的氣體限制設置了上限Gas Limit,因此驗證者無法提取總限制氣體將超過氣體限制值的交易數量,對嗎?

基本上在 bscscan 上,當您分析該欄位中的塊時,gasLimit它會顯示:塊中所有交易提供的總氣體限制。 在此處輸入圖像描述

這是否意味著他們打算將氣體限製作為已開採交易的所有交易限制的總和?

我還嘗試通過對交易氣體限制求和來進行一些測試,並且我希望具有相同的塊gasLimit值,但我認為我誤解了該欄位的含義。這是我的一些測試結果

[Block 17258101] Block Gas Limit: 79,830,526 | Sum Transactions GasLimit: 127,576,449
[Block 17258102] Block Gas Limit: 80,000,000 | Sum Transactions GasLimit: 58,258,522
[Block 17258103] Block Gas Limit: 79,810,757 | Sum Transactions GasLimit: 87,189,554
[Block 17258104] Block Gas Limit: 79,686,763 | Sum Transactions GasLimit: 35,581,016
[Block 17258105] Block Gas Limit: 79,465,224 | Sum Transactions GasLimit: 66,705,611
[Block 17258106] Block Gas Limit: 79,154,814 | Sum Transactions GasLimit: 59,747,460
[Block 17258107] Block Gas Limit: 78,845,617 | Sum Transactions GasLimit: 101,815,788
[Block 17258108] Block Gas Limit: 79,153,606 | Sum Transactions GasLimit: 55,161,147
[Block 17258109] Block Gas Limit: 79,462,798 | Sum Transactions GasLimit: 61,621,550
[Block 17258110] Block Gas Limit: 79,773,198 | Sum Transactions GasLimit: 80,544,337

所以似乎它與塊GasLimit欄位並沒有真正的關係。那麼交易gas limit和block gas limit之間有什麼關係嗎?

從上面的測試中,我省略了(在計算區塊的交易總和氣體限制時)消耗區塊費用的交易的氣體限制,我不確定這是否正確,通常這總是一個區塊的最後一筆交易並且有一個氣體限制9,223,372,036,854,775,807

例如:https ://bscscan.com/tx/0x7780d200b0bed42c3ce648a07f88f8ef601af49e5b9c8e0e5535d51d117ab7e4

據我所知,它對一個區塊中交易 Gas Limit 的 Gas Limit 設置了上限,因此驗證者無法提取總限制 Gas 超過 Gas 限制值的交易數量,對嗎?

區塊氣體限制更多的是所有交易使用的總氣體的上限。請參閱乙太坊共識中的這段程式碼

// Verify that the gasUsed is <= gasLimit
if header.GasUsed > header.GasLimit {
   return fmt.Errorf("invalid gasUsed: have %d, gasLimit %d", header.GasUsed, header.GasLimit)
}

所以似乎它與塊 GasLimit 欄位並沒有真正的關係。那麼交易gas limit和block gas limit之間有什麼關係嗎?

有一個,tx gas 限制不能超過塊 gas 限制,如您在此處看到的。

因此,所有 tx gas 限制的總和可以高於塊 gas 限制,但所有使用的 tx gas 總和不能超過塊 gas 限制,就像使用的 tx gas 不能高於其自身的 gas 限制一樣。

我希望這能回答你的問題。

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