web3.toAscii (hachage de transaction) pour web3js version 1

sas

web3.toAscii (hachage de transaction) pour web3js version 1


Lorsque j’ai utilisé web3.toAscii j’ai reçu l’erreur suivante:

entrez la description de l'image ici

Je pense que la raison en est ma version web3, c’est '1.0.0-beta.34' dire '1.0.0-beta.34'

Si oui, existe-t-il une autre commande pour web3 version 1 pour la commande suivante?

 transaction =  web3 . eth . getTransaction ( '0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498' ) input =  web3 . toAscii ( transaction . input ) console . log ( input ) 

J’ai également utilisé la commande suivante:

 web3 . utils . hexToAscii ( 0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498 ) 

Cependant, je reçois l’erreur suivante:

entrez la description de l'image ici

Cela signifie que son entrée ne peut pas être un hachage de transaction.

Réponses


 Ismael

L’équivalent doit être web3.utils.hexToAscii

 web3 . utils . hexToAscii ( '0x4920686176652031303021' ); 
 >   "I have 100!" 

sas

Merci, j’ai déjà essayé cela, mais son entrée ne peut pas être un hachage de transaction. Je l’ai expliqué dans ma question.

Ismael

@sas Vous manquez " autour de votre paramètre web3.utils.hexToAscii("0x0c485e0f155f7f216d06e70ef85b684392c9b190c2f7c0af67ec1b56d6945498") . En tout cas, cela n’a pas beaucoup de sens d’utiliser hexToAscii avec une transaction pour une transaction.input . champs qui ont été générés par asciiToHex comme block.extraData . Si vous voulez analyser une entrée de transaction, vous avez besoin du contrat abi et d’une bibliothèque comme ethereumjs-abi pour lire les valeurs des paramètres de l’appel.

sas

Vous avez raison, mais cette fois, la sortie n’est pas celle attendue: ‘ fH ^ u000f u0015_! M u0006ç u000eø [hCÉ ±  ÷ À¯gì u001bVÖT’ « . Parce que selon cette réponse: ethereum .stackexchange.com / questions / 11144 /… Je veux décoder les données de transaction de sorte qu’elles soient lisibles.

Ismael

Il fonctionne dans le lien car il a été généré par toHex (équivalent à l’ asciiToHex d’aujourd’hui). Cela ne fonctionne pas dans votre cas car il s’agit d’un appel de fonction brut. Comme je l’ai dit, vous aurez besoin du contrat ABI et d’un analyseur ABI pour extraire les informations des paramètres de l’appel.


 oktapodia

Comme la mention d’Ismael, vous devez utiliser hexToAscii avec [email protected]^1.0

Mais on dirait que vous l’utilisez sur le transaction.hash et non sur le transaction.input

EDIT: exemple:

Soumettre la transaction:

 const   Tx   =  require ( 'ethereumjs-tx' ); 
 const  web3 =  require ( 'web3' ); 
 const  data =  web3 . utils . toHex ( 'Hello world!' ); 
 const  rawTx =   { nonce :  web3 . utils . toHex ( nonce ), gasPrice :  web3 . utils . toHex ( gasPrice ), gasLimit :  web3 . utils . toHex ( gasCost ), to :   '0x0000000000000000000000000000000000000000' , value :   '0x00' , data , 
 }; 
 const  privateKeyWithoutZero =  privateKey . startsWith ( '0x' )   ?  privateKey . slice ( 2 ,  privateKey . length )   :  privateKey ; 
 const  privateKeyBuffer =   new   Buffer ( privateKeyWithoutZero ,   'hex' ); 
 const  transaction =   new   Tx ( rawTx ); transaction . sign ( privateKeyBuffer ); 

 const  serializedTx =  transaction . serialize (); web3 . eth . sendSignedTransaction ( '0x'   +  serializedTx . toString ( 'hex' )) 
     . on ( 'transactionHash' ,   ( txHash )   =>   { console . log ( 'Transaction hash' ,  txHash ); 
 }) 
     . on ( 'receipt' ,   ( receipt )   =>   { console . log ( 'Transaction sent with sucess. debug:' ,  receipt ); 
 }); 

Ensuite, getTransaction:

 web3 . eth . getTransaction ( '<TRANSACTION-HASH>' ) 
         . then (( transaction )   =>   { 
           const  inputData =   Web3 . utils . hexToAscii ( transaction . input ); console . log ( inputData );   // Hello world! 
         }); 

sas

pourriez-vous citer un exemple pour transaction.input? Je veux dire en utilisant web3.utils.hexToAscii. Merci.

oktapodia

Exemple ajouté ci-dessus

sas

Je vous remercie. Maintenant, c’est lisible. Je vais installer un analyseur abi comme celui-ci: github.com/ethereumjs/ethereumjs-abi pour décoder les données tx.

oktapodia

Cela dépend de quel est votre objectif, mais si vous voulez simplement lire les données d’entrée, vous n’avez pas besoin d’utiliser ethereum-abi, j’ai mis à jour mon exemple avec un simple script de travail

sas

Merci. En fait, j’ai l’intention d’obtenir des données Tx en utilisant HTML et JavaScript. J’ai créé un référentiel github ici: github.com/s1241/GUI-for-Smart-Contract son contrat intelligent a été testé avec succès, mais html et javascript ne sont pas complets. Êtes-vous intéressé à consulter son fichier HTML?

 

#de, #pour, 1, hachage, transaction, version, web3.toAscii, web3js

 

yahoo

Laisser un commentaire

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