Превышен лимит газа в частной сети

В настоящее время я запускаю частную сеть Ethereum с двумя узлами. На моем адресе coinbase на основном узле много эфира, поэтому я пошел, чтобы совершить транзакцию, но получил ошибку «Превышен лимит газа». Я заметил, что лимит газа был установлен на 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" } 
}

}

Я использую Гета.

Используете ли вы файл genesis.json при запуске geth?
Я запускаю настроенный выше файл генезиса, вот команда: geth --datadir ~/.ethereum_private init ./customGenesis.json

Ответы (3)

Не изменяйте файл генезиса, так как он изменяет динамику блокчейна. У Geth есть --targetgaslimitфлаг, который заставит майнера сходиться к определенному числу, противоположному жестко запрограммированному значению.

Каждый блок имеет лимит газа, который содержится в самом блоке. Этот лимит может меняться только с определенной суммой между блоками (предыдущий лимит/1024, если быть точным). Если изменение больше, блок больше не принимается.

Убедитесь, что вы не только установили, --targetgaslimitно и начали майнить --mineсвою частную сеть. Это будет медленно перемещать лимит газа в блоке к указанному целевому лимиту газа, и вы увидите, как лимит газа увеличивается с каждым блоком.

Также обратите внимание, что флаг ограничения целевого газа был введен в geth 1.4.x, поэтому убедитесь, что у вас самый последний клиент.

Смотрите также этот отличный ответ .

Я использовал руководство How to Run Multiple Geth Instances on a Private Blockchain Ethereum . И может использовать более 1 000 000 газа.

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

Новые версии geth не позволяют изменять исходный блок после его запуска. Вы должны сбросить каталог данных и начать заново.

Вам не нужно изменять файл генезиса. Это просто для инициализации узла ethereum. Вы должны проверить последний блок с помощью eth.getBlock("latest")команды, и там вы получите файл gasLimit. Он увеличивается по мере увеличения блока в сети. Всегда следите за тем, чтобы лимит газа для транзакций был меньше указанного.