Cryptomonnaie

Nous avons développé un décodeur de trace d'appel pour Geth

Nous avons développé un décodeur de trace d'appel pour Geth


1*PXozOpRbHX6DwFZzS nMlw - Nous avons développé un décodeur de trace d'appel pour Geth

Complet avec un formateur de sortie de bonus et une application de démonstration! Complet avec un formateur de sortie de bonus et une application de démonstration!

Le développement sur Ethereum est difficile. Frustrant. L'arsenal actuellement disponible pour les développeurs est encore rudimentaire et, même si nous sommes reconnaissants pour tous les outils à notre disposition, les environnements nécessaires à l'exploration et au développement de technologies plus matures sont encore très éloignés.

Le problème est que, jusqu'à présent, nous n'avions que l'embarras du choix, avec de multiples IDE et des débogueurs intelligents qui nous ont permis de créer facilement des applications intéressantes. Avec solidité? Pas tellement. Nous devons en quelque sorte développer le nôtre.

À cela s’ajoute le fait que l’écosystème Ethereum est plus dur que la plupart des autres. Les contrats doivent être déployés sur le réseau public pour être correctement testés; l'exécution se fait de manière asynchrone, avec un délai non spécifié; et il est totalement non interactif - toute notre sortie se résume à une réponse de fonction ou à des journaux de transactions codés. Cela signifie que les transactions ne peuvent être déboguées qu'après coup et que, comme vous pouvez l'imaginer, cela n'est pas toujours utile.

Si (et quand) une transaction revient, nous sommes souvent accueillis par des messages cryptés tels que, "Erreur: la transaction a été annulée par le MEV." Inutile, en particulier lorsque Geth ignore tout message inversé que vous avez programmé.

Tout cela rend extrêmement difficile de comprendre exactement pourquoi un appel de contrat a échoué. Et quand il s’agit de contrats qui font plusieurs appels à eux-mêmes, la recherche d’une erreur devient rapidement un exercice d’épilation. Alors, au risque de calvitie précoce, nous avons décidé de faire quelque chose.

Pour rendre les sessions de débogage moins pénibles, nous avons développé un décodeur qui peut tracer le suivi des appels d’une transaction (qu’il soit réussi ou échoué) et le traduire en un langage simple et significatif. L'outil permet à l'utilisateur de surveiller la séquence des appels avant l'échec de la transaction. Malheureusement, il ne peut pas extraire l'erreur exacte qui a provoqué le retour, mais il fournira toutes les informations menant à ce point, y compris:

  • contrat appelé et tout autre appel de bibliothèque (par nom ou adresse)
  • nom de la méthode
  • entrées et sorties décodées

Si vous voulez voir notre travail acharné en action, nous avons mis le rapport disponible ici. La bibliothèque est également fournie avec un exemple de formateur que vous pouvez utiliser pour exporter les résultats vers la console.

Voici comment le mettre en place:

Installer

À la racine du référentiel, exécutez:

npm installer

Lancer la démo

De publicDemo il suffit de courir:

nœud demo.js

Usage

C'est l'usage de base de la bibliothèque. Tout ce que vous avez à faire est de remplacer les paramètres des appels de fonction.

Exemples

Vous pouvez trouver des exemples d'applications dans demo.js. Ce sont des implémentations très simples pour mettre en évidence les différents cas d’utilisation de la bibliothèque - elles ne sont pas prêtes pour la production et nécessiteront un peu de travail manuel de votre part. Ils comprennent:

  • Décodage des traces d'appel codées en dur

demo_manualInput ()

  • Remplacement d'adresses par des noms conviviaux

demo_knownAddresses ()

  • Traiter avec plusieurs contrats (ABI)

demo_multipleContracts ()

  • Gestion des types de solidité personnalisés

demo_customTypes ()

  • Obtenir la trace des appels de Rinkeby via etherscan ()

demo_rinkeby ()

  • Obtenir la trace des appels du réseau principal via etherscan ()

demo_mainNet ()

  • Obtenir la trace d'appel directement à partir d'un nœud Geth. Pour exécuter cette fonction, vous devez remplacer avec un hachage de transaction récent et mettez à jour l'adresse IP RPC utilisée pour vous connecter à votre nœud si nécessaire.

demo_privateGethNode ()

Et voila! Une meilleure façon de déboguer Geth.

Nous avons créé ce décodeur Geth trace comme un grandMerci’À toutes les personnes qui ont travaillé si dur pour faire de l’Ethereum ce qu’il est aujourd’hui. Une mention spéciale doit être attribuée à ConsenSys pour leur “abi-décodeur ” outil et l'inspiration qu'il nous a donné. Nous espérons que cet outil augmentera la productivité des développeurs travaillant dans l'écosystème et, en fin de compte, facilitera le développement de l'environnement.

N'hésitez pas à produire d'autres outils de formatage mieux adaptés à vos besoins et à nous indiquer si vous trouvez notre travail utile, si vous savez comment il pourrait être amélioré et comment vous souhaitez le voir évoluer à l'avenir.

Bonne codage!

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

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

Close
Close