Où le résultat de l’appel de contrat intelligent est-il stocké lors de l’utilisation de la méthode de transaction de web3.py?

Andreas Unterweger

Où le résultat de l’appel de contrat intelligent est-il stocké lors de l’utilisation de la méthode de transaction de web3.py?


J’utilise web3.py et j’essaye d’obtenir la valeur de retour d’une méthode de contrat intelligent après l’avoir appelée. Bien sûr, je peux le faire comme ceci:

 value = smart_contract_instance.someFunction() 

mais cela ne me donne aucune information sur la quantité de gaz utilisée. Si j’utilise la méthode de transact comme ceci:

 tx_hash = smart_contract_instance.transact({'to': w3.eth.accounts[0]}).someFunction() 

Je peux accéder au reçu avec w3.eth.getTransactionReceipt(tx_hash) , mais cela ne me donne pas le résultat. Comment puis-je accéder au résultat de l’appel sans avoir à invoquer deux fois le contrat intelligent (comme en utilisant les deux extraits de code ci-dessus)?

Réponses


 smarx

Les transactions n’ont pas de valeur de retour. Si la fonction que vous appelez renvoie une valeur, elle est simplement ignorée. Le modèle typique consiste à enregistrer un événement à partir de la fonction et à rechercher cet événement dans le reçu de transaction.

Notez que si vous appelez une fonction sans envoyer de transaction (probablement ce qui se passe dans votre premier extrait de code), vous obtenez une valeur de retour, mais l’appel n’a aucun effet secondaire (pas de changement d’état ou de transfert d’éther).

Andreas Unterweger

Merci, je vais regarder la documentation de l’événement de web3.py. Concernant les appels: que se passe-t-il lorsque j’appelle une fonction dont la valeur de retour dépend de l’entrée? Le code est-il toujours exécuté, mais les changements d’état sont-ils rejetés?

smarx

Oui, le code est exécuté localement sur le nœud auquel vous êtes connecté, puis les effets secondaires sont ignorés.

 

#de, #la, #ou, contrat, Est-il, intelligent, l’appel, l’utilisation, Le, lors, méthode, résultat, Stocké, transaction, web3.py

 

yahoo

Laisser un commentaire

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