Plus de jeux sur WuGames.ioSponsoriséDécouvrez des jeux de navigateur gratuits — jouez aussitôt, sans téléchargement ni inscription.Jouer

Encodeur / Décodeur ABI

Encodez les appels de fonction en calldata ou décodez l'input data de transactions Ethereum, Polygon, BSC et toute EVM. Supporte tuples, arrays, structs.

Format: nomFonction(type1,type2,...)

Qu'est-ce que l'Encodeur / Décodeur ABI ?

L'Encodeur/Décodeur ABI (Application Binary Interface) est un outil gratuit pour encoder et décoder les données d'appel de fonctions des smart contracts Ethereum. Il convertit les signatures de fonctions et paramètres lisibles par l'homme en calldata hexadécimale qui peut être envoyée aux smart contracts, et inversement.

Cet outil est essentiel pour les développeurs blockchain travaillant avec des smart contracts, déboguant des transactions ou construisant des dApps sur Ethereum et les chaînes compatibles EVM.

Qu'est-ce que l'ABI dans Ethereum ?

L'ABI (Application Binary Interface) est une spécification qui définit comment interagir avec les smart contracts Ethereum. Elle décrit les fonctions disponibles dans un contrat, leurs paramètres et types de retour. L'encodeur ABI convertit les appels de fonctions en bytecode que l'EVM peut exécuter.

Qu'est-ce que le calldata ?

Le calldata est la donnée encodée envoyée avec une transaction vers un smart contract. Il se compose d'un sélecteur de fonction de 4 octets (les 8 premiers caractères hexadécimaux après 0x) suivi des paramètres encodés en ABI. Par exemple, appeler transfer(address,uint256) génère un calldata comme 0xa9059cbb000000...

Comment encoder un appel de fonction ?

Entrez la signature de la fonction (ex: transfer(address,uint256)) et les paramètres sous forme de tableau JSON. L'outil générera le calldata complet incluant le sélecteur de fonction et les paramètres encodés. Ce calldata peut être utilisé dans les transactions web3 ou pour le débogage.

Comment décoder les données d'entrée d'une transaction ?

Collez les données d'entrée de la transaction (calldata) de n'importe quelle transaction EVM. Si vous connaissez la signature de la fonction, fournissez-la pour un décodage détaillé des paramètres. Sinon, l'outil affichera le sélecteur de fonction et les données brutes. C'est utile pour analyser les transactions sur les explorateurs de blocs.

Quelles blockchains sont prises en charge ?

Cet outil fonctionne avec toutes les blockchains compatibles EVM, notamment Ethereum, BSC, Polygon, Arbitrum, Optimism, Avalanche et toute autre chaîne utilisant la Machine Virtuelle Ethereum et respectant les standards d'encodage ABI.

Encodeur / Décodeur ABI — Encodez les appels de fonction en calldata ou décodez l'input data de transactions Ethereum, Polygon, BSC et toute EVM.
Encodeur / Décodeur ABI

Comment le selector de 4 octets est-il calculé depuis la signature ?

Prenez la signature comme transfer(address,uint256), appliquez Keccak-256 (PAS SHA-256 normal) et prenez les 4 premiers octets. La signature NE doit PAS avoir d'espaces et doit utiliser les noms canoniques : address, uint256 pas uint, bytes32 pas bytes. transfer(address,uint256) hashe en 0xa9059cbb...

Comment ABI gère les types dynamiques comme string et bytes ?

Les types dynamiques utilisent un schéma head/tail : head contient les offsets (32 octets chacun), tail contient longueur + données paddées. Pour transfer(address,uint256) tous sont statiques et packent directement. Pour setMessage(string), la string place son offset en head puis sa longueur UTF-8 + contenu paddé à 32 octets en tail.

Puis-je décoder du calldata sans connaître la signature ?

Partiellement. Les 4 premiers octets sont le selector — interrogez des bases ouvertes comme 4byte.directory ou Openchain.xyz pour trouver des signatures candidates. Sans la signature on ne peut pas décoder les paramètres de manière fiable car l'ABI est type-aware. L'outil pointe vers ces bases.

Pourquoi mon calldata diffère-t-il de la sortie ethers.js ?

Ethers.js utilise des alias canoniques (uint -> uint256, int -> int256, bytes dynamique) et peut différer si vous passez des types non-canoniques. Vérifiez l'ordre des paramètres — les tableaux JSON doivent correspondre à la signature. Ethers encode aussi function() en selector 0x sans args ; certains outils omettent les octets zéro finaux.

Cas d'utilisation courants

  • Encoder les transferts de tokens ERC20 pour les interactions contractuelles
  • Décoder les données d'entrée de transaction depuis Etherscan ou les explorateurs de blocs
  • Tester les appels de fonctions de smart contracts avant le déploiement
  • Déboguer les transactions échouées en analysant le calldata
  • Construire des transactions personnalisées pour les portefeuilles multisig
  • Analyser les interactions de protocoles DeFi (swaps Uniswap, etc.)