Развертывание трюфелей в тестовой сети говорит: Ошибка: превышение предела блока газа

Я пытаюсь развернуть образец контракта (следуя это руководство ), но я получаю ошибку в недостаточном количестве газа. Я немного изменил цифры, но не смог это исправить. Я видел этот вопрос в обмене стеками , но есть несколько вещей Я не понимаю в предлагаемом ответе:

  • Что значит изменить блок генезиса следующим образом?
      

    "Вы можете изменить свой блок генезиса, чтобы иметь предел газа 0x2fefd8   что совпадает с основной сетью (3 141 592 газа). Вам также потребуется сбросить эту тестовую цепочку, так как вы будете менять блок генезиса.

  • В js-файлах, которые я печатаю ниже, есть два параметра «газ»: один в 2_deploy_contracts.js, а другой в truffle.js. Что означает каждый из них (как они влияют на развертывание контракта)? Существуют ли какие-либо другие места, которые связаны с количеством проблем с газом?

Моя ошибка и содержимое файла:

~/voting$ truffle deploy
Using network 'development'.

Running migration: 1_initial_migration.js
  Deploying Migrations...
Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: exceeds block gas limit
    at Object.InvalidResponse (/usr/lib/node_modules/truffle/build/cli.bundled.js:37022:16)
    at /usr/lib/node_modules/truffle/build/cli.bundled.js:209743:36
    at XMLHttpRequest.request.onreadystatechange (/usr/lib/node_modules/truffle/build/cli.bundled.js:208522:13)
    at XMLHttpRequestEventTarget.dispatchEvent (/usr/lib/node_modules/truffle/build/cli.bundled.js:210395:18)
    at XMLHttpRequest._setReadyState (/usr/lib/node_modules/truffle/build/cli.bundled.js:210685:12)
    at XMLHttpRequest._onHttpResponseEnd (/usr/lib/node_modules/truffle/build/cli.bundled.js:210840:12)
    at IncomingMessage.<anonymous> (/usr/lib/node_modules/truffle/build/cli.bundled.js:210800:24)
    at emitNone (events.js:91:20)
    at IncomingMessage.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)

миграции /1_initial_migration.js

var Migrations = artifacts.require("./Migrations.sol");
module.exports = function(deployer) {
  deployer.deploy(Migrations);
};

миграции /2_deploy_contracts.js

var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
  deployer.deploy(Voting, ['Rama', 'Nick', 'Jose'], {gas: 5000000});
};

truffle.js     требуется ( «Бабель регистра»)

module.exports = {
  networks: {
    development: {
      host: 'localhost',
      port: 8545,
      network_id: '*', // Match any network id
      // gas:400000000000,
      gas:1000258612000000000,
      from: "0xf212bb926f7a831ff745e4236fc704a9947de77c"
    }
  }
}
17 голосов | спросил Bush 15 J000000Saturday17 2017, 11:58:05

5 ответов


23

Внутри truffle.js добавьте

,gas: 4600000

Не забудьте немного "," поэтому он выглядит как

  networks: {
    development: {
      host: "localhost",
      port: 8545,
      network_id: "*",
      gas: 4600000
    }
ответил Russo 1 32017vEurope/Moscow11bEurope/MoscowWed, 01 Nov 2017 01:43:04 +0300 2017, 01:43:04
2

Либо ваш контракт слишком велик, либо ваша конфигурация трюфелей является наякой.

gas:1000258612000000000

и

{gas: 5000000}

Это недопустимые значения газа. Максимальное значение составляет около 4 м, поэтому нет никакого действительного значения.

Вернитесь к своему комментарию, и если вы все еще видите ошибку, скорее всего, ваш контракт слишком велик и, вероятно, должен быть разбит на библиотеки. Хороший способ проверить - посмотреть на стоимость создания газа с помощью solc --gas path/to/contract.sol.

  

Что значит изменить блок генезиса следующим образом?

Это только если вы используете тестовую сеть, поэтому игнорируйте ее, если ваш проект не существует исключительно в частной цепочке.

  

В js-файлах, которые я печатаю ниже, есть два параметра «газ»: один в 2_deploy_contracts.js, а другой в трюффле.js. Что означает каждый из них (как они влияют на развертывание контракта)? Существуют ли какие-либо другие места, связанные с количеством проблем с газом?

Первым из deployer.deploy является только максимальное значение газа, которое вы разрешаете для транзакции. Это также выше предела блока в 4 м, поэтому исправить это тоже.

Второй, выглядит как описание сети (я не совсем уверен в трюфеле). Это говорит о трюфеле, каково максимальное значение газа в сети. не знаю, где найти самый последний предел, но я провел тесты с лимитом в 4 000 000. Согласно ethstats.net, возможно, сейчас будет около 6 м.

ответил Mike Shultz 15 J000000Saturday17 2017, 21:24:32
2

В моем случае я использовал блок генезиса с очень низким пределом газа:

"gasLimit": "2100000"

Определив количество газа немного ниже этого количества в трюфеле. Я решил проблему для меня. Вот мое определение сети в truffle.js:

"private": {
    network_id: 15,
    host: "localhost",
    port: 8545,
    gas: 2000000
},
ответил JorgeM Londoño 24 52017vEurope/Moscow11bEurope/MoscowFri, 24 Nov 2017 17:49:56 +0300 2017, 17:49:56
1

Я также столкнулся с подобной проблемой. Версия трюфеля, которую я использовал, была Truffle v4.0.1 (ядро: 4.0.1). Если вы перейдете на бета-версию, все будет работать нормально. 1. npm uninstall -g трюфель 2. версия трюфеля (чтобы проверить, удалили ли ее) 3. npm install -g трюфель @ бета

Вы хорошо пойдете. Это должно устранить проблему.

ответил Neha Kumari 11 62017vEurope/Moscow11bEurope/MoscowSat, 11 Nov 2017 08:56:05 +0300 2017, 08:56:05
0

Я также следую тому же руководству, и у меня была такая же проблема. В truffle.js я дал 4700000 для газа. Также в файле миграции (второй файл) я заменил газ на 4700000 следующим образом:

var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
  deployer.deploy(Voting, ['Rama', 'Nick', 'Jose'], {gas: 4700000});
};

Я работаю с мигрированием трюфелей --reset, и моя проблема решена.

ответил mbmert 19 72017vEurope/Moscow11bEurope/MoscowSun, 19 Nov 2017 12:05:32 +0300 2017, 12:05:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132