Décodeur d'ABI Ethereum gratuit

Décodez les données d'appel des contrats intelligents Ethereum à l'aide d'un ABI au format JSON. Analysez les sélecteurs de fonction et décodez les paramètres uint256, address, bool, string et bytes32.

Mis à jour le

Share:
Home/Utility Tools/Ethereum ABI Decoder

Ethereum ABI Decoder

Decode Ethereum transaction calldata using ABI definitions. Inspect function calls and parameter values.

ABI JSON

Questions Fréquentes

Quels types de paramètres peuvent être décodés ?

uint256, address, bool, string et bytes32. Les types dynamiques (tableaux, tuples) nécessitent une inspection manuelle.

Qu'est-ce qu'un sélecteur de fonction ?

Les 4 premiers octets des données d'appel, dérivés du hash keccak256 de la signature de la fonction (par exemple, "transfer(address,uint256)").

Est-ce gratuit ?

Oui, entièrement gratuit.

Mes données sont-elles en sécurité avec cet outil ?

Absolument. Le Décodeur ABI Ethereum traite tout côté client, dans votre navigateur. Aucune donnée n'est envoyée ni stockée sur un serveur. Votre contenu reste privé sur votre appareil à tout moment.

Le Décodeur ABI Ethereum fonctionne-t-il sur les appareils mobiles ?

Oui, le Décodeur ABI Ethereum est entièrement adaptatif et fonctionne sur smartphones et tablettes. Vous pouvez l'utiliser sur n'importe quel appareil doté d'un navigateur web moderne, sans aucune application à installer.

Dois-je créer un compte pour utiliser cet outil ?

Aucun compte ni inscription n'est nécessaire. Ouvrez simplement le Décodeur ABI Ethereum dans votre navigateur et commencez à l'utiliser immédiatement. Il n'y a ni barrière d'inscription ni restriction d'utilisation.

Comment utiliser le Décodeur ABI Ethereum ?

Saisissez simplement vos données dans le champ prévu, ajustez les paramètres selon vos préférences, et l'outil les traitera instantanément. Vous pouvez ensuite copier le résultat dans le presse-papiers ou le télécharger.

Quels navigateurs sont pris en charge ?

Le Décodeur ABI Ethereum fonctionne dans tous les navigateurs modernes, dont Chrome, Firefox, Safari, Edge et Opera. Pour une expérience optimale, utilisez la dernière version de votre navigateur préféré.

Comment lire les montants uint256 décodés depuis des calldata ERC-20 ?

Un uint256 dans les calldata est un entier brut sans virgule décimale, si bien qu'un montant de transfert de token apparaît comme un très grand nombre exprimé dans la plus petite unité du token. Pour la plupart des tokens ERC-20, cela signifie des unités de type wei à 18 décimales : la valeur 1000000000000000000 (0xde0b6b3a7640000) équivaut exactement à 1 token. Pour convertir, divisez l'entier décodé par 10 élevé au nombre de décimales du token. USDC et USDT utilisent 6 décimales, donc 1000000 correspond à 1,00, tandis que WBTC en utilise 8. Le décodeur lit le bloc de 32 octets en big-endian et affiche l'entier exact ainsi que le hex brut dont il provient, afin que vous puissiez vérifier le montant vous-même. Collez votre ABI et vos calldata pour voir le chiffre précis avant de faire confiance à une invite de wallet.

Pourquoi le décodeur indique-t-il qu'aucune fonction correspondante n'a été trouvée ?

Le décodeur calcule un sélecteur Keccak-256 pour chaque fonction de votre ABI et le compare aux 4 premiers octets de vos calldata. Quand rien ne correspond, cela signifie que l'ABI que vous avez collée ne contient pas la fonction réellement appelée. Les causes habituelles sont l'utilisation de l'ABI du mauvais contrat, un contrat proxy qui redirige les appels vers une implémentation différente, ou une ABI à laquelle il manque la fonction en question. Une simple différence d'un caractère dans un type de paramètre, comme uint contre uint256, modifie aussi le sélecteur et casse la correspondance. La solution consiste à charger l'ABI vérifiée du contrat exact depuis un explorateur de blocs, puis à redécoder. L'erreur elle-même est un signal utile indiquant que la transaction n'est pas ce que vous pensiez. Vérifiez la source et réessayez avec la bonne ABI.

