Outil · Sécurité · 100 % local
Décodeur de calldata
Colle les données hexadécimales d'une transaction. L'outil décode la fonction et alerte sur les autorisations dangereuses.
Autorisation sans plafond : ce dépensier peut prendre tout le solde de ce token, maintenant ou plus tard. Vérifie son adresse.
| Champ | Valeur |
|---|---|
| Signature | approve(address,uint256) |
| Dépensier | 0xa1b2c3d4e5f60718293a4b5c6d7e8f9001122334 |
| Montant autorisé | 2^256 − 1 (maximum) |
Mode d'emploi
Un wallet affiche parfois une transaction sous forme de bloc hexadécimal. Ce bloc, le calldata, dit au contrat quelle fonction appeler et avec quels arguments. Cet outil le traduit pour six fonctions courantes, celles qu'on retrouve souvent dans les vols par signature. Il travaille hors ligne et ne simule rien.
La structure à lire
Les 4 premiers octets forment le sélecteur : le début du Keccak-256 de la signature de la fonction. Le texte approve(address,uint256) donne 0x095ea7b3. Viennent ensuite les arguments, chacun sur 32 octets. Une adresse occupe les 20 derniers octets de son mot, précédés de 12 octets nuls.
| Sélecteur | Fonction |
|---|---|
0xa9059cbb | transfer |
0x23b872dd | transferFrom |
0x095ea7b3 | approve |
0x39509351 | increaseAllowance |
0xa22cb465 | setApprovalForAll |
0xd505accf | permit (EIP-2612) |
Un exemple chiffré
L'exemple préchargé est un approve fictif. Son second mot contient 64 fois la lettre f, soit 2^256 − 1, le plus grand entier possible. Un token à 18 décimales n'aura jamais une telle quantité en circulation : cette valeur signifie « sans plafond », d'où l'alerte. Sur un token ERC-20, un approve à zéro est au contraire une révocation, comme l'explique notre page sur les approbations de tokens.
Les limites à connaître
Le calldata ne dit pas à quel contrat il s'adresse. Le token concerné se trouve dans le champ « to » de la transaction : compare-le aussi. Les montants sont en unités brutes. Il faut les diviser par 10 puissance les décimales du token, une information que le calldata ne contient pas.
Un même sélecteur peut servir à deux standards. approve et transferFrom ont la même signature en ERC-20 et en ERC-721 : sur un NFT, le dernier champ est un identifiant, pas un montant. Et un nom de fonction ne garantit pas le comportement : un contrat malveillant peut faire ce qu'il veut derrière transfer.
Un sélecteur inconnu n'est pas une preuve d'attaque. Les routeurs et les appels groupés cachent souvent d'autres actions à l'intérieur. Le réflexe vu avec les transactions de phishing reste valable : si tu ne peux pas lire, ne signe pas.
Questions fréquentes
Où trouver le calldata d'une transaction ?
Beaucoup de wallets l'affichent dans un onglet Données ou Hex de la fenêtre de confirmation. Un explorateur de blocs le montre aussi pour une transaction déjà envoyée, sous le nom Input Data.
Un permit passe-t-il par le calldata ?
Pas au moment où tu signes. Le propriétaire signe un message hors chaîne. Le calldata permit apparaît quand quelqu'un soumet cette signature au contrat. Dans la fenêtre de signature, vérifie donc les champs spender et value.
Si l'outil n'affiche pas d'alerte, puis-je signer ?
Non, ce n'est pas une garantie. L'outil ne connaît ni le contrat appelé, ni le dépensier, ni l'effet réel du code. Il rend les données lisibles, le jugement reste le tien.
Contenu éducatif. Pas un conseil en investissement. Les crypto-actifs comportent un risque de perte en capital.
Autres outils
- BitcoinCalculateur de frais BitcoinIndique le nombre d'entrées et de sorties, puis le tarif de ton choix. La taille et les frais s'affichent aussitôt.Ouvrir →
- BitcoinCompteur du prochain halving BitcoinUne estimation vivante, à la seconde, du temps restant avant le bloc 1 050 000. Corrige la hauteur pour affiner le calcul.Ouvrir →
- BitcoinCalculateur de confirmations BitcoinRègle la puissance de l'attaquant et le nombre de confirmations. La probabilité suit la formule de la section 11 du livre blanc.Ouvrir →