Appeler les fonctions Solidity à partir de la console Truffle

Ruham

Appeler les fonctions Solidity à partir de la console Truffle


Cela pourrait être un double, mais j’ai vu des réponses différentes jusqu’à présent, et c’est très déroutant. J’ai le contrat suivant:

 pragma solidity ^ 0.4 . 19 ; contract Sum   { 
    event   Summed ( uint256 num1 ,  uint256 num2 ,  uint256 result ); 

    function  getSum ( uint256 num1 ,  uint256 num2 )   public  returns ( uint256 result )   { uint256 result ; result =  num1 +  num2 ; 
        return  result ; 

        Summed ( num1 ,  num2 ,  result ); 
    } 
 } 

Comment appeler le getSum() partir de la console Truffle à partir de l’initiation du contrat (j’utilise Ganache), et quelle est la différence (en termes de syntaxe) dans l’appel du getSum() partir de la console et en utilisant Web3js?

J’utilise les dernières versions de Truffle et Ganache.

Réponses


 Rob Hitchens B9lab

Tout d’abord, ajoutez le modificateur pure à votre fonction getSum() pour qu’il fasse ce que vous voulez qu’il fasse. Déployez-le ensuite avec $ truffle migrate .

Puis $ truffle console

 >   var  sum ; 
 undefined 

 >   Sum . deployed (). then ( function ( instance )   {  sum =  instance ;   }); 

 >  sum A lot of truffle contract stuff ...  

 >   var  a =   1 ; 
 >   var  b =   2 ; 
 >   var  response ; 
 >  sum . getSum ( a , b ). then ( function ( r )   {  response =  r . toString ( 10 );   });   // because r is a bigNumber 

 >  response 3 
 > 

Je suis juste en train de le faire, donc j’espère que je n’ai pas floué la syntaxe.

J’espère que cela aide.

Rob Hitchens B9lab

Ceci récupère le return result; L’émetteur d’événement ne se déclencherait jamais car il survient après le return . L’écoute des événements côté client est une technique différente.

Ruham

Une source pour lire sur l’écoute des événements?

Rob Hitchens B9lab

Regardez ici. L’essentiel est que vous fassiez quelque chose comme sum.Summed.watch(function(error,result) { // what to do when event discovered }); ethereum.stackexchange.com/questions/32027/…


 Nico

Si le contrat a été déployé:

    Sum . at (- address -). getSum ( param1 ,  param2 ) 

S’il n’a pas été déployé, suivez les étapes de cette réponse pour le déployer et obtenir l’adresse:

Comment obtenir l’adresse de contrat déployée à l’aide de la console Truffle 3.x?

Ruham

Merci. C’est vraiment bizarre, car cela fonctionne pour certaines fonctions, mais pour d’autres non (erreur JSON rpc invalide).

binaryguy

C’était la seule réponse utile car elle fait référence au contrat déployé en utilisant son adresse. Les autres réponses reposent sur la création d’une instance locale qui est agréable pour le pré-test mais pas pour parler à un contrat qui est déjà déployé dans le grand livre.

 

#à, #de, #la, appeler, Console»:, Fonctions, Les, partir, Solidity?, Truffle

 

yahoo

Laisser un commentaire

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