Go-Ethereum
私有乙太坊 geth 節點上的 gasLimit 5000
問題: 我已將我的 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 計算
- 有時需要使用天然氣價格預言機