Quelle est la différence entre un sélecteur de fonction et une ABI complète ?

Un sélecteur de fonction ne fait que 4 octets, la tranche de tête du hash Keccak-256 d'une signature canonique comme transfer(address,uint256), qui identifie la fonction ciblée par une transaction. Il indique la fonction mais rien sur les noms des paramètres ni sur la façon d'interpréter les octets qui suivent. Une ABI complète est la description JSON intégrale des fonctions d'un contrat, incluant le nom et le type de chaque entrée ainsi que ses sorties. Le décodeur a besoin de l'ABI, pas seulement du sélecteur, car les blocs d'arguments de 32 octets n'ont aucun sens tant que vous ne savez pas que l'un contient une adresse et le suivant un uint256. Avec seulement un sélecteur, vous pouvez rechercher une signature probable ; avec l'ABI, vous obtenez des valeurs nommées et typées. Collez le tableau ABI ici pour transformer du hex brut en un détail de paramètres étiquetés.

Cet outil peut-il décoder des types dynamiques comme string, bytes et les tableaux ?

Il gère string et bytes en suivant les règles d'encodage ABI : le bloc statique contient un pointeur d'offset vers une zone séparée où la longueur est stockée en premier, suivie des données réelles. Le décodeur lit ce pointeur, saute jusqu'à la longueur, puis reconstruit le texte ou la valeur hexadécimale. Les types statiques à taille fixe comme uint256, int, address, bool et bytes32 occupent chacun un seul bloc de 32 octets et se décodent proprement à chaque fois. Là où il montre ses limites, ce sont les structures dynamiques complexes comme les tableaux de longueur variable et les tuples imbriqués, qui utilisent un encodage en plusieurs parties pouvant nécessiter une inspection manuelle plutôt qu'une valeur unique et propre. Pour les appels courants comme les transferts ERC-20, les approbations et les setters simples, le résultat automatique est complet. Collez vos calldata pour voir quels paramètres se résolvent directement.

Comment calcule-t-on le sélecteur de fonction à partir d'une signature ?

Partez de la signature canonique : le nom de la fonction suivi de ses types de paramètres entre parenthèses, séparés par des virgules, sans espaces et sans noms de paramètres, par exemple transfer(address,uint256). Passez cette chaîne exacte dans la fonction de hachage Keccak-256 et prenez les 4 premiers octets du résultat de 32 octets. Pour transfer, cela produit 0xa9059cbb. La forme canonique compte, car uint doit être écrit sous son alias complet uint256 et int sous int256, sinon le hash et le sélecteur changent entièrement. Cet outil calcule les sélecteurs avec une implémentation Keccak-256 intégrée directement dans votre navigateur, sans jamais avoir besoin de bases de données de signatures en ligne pour faire correspondre un appel. Chargez l'exemple de transfert ERC-20 pour observer une vraie signature se résoudre en son sélecteur, puis testez votre propre fonction pour vérifier ce qu'appelle une transaction.

À propos du décodeur ABI Ethereum

Le décodeur ABI Ethereum transforme les calldata brutes d'une transaction en un appel de fonction lisible par un humain. Vous collez l'ABI JSON d'un contrat ainsi qu'une chaîne de calldata hexadécimale, et l'outil vous indique quelle fonction a été appelée, son sélecteur de 4 octets, ainsi que la valeur décodée de chaque paramètre. Il est conçu pour les développeurs Solidity, les auditeurs de smart contracts et toute personne cherchant à comprendre exactement ce que fait une transaction en attente ou passée, avant de signer ou après coup.

