Une adresse de contrat est l'adresse d'un smart contract sur une blockchain. Elle est créée quand le contrat est déployé, elle n'a pas de clé privée, et c'est la chaîne que les gens désignent quand ils écrivent "CA" à côté d'un token.
Sur Ethereum et toutes les chaînes EVM, elle ressemble exactement à une adresse de wallet : 0x suivi de 40 caractères hexadécimaux. Un token comme USDT ou USDC est un contrat, donc l'adresse du token est une adresse de contrat. Ce qui diffère d'une adresse de wallet, c'est ce qui se trouve derrière : du code et du stockage plutôt qu'une personne détenant une clé privée.
Le terme apparaît à trois endroits : quand vous ajoutez manuellement un token à un wallet, quand un block explorer signale une adresse comme un contrat, et quand quelqu'un publie le CA d'un nouveau coin. Ce guide explique ce que l'adresse identifie, comment elle est générée, comment la distinguer d'une adresse de wallet, où trouver la vraie adresse d'un token et ce qui se passe si vous envoyez des fonds à l'une d'elles.
La version courte
- Une adresse de contrat pointe vers du code ; une adresse de wallet pointe vers le détenteur d'une clé. Les deux ont le même format sur les chaînes EVM, le format seul ne permet donc pas de les distinguer. Un block explorer ou un appel eth_getCode, si.
- Sur les chaînes EVM, l'adresse est 0x + 40 caractères hexadécimaux, dérivée de l'adresse et du nonce du déployeur, ou d'un sel (salt) avec CREATE2. Tron utilise 34 caractères commençant par T, Solana une adresse de mint en base58.
- Copiez l'adresse d'un token depuis le site ou la documentation de l'émetteur, puis vérifiez que l'explorer affiche un code source vérifié, de nombreux détenteurs et un long historique. Les tokens frauduleux reprennent des noms et des symboles réels.
- La plupart des contrats de token ne peuvent pas renvoyer les tokens envoyés à leur propre adresse. Les dépôts vont vers une adresse de wallet ; vous interagissez avec un contrat via une dApp ou un wallet qui connaît ses fonctions.
1. Qu'est-ce qu'une adresse de contrat ?
Chaque compte sur Ethereum, et sur les chaînes construites sur le même modèle, a une adresse. Il existe deux types de comptes. Un compte externe (externally owned account) appartient à celui qui détient sa clé privée. Un compte de contrat contient un programme et les données que ce programme conserve, et son adresse est l'adresse de contrat. La documentation d'ethereum.org le dit directement : les comptes de contrat n'ont pas de clé privée ; ils sont contrôlés par la logique du code du smart contract.
Un contrat est déployé une seule fois par une transaction, reçoit son adresse à ce moment-là et la garde aussi longtemps que la chaîne existe. N'importe qui peut envoyer une transaction à cette adresse pour appeler l'une des fonctions du contrat. Un transfert de token ou un swap sur une plateforme d'échange décentralisée est une transaction adressée à un contrat.
Les tokens sont le cas le plus courant. USDT, USDC, WETH et tous les autres tokens ERC-20 sont des contrats qui tiennent une table de soldes. L'adresse du token est donc une adresse de contrat, et c'est la seule information dont un wallet a besoin pour afficher un token qu'il ne connaît pas encore.
2. Que signifie "CA" en crypto ?
CA signifie contract address, l'adresse de contrat. Sur X, Telegram et Discord, un message sur un nouveau token se termine généralement par CA suivi de l'adresse, parce que le nom et le ticker d'un token ne sont pas uniques, contrairement à l'adresse. Les sites de trading et les wallets utilisent la même abréviation.
Sur Solana, le CA est l'adresse de mint du token, le compte qui définit l'offre et le nombre de décimales du token. Sur Ethereum, BNB Chain, Base et les autres réseaux EVM, c'est l'adresse du contrat ERC-20 ou BEP-20. Dans les deux cas, l'adresse est ce que vous collez dans un wallet ou un explorer pour atteindre exactement le token dont quelqu'un parle. C'est aussi pourquoi les faux CA sont une arnaque courante : un token imitant le vrai, avec le même nom, a une adresse différente.
3. À quoi ressemble une adresse de contrat ?
Le format dépend de la chaîne, et c'est le même format que la chaîne utilise pour les adresses de wallet. Voici les adresses officielles de deux stablecoins très utilisés, prises sur les pages des émetteurs :
| Réseau | Token | Adresse de contrat | Format |
|---|---|---|---|
| Ethereum | USDT (ERC-20) | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 0x + 40 caractères hexadécimaux |
| Ethereum | USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | 0x + 40 caractères hexadécimaux |
| Base | USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0x + 40 caractères hexadécimaux |
| Arbitrum One | USDC | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 | 0x + 40 caractères hexadécimaux |
| Polygon PoS | USDC | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | 0x + 40 caractères hexadécimaux |
| Tron | USDT (TRC-20) | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | 34 caractères base58check commençant par T |
| Solana | USDC (adresse de mint) | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | 32 à 44 caractères base58 |
Les entrées Ethereum, Base, Arbitrum et Polygon viennent de la liste des adresses de contrat USDC de Circle, les entrées USDT de la page des protocoles pris en charge de Tether. USDC a une adresse différente sur chaque chaîne : le même nom ne signifie pas le même contrat. Les majuscules et les minuscules d'une adresse EVM forment une somme de contrôle (checksum) définie dans la norme EIP-55. La forme tout en minuscules est la même adresse, et les explorers comme les wallets acceptent les deux.
Bitcoin n'a pas d'adresses de contrat. Une adresse Bitcoin qui commence par 3 ou bc1 peut encoder un script, mais aucun programme ne vit à cette adresse pour qu'on l'appelle. Le concept appartient aux chaînes basées sur des comptes comme Ethereum, Tron et Solana.
4. Adresse de contrat vs adresse de wallet : quelle est la différence ?
Sur une chaîne EVM, les deux ont la même apparence, la distinction tient donc à ce qui contrôle l'adresse.
| Adresse de wallet (externally owned account) | Adresse de contrat | |
|---|---|---|
| Contrôlée par | Une clé privée, généralement dérivée d'une seed phrase | Le code du contrat ; il n'y a pas de clé privée |
| Peut initier une transaction | Oui | Non. Le code ne s'exécute que lorsqu'une transaction ou un autre contrat l'appelle |
| Contient du code | Non, sauf si elle délègue à du code via l'EIP-7702 | Oui, plus son propre stockage |
| Comment elle est créée | Gratuitement : dérivée d'une clé publique, sans transaction | Par une transaction de déploiement qui paie du gas |
| Usage typique | Recevoir des fonds, signer des transactions | Tokens, plateformes d'échange, pools de prêt, collections de NFT, bridges |
| Sur un block explorer | Affichée comme une adresse normale | Signalée comme un contrat, avec un onglet Contract |
La seule zone grise s'appelle EIP-7702, en vigueur sur Ethereum depuis la mise à jour Pectra de mai 2025. Elle permet à une adresse de wallet de s'attacher du code délégué pour regrouper des appels ou laisser quelqu'un d'autre payer ses frais. La clé contrôle toujours le compte et le compte peut toujours envoyer des transactions, elle reste donc une adresse de wallet avec du code attaché.
Pour les distinguer, ouvrez l'adresse sur un block explorer : un contrat a un onglet Contract, une adresse de créateur et, si la source a été publiée, du code vérifié. Dans du code, la méthode JSON-RPC eth_getCode renvoie le bytecode stocké à une adresse, et seulement 0x pour une adresse de wallet. Le guide Etherscan montre où se trouve chacun de ces onglets.
5. Comment une adresse de contrat est-elle générée ?
L'adresse est calculée, pas choisie, et chaque chaîne a sa propre règle :
- Ethereum et chaînes EVM (CREATE)
- L'adresse correspond aux 20 derniers octets du hash Keccak-256 de l'adresse du déployeur et de son nonce, le nombre de transactions que cette adresse a envoyées. Déployer deux fois depuis le même compte donne deux adresses différentes parce que le nonce a avancé entre-temps.
- Ethereum et chaînes EVM (CREATE2)
- Un contrat peut déployer un autre contrat à une adresse calculée à partir de sa propre adresse, d'un sel (salt) qu'il choisit et du hash du code de création : keccak256(0xff ++ address ++ salt ++ keccak256(init_code))[12:]. L'adresse est connue avant tout déploiement, et c'est ainsi qu'un même contrat peut apparaître à la même adresse sur de nombreuses chaînes.
- Tron
- Une adresse Tron fait 21 octets avec un 0x41 en tête, affichés sous forme de 34 caractères base58check commençant par T. Les adresses de contrat utilisent le même format que les adresses de wallet et sont dérivées de l'ID de la transaction de déploiement et de l'adresse du déployeur.
- Solana
- L'adresse d'un programme est la clé publique du compte qui stocke son code exécutable. Un token est identifié par l'adresse de son compte de mint, qui appartient au Token Program. Le wallet qui détient le token reçoit un compte de token distinct pour chaque mint.
Les règles se trouvent dans la documentation d'ethereum.org sur les comptes, dans la proposition EIP-1014 pour CREATE2, dans la référence des comptes Tron et dans la documentation des tokens Solana.
6. Une adresse de token est-elle la même chose qu'une adresse de contrat ?
Sur les chaînes EVM, oui. Une adresse de token est l'adresse de contrat du contrat du token, et les wallets, les explorers et les plateformes d'échange utilisent les deux noms pour la même chaîne de caractères. Ajouter un token personnalisé à un wallet revient à coller cette adresse ; le wallet lit ensuite le symbole et le nombre de décimales dans le contrat lui-même, ce qui explique qu'une mauvaise adresse affiche un mauvais token plutôt qu'une erreur.
Deux cas ont besoin d'un identifiant supplémentaire. Un NFT est identifié par l'adresse de contrat de la collection plus un token ID, puisqu'un seul contrat contient toute la collection. Sur Solana, l'adresse de token est l'adresse de mint, et le solde que vous possédez vit dans un compte de token lié à votre wallet plutôt qu'au mint.
7. Comment trouver l'adresse de contrat d'un token ?
Prenez-la à une source contrôlée par l'émetteur, puis confirmez-la sur un explorer.
- Le site ou la documentation de l'émetteur
- Les émetteurs de stablecoins, les protocoles et la plupart des projets publient leurs adresses par chaîne. Circle et Tether tiennent chacun une page pour USDC et USDT, et les entrées du tableau ci-dessus en viennent.
- CoinMarketCap et CoinGecko
- La page du token liste l'adresse de contrat pour chaque chaîne sous Contracts, avec un bouton de copie et un lien vers l'explorer.
- Un block explorer
- Cherchez le nom du token sur Etherscan, BscScan, Polygonscan, Tronscan ou Solscan. Les explorers signalent le token établi et affichent le nombre de détenteurs ; une copie portant le même nom avec dix détenteurs est un autre token.
- Votre wallet ou votre plateforme d'échange
- Les wallets affichent l'adresse dans l'écran de détails du token. Les plateformes d'échange l'affichent sur les pages de dépôt et de retrait, avec le réseau auquel l'adresse appartient.
Copiez la chaîne entière et gardez le réseau avec elle. Une adresse USDC de Base ne veut rien dire sur Arbitrum, et un explorer affiche une adresse vide si vous la cherchez sur la mauvaise chaîne.
8. Comment vérifier qu'une adresse de contrat est légitime ?
Le nom et le symbole d'un token sont du texte libre dans le contrat, n'importe qui peut donc déployer un second USDC. Ces vérifications séparent le vrai contrat des copies :
- Comparez-la avec celle de l'émetteur
- L'adresse doit être identique, caractère pour caractère, à celle du site ou de la documentation de l'émetteur. Comparez plus que les premiers et les derniers caractères ; les adresses ressemblantes sont générées pour partager exactement ceux-là.
- Cherchez un code source vérifié
- Sur Etherscan et les explorers similaires, l'onglet Contract indique si le déployeur a publié la source et si l'explorer l'a recompilée pour la faire correspondre au bytecode. Un bytecode non vérifié est un signal d'alerte pour tout token largement utilisé.
- Vérifiez les détenteurs, l'âge et l'activité
- Un vrai contrat de stablecoin a des millions de transferts et des années d'historique. Un contrat déployé la semaine dernière, avec une poignée de détenteurs et sans source vérifiée, est un autre token, quel que soit son nom.
- Lisez les règles du token
- Les explorers et les scanners de tokens signalent les contrats dont le propriétaire peut minter librement, suspendre les transferts, changer les frais ou bloquer la vente. Un contrat proxy garde son adresse mais peut changer d'implémentation, vérifiez donc qui contrôle la mise à jour.
- Recoupez la chaîne
- Le même projet a des adresses différentes sur des chaînes différentes, assurez-vous donc que l'explorer, le wallet et la source parlent tous du même réseau.
Le guide Etherscan passe en revue l'onglet Contract et les vues Read Contract et Write Contract utilisées pour ces vérifications.
9. Puis-je envoyer des cryptos à une adresse de contrat ?
Vous le pouvez, et le résultat dépend du contrat. Déposer dans un pool de prêt, acheter sur une plateforme d'échange décentralisée ou minter un NFT fonctionne à chaque fois en envoyant une transaction à un contrat, généralement avec un appel de fonction joint, via un wallet ou une dApp qui connaît l'interface du contrat.
Envoyer des tokens à l'adresse de contrat du token lui-même est l'erreur à éviter. Le standard ERC-20 définit des fonctions de transfert, d'approbation et de solde, et rien qui permette au contrat de rendre des tokens, donc les coins envoyés par erreur à un contrat de token sont normalement perdus, sauf si l'émetteur a prévu une fonction de récupération et accepte de l'utiliser. Il en va de même pour la plupart des contrats qui n'ont jamais été conçus pour recevoir de simples transferts : certains les rejettent, d'autres les acceptent en silence.
Quand une plateforme d'échange ou une personne demande un dépôt, elle vous donne une adresse de wallet. Quand un protocole veut que vous interagissiez avec lui, la dApp construit la transaction pour vous. Si vous vous surprenez à coller l'adresse de contrat d'un token dans le champ destinataire d'un transfert, arrêtez-vous et vérifiez ce que vous faites.
10. Une adresse de contrat est-elle la même sur toutes les blockchains ?
Non, sauf si le déployeur l'a voulu ainsi. Le tableau USDC ci-dessus montre quatre adresses différentes sur quatre chaînes EVM pour le même actif, parce que chaque déploiement était une transaction distincte depuis un compte avec un nonce différent. Les versions d'un token passées par un bridge, souvent marquées d'un suffixe comme .e, ont leurs propres adresses, un explorer peut donc afficher plus d'un token appelé USDC sur un même réseau.
Des adresses identiques d'une chaîne à l'autre sont possibles grâce à CREATE2, ou en rejouant la même transaction de déploiement signée depuis un compte neuf sur chaque chaîne. Multicall3, un contrat utilitaire utilisé par les wallets et les bibliothèques, se trouve pour cette raison à 0xcA11bde05977b3631167028862bE2a173976CA11 sur plus d'une centaine de chaînes, comme sa liste de déploiements le montre. La plupart des tokens ne sont pas déployés de cette façon, cherchez donc l'adresse sur la chaîne que vous utilisez.
Si vous ne savez pas à quel réseau un wallet est connecté, la liste des chain ID associe chaque chain ID à son réseau et à son explorer.
11. Vérifier une adresse dans du code
Une application qui laisse les utilisateurs coller une adresse de token ou de destinataire devrait valider le format avant de construire une transaction. Le SDK ChainGate valide les adresses pour Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash et tout réseau EVM que vous enregistrez, et il rejette une adresse EVM dont la somme de contrôle en casse mixte ne correspond pas :
import { ChainGate, isValidEvmAddress } from 'chaingate';
const cg = new ChainGate({ apiKey: process.env.CHAINGATE_API_KEY });
// Format checks: true for a well-formed address, false otherwise
cg.networks.ethereum.isValidAddress('0xdAC17F958D2ee523a2206206994597C13D831ec7'); // true (USDT contract)
cg.networks.ethereum.isValidAddress('0xD8DA6bf26964af9d7eed9e03e53415d37aa96045'); // false (EIP-55 checksum does not match)
isValidEvmAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'); // true (USDC contract)
// Bitcoin: validate and classify the address type
cg.networks.bitcoin.isValidAddress('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'); // true
cg.networks.bitcoin.identifyAddressType('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'); // 'segwit-p2wpkh'La validation du format dit que la chaîne est une adresse bien formée ; elle ne dit pas si du code s'y trouve. Pour cela, appelez eth_getCode sur un endpoint RPC : un contrat renvoie son bytecode et une adresse de wallet renvoie 0x. La documentation sur la validation d'adresse liste tous les réseaux pris en charge et les types d'adresses Bitcoin que le SDK reconnaît.
12. Pour aller plus loin
Une adresse de contrat vous dit à quel programme vous parlez, le hash de transaction vous dit quel appel vous avez fait, et le guide Etherscan montre comment lire les deux sur un explorer. Chaque appel à un contrat coûte du gas, et le gas tracker montre ce que cela coûte en ce moment sur chaque réseau. Si vous voulez que la validation d'adresse, les soldes et les transferts soient gérés sur Bitcoin, Ethereum et les autres réseaux depuis un seul SDK, ChainGate le fait.
Questions fréquentes
Qu'est-ce qu'une adresse de contrat en crypto ?
L'adresse blockchain d'un smart contract : un programme déployé par une transaction, avec son propre stockage et sans clé privée. Les tokens, les plateformes d'échange décentralisées, les pools de prêt et les collections de NFT sont des contrats, chacun a donc une adresse de contrat. Sur Ethereum et les autres chaînes EVM, c'est 0x suivi de 40 caractères hexadécimaux, le même format qu'une adresse de wallet.
Que signifie CA en crypto ?
CA est l'abréviation de contract address, l'adresse de contrat. On la publie à côté du nom d'un token parce que les noms et les tickers ne sont pas uniques, contrairement à l'adresse. Sur Solana, le CA est l'adresse de mint du token ; sur Ethereum, BNB Chain ou Base, c'est l'adresse du contrat du token.
Une adresse de contrat est-elle la même chose qu'une adresse de wallet ?
Non. Une adresse de wallet est contrôlée par une clé privée et peut initier des transactions. Une adresse de contrat est contrôlée par le code déployé à cette adresse, n'a pas de clé privée et n'agit que lorsqu'une transaction l'appelle. Sur les chaînes EVM, les deux ont le même format 0x, on les distingue donc sur un block explorer, où les contrats ont un onglet Contract, ou avec l'appel RPC eth_getCode, qui renvoie 0x pour une adresse de wallet.
À quoi ressemble une adresse de contrat ?
Ethereum, BNB Chain, Polygon, Arbitrum, Base et les autres chaînes EVM : 0x plus 40 caractères hexadécimaux, par exemple USDT à 0xdAC17F958D2ee523a2206206994597C13D831ec7. Tron : 34 caractères base58check commençant par T, par exemple USDT à TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t. Solana : une adresse de mint en base58 de 32 à 44 caractères, par exemple USDC à EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.
Comment trouver l'adresse de contrat d'un token ?
Prenez-la sur le site ou dans la documentation de l'émetteur, ou dans la section Contracts de la page du token sur CoinMarketCap ou CoinGecko, puis confirmez-la sur le block explorer de la même chaîne : un code source vérifié, un grand nombre de détenteurs et un long historique de transferts désignent le vrai contrat. Les wallets affichent l'adresse dans l'écran de détails du token, et les plateformes d'échange sur leurs pages de dépôt.
Comment savoir si une adresse est un contrat ?
Ouvrez-la sur un block explorer. La page d'un contrat affiche un onglet Contract, l'adresse du créateur et, si elle a été publiée, la source vérifiée. Dans du code, la méthode RPC eth_getCode renvoie le bytecode pour un contrat et 0x pour une adresse de wallet.
Puis-je envoyer des tokens à une adresse de contrat ?
Seulement quand le contrat est conçu pour les recevoir, comme un pool de prêt ou une plateforme d'échange, et généralement via une dApp qui joint le bon appel de fonction. Envoyer des tokens à l'adresse de contrat du token lui-même les fait normalement perdre, parce que le standard ERC-20 n'a aucune fonction pour les renvoyer. Les dépôts sur les plateformes d'échange et les paiements à des personnes vont toujours vers une adresse de wallet.
Qu'est-ce qu'une adresse de token ?
L'adresse de contrat du smart contract du token. Les wallets, les explorers et les plateformes d'échange utilisent adresse de token et adresse de contrat pour la même chaîne de caractères. Sur Solana, l'adresse de token est l'adresse de mint ; un NFT est identifié par l'adresse de contrat de sa collection plus un token ID.
Une adresse de contrat est-elle la même sur toutes les chaînes ?
Pas par défaut. USDC a une adresse différente sur Ethereum, Base, Arbitrum et Polygon parce que chaque déploiement est une transaction distincte. Les projets peuvent obtenir des adresses identiques sur de nombreuses chaînes grâce à CREATE2 ou en rejouant le même déploiement signé, comme le fait Multicall3, mais vous devriez toujours chercher l'adresse sur la chaîne que vous utilisez.
Un smart contract a-t-il une clé privée ?
Non. Un compte de contrat est contrôlé par son code. Si le code comporte des fonctions réservées au propriétaire (owner), ce propriétaire est une adresse distincte, généralement un wallet ou un multisig, qui détient ses propres clés. Un contrat dont la propriété a été abandonnée (renounced) n'a plus personne qui puisse le modifier.
Construisez avec ChainGate
Mettez ces idées en pratique — ChainGate fournit wallets, transactions et RPC managé pour Ethereum et plus de 20 autres blockchains en une seule installation.