Как развернуть смарт-контракт Ethereum, требующий более 4,7 млн ​​газа в сети Ropsten?

Мой смарт-контракт действительно огромен — для его развертывания требуется 5,6 млн газа. Я смог развернуть его один раз , но что-то изменилось, и я больше не могу этого делать.

Я пытался запустить майнер с более высоким лимитом блочного газа, gethно все равно получаю exceeds block gas limit: https://stackoverflow.com/questions/51437227/geth-targetgaslimit-not-working

Как я могу сделать это в сети Ropsten (тестнет)?

разделить его на несколько контрактов

Ответы (2)

В конечном итоге вам нужно будет уменьшить размер вашего контракта, поскольку нет возможности обойти лимит газа для одной транзакции.

Вы можете сделать это несколькими способами:

  • Убедитесь, что вы пишете свой код, чтобы иметь повторно используемые функции, где это возможно.
  • Убедитесь, что вы компилируете код с помощью оптимизатора Solidity.
  • По возможности используйте существующие, проверенные в боевых условиях библиотеки.
  • Разбейте свой контракт на несколько более мелких контрактов или библиотек, которые ссылаются друг на друга, чтобы создавать транзакции ниже лимита газа.
В качестве альтернативы, поместите его в тестовую сеть с большим лимитом газа, например Kovan.
> нет возможности обойти лимит газа за одну транзакцию. Как я сделал это один раз?
Лимит газа Ropsten на самом деле не фиксирован, но большую часть времени составляет 4,7 миллиона. Если вы майнер, вы можете временно увеличить лимит газа. Вероятно, именно это и произошло, когда ваша транзакция была принята. Обязательно подумайте о том, чтобы сделать ваш контакт модульным и версионным.
я могу майнить, так как для Ropsten это не так сложно, как для основной сети. > «Если вы майнер, вы можете временно увеличить лимит газа», — я пытался ( stackoverflow.com/questions/51437227/… ), как я могу это сделать?

Я понятия не имею, что не так, но я смог опубликовать ремикс, подключенный к локальному узлу гет-майнера:

$get --verbosity "4" -rpc --nousb --ipcdisable --rpcaddr "127.0.0.1" --rpccorsdomain " " --rpcvhosts " " --syncmode "fast" --rpcapi="db,personal,eth ,net,web3,admin" --cache=2048 --testnet --mine --targetgaslimit 7000000

https://ropsten.etherscan.io/tx/0x75139eb7f94e1a8769dee35b63f0492893da550e5538dfd67a889203d510c833

Без понятия, но я не могу сделать это снова. От чего это зависит? Похоже на какое-то ограничение сети. Насколько я понимаю, лимит газа в блоке определяется голосованием узлов. Означает ли это, что большинство майнеров должны просто голосовать за большую сумму, чем по умолчанию? Как это сработало несколько раз для меня?