在私有區塊鏈中設置塊氣體限制?
在具有 Parity 的私有區塊鏈中,設置 Block Gas Limit 的正確方法是什麼?當我轉到“轉賬”,然後在“收件人”欄位中指定一個地址時,會彈出一個紅色條,上面寫著:
交易執行將超過區塊氣體限制
不知道為什麼block gas limit不是預設的!我正在使用自己的鏈規範文件,但我從https://github.com/paritytech/parity/blob/master/ethcore/res/ethereum/foundation.json複製了這些值:
"gasLimit": "0x1388",
…
"minGasLimit": "0x1388",
錯誤所說的限制似乎是 5000 (0x1388),因為直到我手動將氣體(從現場預設的 21000)降低到 4999 之前我得到了錯誤。但是為什麼限制設置為 5000?這兩個參數與塊氣體限制沒有任何關係,是嗎?
(無論如何,當我將氣體限制降低到低於 5000 時,我會遇到這個問題:Parity genesis file - How to set “minimal cost of the transaction” aka “Gtransaction” value?)
真的,我只是不明白我做了什麼來改變 Block Gas 限制。它應該預設為 21000,對吧?我是如何設法改變這一點的?
問題是:
在具有 Parity 的私有區塊鏈中,設置 Block Gas Limit 的正確方法是什麼?
答案是:
- 使用 Parity 鏈規範中的gasLimit參數設置初始塊氣體限制。
- 隨著時間的推移,礦工們投票決定提高或降低這個限制時,他們將重新設置這個限制,minGasLimit是最低限度。
在私有網路中,您可以通過使用創世文件中的參數來增加塊氣體限制。
gasLimit
“gasLimit”: “0x8000000”,
創世文件中的gasLimit:
一個標量值,等於目前鏈範圍內每個區塊的 Gas 支出限制。在我們的例子中,高以避免在測試期間受到此門檻值的限制。注意:這並不表示我們不應該關注我們合約的 Gas 消耗。
您可以從What does each genesis.json parameter mean? 中了解其他 genesis參數。
PS:我沒有嘗試增加塊氣體限制,但我想這應該可行。雖然你可以增加塊氣體限制,但你不應該(理想情況下)。如果這是出於測試目的,那沒關係。但是如果你的智能合約消耗的氣體超過了區塊氣體的限制,這是一個問題。您可以嘗試拆分契約。