Go-Ethereum

私有乙太坊 geth 節點上的 gasLimit 5000

  • November 4, 2019

問題: 我已將我的 geth 節點升級到最新版本(1.9.0-unstable)。節點的區塊gasLimit固定為5000:

eth.getBlock("latest").gasLimit

5000

當我嘗試發送交易時,我收到以下錯誤:

Error: exceeds block gas limit

**嘗試的修復:**我試圖改變預設的 gasLimit 值genesis.json

"gasLimit": "0xffffffff"

從 geth 節點命令行選項:

--targetgaslimit '9000000000000'

注意事項:在之前的版本中,即升級之前,節點返回的區塊gasLimit要高得多,它讓我可以部署合約並執行交易。

eth.getBlock("latest").gasLimit

4286582786

正如@fixanoid 在他的回答中所說,您可以更改genesis.json.

但這不是我認為的最佳解決方案。你最好為你的礦工使用一個特定的標誌。

Geth 有一個--targetgaslimit標誌,它將導致您的礦工一步一步地朝著給定的氣體限制移動。每個塊只允許一定的增加。通常prev limit/1024. 因此,可能需要一些時間才能將其放在您想要的位置。顯然,較大的更改會導致塊不被接受。

除了指定--targetgaslimit標誌之外,您還必須--mine在您的私有區塊鏈中創建您的節點(顯然)。

編輯:您如何發送交易?您目前指定的氣體限制是多少?一筆交易的最低金額是 21000。如果您正在呼叫具有備份功能的合約,則需要更多的 gas。確保你有足夠的 ETH 來支付 gas。

問題可能是錯誤消息有缺陷

3件事要嘗試:

  • 避免使用不穩定的版本,切換到最後一個穩定的 Elasa (v1.9.6)
  • 部署合約時可能需要稍微增加 gas,因為新版本的 solidity 會改變 gas 計算
  • 有時需要使用天然氣價格預言機

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