Go-Ethereum

私鏈上的gas超過上限

  • August 21, 2018

我目前正在執行具有 2 個節點的私有乙太坊鏈。我在主節點上的 coinbase 地址有很多乙太幣,所以我去進行交易,但收到錯誤“Gas Limit exceeded”。我注意到氣體限制設置為 5000,這太低而無法進行交易,所以我轉到自定義的 genesis.json 文件並將限制增加到“0xC350”或 50000。儘管如此,限制只移動到 5003。我有不知道為什麼會這樣,我已經用其他更大的數字替換了這個數字,但它只能設法達到 5003 而不是預設的 5000。任何幫助將不勝感激。

這是我的 Genesis.json 文件:

{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0xC350",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc":
{ 
   "0xcf117e46aa225864ed1d0dd7e99b8b006abe3410":
   { "balance": "10000000000000000000000000" } 
}

}

我正在使用 Geth。

不要更改創世文件,因為它會改變區塊鏈的動態。Geth 有一個--targetgaslimit標誌,它將導致礦工收斂到與硬編碼值相反的特定數字。

每個塊都有一個包含在塊本身內的氣體限制。此限制只能在塊之間以一定的量變化(準確地說是prev limit/1024)。如果變化較大,則不再接受該塊。

確保您不僅設置--targetgaslimit而且開始探勘--mine您的專用網路。這將緩慢地將塊氣體限制移向指定的目標氣體限制,您將看到氣體限制如何增加每個塊。

另請注意,目標氣體限制標誌是在 geth 1.4.x 中引入的,因此請確保您有一個最新的客戶端。

另請參閱這個出色的答案

我使用了指南How to Run Multiple Geth Instances on a Private Ethereum Blockchain。並且可以使用1,000,000以上的氣體。

{
"nonce": "0xdeadbeefdeadbeef",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x686f727365",
"gasLimit": "0x8000000",
"difficulty": "0x0400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
}
}

新版本的 geth 不允許在創世塊啟動後對其進行修改。您必須重置數據目錄並重新開始。

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