Tout se passe localement dans votre navigateur. L'ABI, les calldata et le résultat décodé ne quittent jamais votre appareil : aucun appel API, aucune connexion de wallet, aucune inscription. Un point essentiel lorsque vous inspectez des calldata provenant d'une invite de dApp inconnue ou d'une transaction à laquelle vous ne faites pas encore confiance.

Ce que fait réellement le décodage ABI

Sur Ethereum, un appel de contrat n'est qu'un bloc d'octets. Les 4 premiers octets constituent le sélecteur de fonction — les 4 octets de tête du hash Keccak-256 de la signature canonique de la fonction, comme transfer(address,uint256), qui produit 0xa9059cbb. Tout ce qui suit ces 4 octets correspond aux arguments encodés, regroupés en blocs de 32 octets (256 bits).

Ce décodeur calcule les sélecteurs à partir de votre ABI grâce à une implémentation Keccak-256 intégrée, puis compare le sélecteur situé au début de vos calldata avec chaque fonction de l'ABI. Lorsqu'il trouve une correspondance, il découpe les octets restants en mots de 32 octets et interprète chacun selon le type déclaré du paramètre. Le résultat affiche le nom de la fonction, le sélecteur, ainsi qu'un détail par paramètre listant le nom, le type, la valeur décodée et le bloc brut de 32 octets dont elle provient.

Types de paramètres pris en charge

Le décodeur gère les types Solidity statiques (à taille fixe) les plus courants, chacun occupant exactement un bloc de 32 octets :

  • uint256 / uint et int — lus en big-endian et alignés à droite ; les valeurs int signées sont correctement interprétées grâce au complément à deux.
  • address — les 20 octets significatifs sont extraits depuis la droite du bloc, complété à gauche par des zéros.
  • bool — décodé en true ou false à partir du dernier octet.
  • bytes32 — affiché sous forme de valeur hexadécimale complète sur 32 octets.

Il tente également de décoder les types string et bytes, qui sont des types dynamiques encodés sous forme de pointeur d'offset vers une zone de données préfixée par sa longueur. Comme ces types et d'autres structures dynamiques (tableaux de longueur variable et tuples) utilisent un encodage en plusieurs parties, une imbrication complexe peut nécessiter une inspection manuelle plutôt qu'une valeur affichée proprement sur une seule ligne.

Un flux de travail concret

Cliquez sur Charger l'exemple de transfert ERC-20 pour voir un véritable appel transfer décodé de bout en bout : le sélecteur 0xa9059cbb, une adresse de destinataire et un montant en wei (par exemple 0xde0b6b3a7640000, soit exactement 1 token à 18 décimales). À partir de là, vous pouvez insérer vos propres données.

Des situations concrètes où cela fait gagner du temps :

  • Vérifier une invite de wallet — avant d'approuver une transaction, confirmez la fonction ainsi que le destinataire et le montant exacts, plutôt que de vous fier à une chaîne hexadécimale peu claire.
  • Déboguer un appel échoué ou inattendu — reconstituer les arguments réellement envoyés à un contrat.
  • Audit et rétro-ingénierie — inspecter des calldata récupérées sur un explorateur de blocs lorsque vous disposez de l'ABI mais pas d'une vue de code source vérifiée.

Un onglet distinct, Guide d'encodage ABI, explique les règles d'encodage — sélecteurs, blocs statiques et pointeurs de types dynamiques — afin que le résultat soit compréhensible même si vous débutez avec les données EVM de bas niveau.

Pour décoder, collez l'ABI sous forme de tableau JSON d'objets de fonction (chacun avec name, type et inputs), collez les calldata avec ou sans le préfixe 0x, puis appuyez sur Décoder. Si le sélecteur de tête ne correspond à aucune fonction de l'ABI, l'outil vous le signale — un indice rapide que vous utilisez la mauvaise ABI pour cette transaction.