Impossible de déployer smart conrtact en utilisant le nœud js (pas la truffe)

Hrach Karapetyan

Impossible de déployer smart conrtact en utilisant le nœud js (pas la truffe)


voici le code comme expliqué dans la doc web3 (noeud: 13887)

  web3 . eth . estimateGas ({ data :   '0x'   +  bytecode }). then ( value =>{ console . log ( 'gasEstimate = '   +  value ); 
  let   MyContract   =   new  web3 . eth . Contract ( abi ,{ from :  publicKey , //user wallet gasPrice :   '10000000000000' , gas :  value }); console . log ( 'deploying contract...' ); 
  MyContract . deploy (). send ( function ( error ,  transactionHash ){ 
   }). on ( 'error' ,   function ( error ){   }) 
     . on ( 'transactionHash' ,   function ( transactionHash ){   }) 
     . on ( 'receipt' ,   function ( receipt ){ console . log ( receipt . contractAddress )   // contains the new contract address }) 
     . on ( 'confirmation' ,   function ( confirmationNumber ,  receipt ){    }) 
     . then ( function ( newContractInstance ){ console . log ( newContractInstance . options . address )   // instance with the new contract address 
    }); 
 }); 

voici un message d’erreur

 UnhandledPromiseRejectionWarning :   Error :   Request  failed with  status code 522 at createError ( /home/ project / node_modules / axios / lib / core / createError . js : 16 : 15 ) at settle ( /home/ project / node_modules / axios / lib / core / settle . js : 18 : 12 ) at IncomingMessage . handleStreamEnd ( /home/ project / node_modules / axios / lib / adapters / http . js : 201 : 11 ) at emitNone ( events . js : 111 : 20 ) at IncomingMessage . emit ( events . js : 208 : 7 ) at endReadableNT ( _stream_readable . js : 1064 : 12 ) at _combinedTickCallback ( internal / process / next_tick . js : 138 : 11 ) at process . _tickCallback ( internal / process / next_tick . js : 180 : 9 ) 
 ( node : 13887 )   UnhandledPromiseRejectionWarning :   Unhandled  promise rejection .   This  error originated either by throwing inside of an async   function  without a catch  block ,  or by rejecting a promise which was not handled with   . catch ().   ( rejection id :   2 ) 
 ( node : 13887 )   [ DEP0018 ]   DeprecationWarning :   Unhandled  promise rejections are deprecated .   In  the future ,  promise rejections that are not handled will terminate the Node . js process with  a non - zero exit code . 

ÉDITER

Merci à tout cela fonctionne du code

  web3 . eth . estimateGas ({ data :   '0x'   +  bytecode }). then ( value =>{ 
   let   MyContract   =   new  web3 . eth . Contract ( abi ,{ from :  publicKey , gasPrice :   1000000 , gas :  value }); 
   MyContract . deploy ({ data :    '0x'   +  bytecode }). send ({ from :  publicKey , gasPrice :   1000000 , gas :  value }, function ( error ,  transactionHash ){}) 
         . on ( 'error' ,   function ( error ){   }) 
         . on ( 'transactionHash' ,   function ( transactionHash ){   }) 
         . on ( 'receipt' ,   function ( receipt ){}) 
         . on ( 'confirmation' ,   function ( confirmationNumber ,  receipt ){    }) 
         . then ( function ( newContractInstance ){   }); 
         }); 

bonne vibration

Je pense que vous devez remplacer MyContract.deploy() par (await MyContract.deploy()) … Et bien sûr, déclarer la fonction entière async .

mirg

@goodvibration le code utilise les promesses, regardez then

kherwa

MyContract.deploy ({données: ‘0x’ + bytecode})

Réponses


 mirg

Vous avez oublié d’envoyer les informations requises pour déployer le contrat. Selon la doc, vous devez fournir le bytecode et les arguments du constructeur de votre contrat à la fonction deploy .

 myContract . deploy ({ data :   '0x12345...' , arguments :   [ 123 ,   'My String' ] 
 }) 
 . send ({ from :   '0x1234567890123456789012345678901234567891' , gas :   1500000 , gasPrice :   '30000000000000' 
 },   function ( error ,  transactionHash ){   ...   }) 
 . on ( 'error' ,   function ( error ){   ...   }) 
 . on ( 'transactionHash' ,   function ( transactionHash ){   ...   }) 
 . on ( 'receipt' ,   function ( receipt ){ console . log ( receipt . contractAddress )   // contains the new contract address 
 }) 
 . on ( 'confirmation' ,   function ( confirmationNumber ,  receipt ){   ...   }) 
 . then ( function ( newContractInstance ){ console . log ( newContractInstance . options . address )   // instance with the new contract address 
 }); 

Hrach Karapetyan

J’ai cette partie ici, laissez MyContract = new web3.eth.Contract (abi, {from: publicKey, gasPrice: value, gas: ‘10000000000000’});

mirg

Je ne vois aucun bytecode ici. Pour déployer le contrat dans la blockchain, vous devez envoyer le bytecode. Vous initialisez simplement un objet avec l’interface abi


 à savoir

Le code d’état 522 correspond au délai d’expiration de la connexion HTTP. Vérifiez si vous avez correctement défini le fournisseur et créé l’instance web3 . Vérifiez également votre statut Internet.

Hrach Karapetyan

J’ai un bon Internet car la blockchain se synchronise et l’instance web3 car j’envoie de l’éther au créateur donc il aura de l’éther pour le gaz contractuel

Hrach Karapetyan

@goodvibration – c’est l’exemple des documents web3


à savoir

Tu as raison. J’étais confus sur l’interface web3 en ce moment.

à savoir

Pensez que @mirg a raison

 

#de, #en, #la, #pas, conrtact, déployer, impossible, JS, Le, noeud, Smart, truffe, utilisant

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *