web-dev-qa-db-fra.com

UnhandledPromiseRejectionWarning: Erreur: le code du contrat n'a pas pu être stocké, veuillez vérifier votre limite de gaz

J'essaie de déployer mon contrat intelligent simple solidité sur le réseau Rinkeby, mais je reçois toujours l'erreur:

UnhandledPromiseRejectionWarning: Erreur: Le code de contrat n'a pas pu être stocké, veuillez vérifier votre limite de gaz.

Mon code de solidité est simple

pragma solidity ^0.4.18; 

contract Greetings{ 
  string public message; 

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

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

et mon script de déploiement est:

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();

Le plus drôle, c'est que je pouvais déployer avec succès, mais quand j'ai créé un nouveau projet et que j'ai refait le même code, je reçois cette erreur maintenant. Aidez-moi!

15
Jason

Eu exactement le même problème! Il semble que cela soit dû au bogue de la version "0.0.5 de" truffle-hdwallet-provider ". Pendant le cours udemy, il utilisait apparemment "0.0.3".

Si vous procédez comme suit, cela a fonctionné pour moi.

npm uninstall truffle-hdwallet-provider
npm install --save [email protected]

Ensuite, j'ai exécuté le même contrat qui a été déployé avec succès.

Bonne chance!

32
Kutay Ozdogru

Ce problème peut être résolu en ajoutant le '0x' comme préfixe du bytecode:

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

Plus d'informations sur https://ethereum.stackexchange.com/a/47654 .

13
Huy Vo

Je crois que le bytecode est traité comme un numéro unique plutôt que comme une série d'octets. Au lieu de soumettre des données: bytecode, essayez:

data:'0x0' + bytecode

il "conservera" la valeur du bytecode sous forme de chaîne

2
alernerdev