UnhandledPromiseRejectionWarning: Ошибка: код контракта не может быть сохранен, проверьте лимит газа - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь развернуть мой простой интеллектуальный контракт на надежность в сети Rinkeby, но получаю сообщение об ошибке:

UnhandledPromiseRejectionWarning: Ошибка: код контракта не может быть сохранено, пожалуйста, проверьте ваш лимит газа.

Мой код солидности прост

pragma solidity ^0.4.18; 

contract Greetings{ 
  string public message; 

  function Greetings(string initialMessage) public{ 
    message = initialMessage;
  }  

  function setMessage(string newMessage) public {
    message = newMessage;
  }  
}

и мой сценарий развертывания:

const HDWalletProvider = require('truffle-hdwallet-provider'); 
const Web3 = require('web3');
const { interface,bytecode} = require('./compile');

const provider = new HDWalletProvider(  
  'twelve word mnemonic...', 
  'https://rinkeby.infura.io/GLm6McXWuaih4gqq8nTY'    
);

const web3 = new Web3(provider);

const deploy = async () => {
    accounts = await web3.eth.getAccounts(); 

    console.log('attempting to deploy from account',accounts[0]);

    const result = await new web3.eth.Contract(JSON.parse(interface)) 
      .deploy({data:bytecode, arguments:['Hello World']})      
      .send({from: accounts[0], gas:'1000000'});                              

    console.log('Contract deployed to', result.options.address); 
};

deploy();

Забавно, я имел обыкновение успешно развертывать, но когда я создал новый проект и сделал тот же код, я получаю эту ошибку сейчас. Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

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

data:'0x0' + bytecode

«сохранит» значение байт-кода в виде строки

0 голосов
/ 30 июня 2018

Эту проблему можно решить, добавив '0x' в качестве префикса байт-кода:

.deploy({ data: '0x' + bytecode, arguments: ['Hi there!'] })

Больше информации на https://ethereum.stackexchange.com/a/47654.

0 голосов
/ 07 мая 2018

Была точно такая же проблема! Кажется, это вызвано ошибкой в ​​версии 0.0.5 "truffle-hdwallet-provider". Во время курса удэми он, очевидно, использовал «0.0.3».

Если вы выполните следующее, все будет в порядке, у меня это сработало.

npm uninstall truffle-hdwallet-provider
npm install --save truffle-hdwallet-provider@0.0.3

Затем я выполнил тот же контракт, который успешно развернут.

Удачи!

...