Une adresse EIP-55 est une adresse Ethereum qui utilise un motif spécifique de lettres majuscules et minuscules pour intégrer un contrôle d'erreur. La casse mixte n'est ni aléatoire ni cosmétique. Il s'agit d'un hachage keccak-256 appliqué aux caractères hexadécimaux afin que les portefeuilles puissent détecter une adresse mal saisie avant que vous n'envoyiez des fonds au mauvais endroit. Si vous vous êtes déjà demandé ce qu'est une adresse EIP-55, voici la version courte : c'est la même adresse de 40 caractères que vous connaissez déjà, avec la casse agissant comme un détecteur de fautes de frappe gratuit.
Les adresses Ethereum ne sont pas sensibles à la casse au niveau du protocole, donc le réseau traite 0xabc... et 0xABC... comme le même compte. EIP-55 ajoute une couche supplémentaire où le motif exact des majuscules contient des informations. Si une lettre a une mauvaise casse, un portefeuille conforme refuse l'adresse comme invalide. Cette simple protection a évité d'innombrables erreurs irréversibles.
Qu'est-ce qu'une adresse EIP-55 avec somme de contrôle ?#
Une adresse Ethereum brute fait 20 octets, affichée sous forme de chaîne hexadécimale de 40 caractères après le préfixe 0x. L'hexadécimal utilise les chiffres de 0 à 9 et les lettres de a à f. Les chiffres n'ont pas de casse, mais ces six lettres en ont, et c'est l'espace qu'exploite l'EIP-55.
La proposition, rédigée par Vitalik Buterin en 2016, définit une règle : hacher l'adresse en minuscules avec keccak-256, puis utiliser ce hachage pour décider quelles lettres sont mises en majuscule. Le résultat ressemble à ceci.
Minuscules : 0x52908400098527886e0f7030069857d2e4169ee7
EIP-55 : 0x52908400098527886E0F7030069857D2E4169EE7
Les deux chaînes pointent vers le même compte. La seconde encode simplement une somme de contrôle dans sa casse. Un portefeuille qui comprend l'EIP-55 peut recalculer la casse attendue et confirmer que rien n'a été modifié en transit.
Point clé : la casse ne change pas l'adresse. C'est une métadonnée intégrée dans les caractères. La blockchain l'ignore ; votre logiciel de portefeuille l'utilise pour détecter les erreurs.
Pourquoi les adresses Ethereum sont en casse mixte#
Avant l'EIP-55, les adresses Ethereum étaient toutes en minuscules. Une seule erreur de frappe produisait une autre adresse d'apparence parfaitement valide, sans moyen de le savoir. Bitcoin avait des sommes de contrôle dès le départ grâce à son encodage base58check, mais Ethereum non, donc la communauté avait besoin d'un correctif rétrocompatible qui ne casserait pas les millions d'adresses en minuscules existantes.
La casse mixte a été la réponse élégante. Les anciennes adresses en minuscules fonctionnent toujours partout, et les nouvelles adresses avec somme de contrôle ajoutent une protection sans changer la longueur, le préfixe ou les octets sous-jacents. Rien dans le protocole n'a dû changer, c'est pourquoi l'EIP-55 a été adoptée presque universellement par les portefeuilles et les explorateurs.
Comment fonctionne la somme de contrôle keccak-256#
C'est la partie que la plupart des explications omettent ou enterrent dans du code. La règle elle-même est simple : pour chaque lettre dans l'adresse en minuscules, regardez le caractère correspondant dans le hachage keccak-256 de cette adresse. Si le caractère du hachage est 8 ou plus, mettez la lettre en majuscule. S'il est 7 ou moins, laissez-la en minuscule. Les chiffres ne changent jamais car ils n'ont pas de casse.
Étape par étape, avec un exemple concret#
- Supprimez le préfixe et mettez en minuscules. Commencez avec les 40 caractères hexadécimaux après
0x, tous en minuscules. - Appliquez keccak-256 sur le texte ASCII de cette chaîne. Détail important : vous hachez l'adresse sous forme de caractères texte, pas d'octets bruts. Cela piège les développeurs qui hachent la mauvaise chose.
- Alignez les chiffres du hachage avec les caractères de l'adresse. Le hachage est également hexadécimal, donc chaque caractère d'adresse a un caractère de hachage correspondant à la même position.
- Appliquez la règle de casse. Pour chaque caractère alphabétique (a-f), si son chiffre de hachage correspondant est 8, 9, a, b, c, d, e ou f, écrivez-le en majuscule. Sinon, gardez-le en minuscule. Laissez 0-9 inchangés.
Parcourez les premiers caractères d'une adresse dont la forme minuscule commence par 0x5aaeb6.... Supposons que le hachage keccak-256 de la chaîne minuscule commence par 38bf.... Le premier caractère d'adresse est 5, un chiffre, donc il reste 5. Le suivant est a, et le chiffre de hachage correspondant est 8, qui est 8 ou plus, donc il devient majuscule A. Le a suivant correspond au chiffre de hachage 3, inférieur à 8, donc il reste minuscule a. C'est ainsi que vous obtenez le motif 5aA au début.
Répétez sur les 40 caractères et vous obtenez l'adresse avec somme de contrôle. Pour en vérifier une, exécutez exactement le même processus et vérifiez que la casse que vous avez calculée correspond à celle qui vous a été donnée.
Vérifiez avant de faire confiance : vous n'avez pas besoin de le faire à la main. Un validateur de portefeuille crypto recalcule la somme de contrôle keccak-256 pour vous et vous indique instantanément si une adresse est valide, malformée ou a une mauvaise somme de contrôle.
Pourquoi l'EIP-55 détecte les fautes de frappe#
L'astuce réside dans la probabilité. Comme environ la moitié des lettres hexadécimales d'une adresse typique sont mises en majuscule en fonction du hachage, toute modification, même d'un seul caractère, se répercute sur l'ensemble de la sortie keccak-256 et produit presque toujours une incohérence de casse quelque part dans la chaîne.
Le chiffre souvent cité est que l'EIP-55 détecte une adresse erronée avec une probabilité d'environ 99,986 % pour une erreur d'un seul caractère. En termes simples, si vous faites une faute de frappe sur une lettre en copiant une adresse, un portefeuille avec checksum la rejette dans la grande majorité des cas. C'est la différence entre une erreur détectée et des fonds perdus à jamais.
Ce qu'elle ne protège pas mérite d'être dit clairement :
- Elle ne peut pas détecter une adresse erronée mais valide. Si vous collez accidentellement l'adresse correcte et checksummée de quelqu'un d'autre, l'EIP-55 ne voit rien d'anormal. Le checksum vérifie l'intégrité, pas l'intention.
- Elle n'est utile que si l'adresse est checksummée. Une adresse entièrement en minuscules n'a pas de checksum à vérifier, donc les portefeuilles l'acceptent sans la protection contre les fautes de frappe.
- Elle n'arrête pas les logiciels malveillants de presse-papiers. Les logiciels malveillants qui remplacent les adresses remplacent l'adresse copiée par une adresse valide d'un attaquant qui a son propre checksum correct.
EIP-55 vs EIP-1191 : La mise à niveau du Chain ID#
EIP-55 a un successeur qui mérite d'être connu si vous travaillez sur plusieurs réseaux. EIP-1191 étend l'idée originale en intégrant le chain ID dans le hash avant de calculer la casse.
La motivation était la sécurité inter-chaînes. Le même format d'adresse est utilisé sur Ethereum mainnet, Polygon, BNB Smart Chain et de nombreuses autres chaînes EVM, et un checksum EIP-55 simple est identique sur toutes. Il ne peut pas vous indiquer si une adresse a été checksummée pour la chaîne que vous souhaitez utiliser. EIP-1191 ajoute le chain ID au texte de l'adresse avant le hachage, produisant une casse spécifique à la chaîne.
| Fonctionnalité | EIP-55 | EIP-1191 |
|---|---|---|
| Entrée du hash | Adresse en minuscules uniquement | Chain ID + adresse en minuscules |
| Sensibilité à la chaîne | Aucune, identique sur chaque chaîne EVM | La casse diffère selon la chaîne |
| Adoption | Quasi universelle | Partielle, principalement RSK et quelques chaînes |
| Rétrocompatible | Oui | En grande partie, mais le mainnet a conservé EIP-55 |
En pratique, Ethereum mainnet est resté avec le classique EIP-55, c'est pourquoi la plupart des outils que vous rencontrez utilisent l'algorithme original. EIP-1191 a été réellement adopté sur des réseaux comme RSK. Si un portefeuille signale une adresse mainnet parfaitement valide comme ayant un checksum erroné, un décalage de chain ID dû à une implémentation EIP-1191 en est une cause probable.
Erreurs courantes "Adresse à somme de contrôle invalide"#
Si vous obtenez une erreur "mauvaise somme de contrôle d'adresse" ou "adresse à somme de contrôle invalide", l'une de ces causes est généralement en jeu.
- Vous avez modifié la casse manuellement. Changer une majuscule en minuscule (ou vice versa) casse la somme de contrôle, même si l'adresse pointe toujours vers le même compte. Copiez et collez l'adresse complète plutôt que de la retaper.
- Un caractère a été tronqué ou dupliqué. Un caractère manquant ou supplémentaire décale tout et échoue presque toujours à la vérification. C'est exactement le type de faute de frappe que l'EIP-55 est conçu pour détecter.
- L'outil attend une entrée avec somme de contrôle et vous avez collé en minuscules. Certaines bibliothèques rejettent les adresses entièrement en minuscules en mode strict car elles ne peuvent pas vérifier une somme de contrôle absente. Passez l'adresse dans un outil de somme de contrôle pour ajouter la casse correcte.
- Un décalage d'ID de chaîne (EIP-1191). Une adresse avec somme de contrôle pour une chaîne peut échouer à la validation sur un outil qui attend la casse EIP-55 du réseau principal, et vice versa.
La solution sûre dans tous les cas est de ne jamais modifier une adresse que vous avez reçue. Copiez-la en entier, collez-la en entier, et laissez votre portefeuille ou un validateur confirmer la somme de contrôle. Si vous traitez également avec des adresses de jetons et souhaitez confirmer qu'un contrat est légitime avant d'interagir avec lui, un vérificateur de contrat de jeton inspecte le contrat lui-même, ce qui constitue une couche de sécurité distincte du formatage de l'adresse.
Comment vérifier vous-même une adresse EIP-55#
Vous avez trois options pratiques.
La plus rapide est un outil en ligne. Collez l'adresse dans un validateur, il recalcule le hachage keccak-256, applique la règle de casse et vous indique si le checksum est valide. C'est le choix idéal pour ceux qui ne codent pas, et c'est la même logique qu'un portefeuille exécute en interne avant d'autoriser une transaction.
Pour les développeurs, les bibliothèques le font en une ligne. Ethers.js expose getAddress(), qui lève une exception en cas de checksum invalide et retourne l'adresse correctement formatée sinon. Web3.py propose to_checksum_address(), et viem fournit également getAddress(). Si vous déboguez le hex brut ou la couche d'encodage d'une adresse, un encodeur base64 et hex aide à vérifier la représentation octet parallèlement au checksum.
La troisième option est de le faire manuellement avec n'importe quelle implémentation de keccak-256, en suivant les quatre étapes de l'exemple détaillé. C'est rarement nécessaire, mais c'est le moyen le plus sûr de comprendre ce que la casse encode.
Adresses EIP-55 Checksum, en bref#
Qu'est-ce qu'une adresse EIP-55 checksum : c'est une adresse Ethereum normale dont les lettres majuscules/minuscules encodent une somme de contrôle keccak-256, transformant la casse en un détecteur de fautes de frappe intégré. Cela ne coûte rien, ne casse rien, et détecte la grande majorité des erreurs d'un seul caractère avant qu'elles ne vous coûtent de l'argent réel.
Les points pratiques à retenir :
- Considérez la casse comme essentielle. Ne retapez jamais et ne "nettoyez" jamais une adresse à la main. Copiez et collez-la en entier.
- Préférez les adresses checksum. Une adresse en casse mixte offre une protection qu'une adresse tout en minuscules n'a pas.
- Vérifiez avant d'envoyer. Passez toute adresse que vous allez financer dans un validateur de portefeuille crypto, confirmez que la somme de contrôle EIP-55 est valide, puis envoyez. Quelques secondes de vérification sont l'assurance la moins chère en crypto.
Foire aux questions#
Qu'est-ce qu'une adresse de somme de contrôle EIP-55 ? Il s'agit d'une adresse Ethereum qui utilise un motif spécifique de lettres hexadécimales majuscules et minuscules pour encoder une somme de contrôle keccak-256. La casse ne modifie pas le compte vers lequel l'adresse pointe. Elle permet aux portefeuilles de détecter une adresse mal saisie ou modifiée avant d'envoyer des fonds, car une erreur d'un seul caractère brise presque toujours la capitalisation attendue.
Pourquoi les adresses Ethereum sont-elles en majuscules et minuscules ? La casse mixte provient d'EIP-55, introduit en 2016 pour ajouter une protection contre les fautes de frappe aux adresses qui étaient auparavant entièrement en minuscules. Chaque lettre hexadécimale est capitalisée en fonction du hachage keccak-256 de l'adresse, de sorte que le motif de casse agit comme une somme de contrôle. Les anciennes adresses en minuscules fonctionnent toujours, mais la version à casse mixte ajoute une vérification d'erreur gratuite.
Une adresse Ethereum en minuscules est-elle toujours valide ? Oui. Le protocole Ethereum ne tient pas compte de la casse, donc une adresse entièrement en minuscules pointe vers le même compte et fonctionne sur le réseau. La seule chose que vous perdez est la protection contre les fautes de frappe EIP-55, car il n'y a pas de casse de somme de contrôle à vérifier. Certains outils stricts rejettent les entrées en minuscules jusqu'à ce que vous les convertissiez en forme de somme de contrôle.
Qu'est-ce qui provoque une erreur "adresse de somme de contrôle invalide" ? L'erreur signifie que la casse ne correspond pas à ce que keccak-256 calcule pour l'adresse. Les causes courantes sont la modification manuelle de la capitalisation, un caractère tronqué ou dupliqué, le collage d'une adresse en minuscules dans un outil qui nécessite une entrée de somme de contrôle, ou une incompatibilité d'ID de chaîne provenant d'une implémentation EIP-1191. Recopiez l'adresse d'origine et validez-la plutôt que de corriger la casse manuellement.
Quelle est la différence entre EIP-55 et EIP-1191 ? EIP-55 ne hache que l'adresse en minuscules pour décider de la casse, de sorte que la même adresse semble identique sur chaque chaîne EVM. EIP-1191 mélange d'abord l'ID de chaîne dans le hachage, produisant une casse spécifique à la chaîne qui peut signaler lorsqu'une adresse a été soumise à une somme de contrôle pour le mauvais réseau. Le réseau principal Ethereum utilise le classique EIP-55, tandis que EIP-1191 a été adopté sur des chaînes comme RSK.
EIP-55 peut-il me protéger contre l'envoi vers le mauvais portefeuille ? Seulement partiellement. Il détecte les fautes de frappe et les caractères modifiés avec une très haute probabilité, environ 99,986 % pour une erreur d'un seul caractère. Il ne peut pas aider si vous collez une adresse valide mais non intentionnelle, et il n'empêche pas les logiciels malveillants qui échangent le contenu du presse-papiers. Vérifiez toujours l'adresse complète via un validateur et revérifiez le destinataire avant d'envoyer.


