L'ERC-223 est un standard de tokens pour Ethereum et les autres chaînes EVM, écrit par Dexaran en 2017. Il fait se comporter les tokens comme l'ether : quand vous envoyez des tokens ERC-223 à un smart contract, le contrat est notifié et peut les accepter ou les refuser, si bien que les tokens envoyés au mauvais contrat ne sont pas perdus. Un dépôt se fait en une seule transaction, sans étape d'approbation.
L'ERC-223 ajoute une règle aux transferts de tokens : si le destinataire est un smart contract, le token le consulte d'abord. Les portefeuilles fonctionnent comme avant.
Vous appelez transfer(to, amount), la même fonction et la même signature qu'en ERC-20 : n'importe quel portefeuille peut donc envoyer des tokens ERC-223.
Si le destinataire est un smart contract, le token appelle sa fonction tokenReceived, comme l'ether déclenche la fonction receive d'un contrat.
Un contrat prévu pour le token traite le dépôt. Un contrat qui ne l'est pas annule la transaction, et les tokens restent dans votre portefeuille.
// Contrat récepteur ERC-223 (EIP-223)
function tokenReceived(address _from, uint _value, bytes calldata _data) external returns (bytes4)
// Non implémentée ? Le transfert est annulé et l'expéditeur garde ses tokens.L'ERC-20 a été conçu en 2015. Sa fonction de transfert ne prévient pas le destinataire : un contrat qui reçoit des tokens qu'il ne gère pas ne peut pas les refuser. Les tokens restent bloqués dans ce contrat, en général pour toujours.
Pour déposer dans une dApp, l'ERC-20 demande aussi deux transactions : approve, puis transferFrom. Pour économiser du gas, beaucoup d'exchanges demandent une approbation illimitée une seule fois. Le contrat peut alors déplacer vos tokens à tout moment, et s'il est piraté, les tokens approuvés peuvent être dérobés.
L'ERC-223 supprime ces deux problèmes : le destinataire est toujours consulté, et un dépôt est un simple transfert.
$201,690,000
de tokens ERC-20 perdus sur le réseau principal Ethereum à cause de ce défaut de conception, au 29 août 2023.
Voir le total actuel dans le calculateur de pertes ERC-20 →| Critère | ERC-20 | ERC-223 |
|---|---|---|
| Envoi vers un contrat | Le contrat n'est pas notifié. Les tokens non gérés restent bloqués. | Le contrat est notifié et refuse les tokens qu'il ne peut pas gérer. |
| Dépôt dans une dApp | Deux transactions : approve, puis transferFrom | Une transaction : transfer |
| Approbations | Obligatoires. Les approbations illimitées mettent les fonds en danger. | Inutiles |
| Gas pour un swap (exemple) | 257K (45K d'approbation + 212K de swap) | 220K, sans approbation |
| Se comporte comme l'ether | Non | Oui |
| Statut du standard | Final (EIP-20, 2015) | Final (EIP-223, 2017) |
Les chiffres de gas proviennent d'un swap mesuré du même token sur DEX223. Les résultats varient selon le token et l'état du réseau.
Pas besoin de choisir. Le convertisseur de tokens EIP-7417 transforme n'importe quel token ERC-20 en sa version ERC-223 et inversement, à 1:1, à tout moment. Les deux versions sont le même token.
Déposez la version ERC-20 et recevez la version ERC-223, ou l'inverse. La conversion retour n'a aucune limite.
Sur DEX223, chaque pool accepte les deux versions d'un token. Vous choisissez ERC-20 ou ERC-223 pour chaque côté d'un échange.
Convertir entre ERC-20 et ERC-223 sur DEX223 ne coûte que le gas du réseau.
DEX223 a été le premier exchange décentralisé compatible ERC-223. Il est non custodial : vous échangez depuis votre propre portefeuille.
Échangez des tokens ERC-223 en une seule transaction. Pas d'étape d'approbation, moins de gas.
Passez n'importe quel token de l'ERC-20 à l'ERC-223 à 1:1 avec le convertisseur intégré.
Listez un token sans autorisation via un contrat d'auto-listing.
Oui. L'ERC-223 garde la même fonction transfer, donc les portefeuilles peuvent l'envoyer, et le convertisseur EIP-7417 transforme n'importe quel token ERC-20 en sa version ERC-223 et inversement à 1:1.
Oui. L'EIP-223, "Token with transaction handling model", a le statut Final dans les Ethereum Improvement Proposals.
Dexaran a proposé l'ERC-223 en 2017. L'EIP a été créée le 3 mai 2017.
Le transfert échoue et les tokens restent dans votre portefeuille. Avec l'ERC-20, la même erreur bloque en général les tokens pour toujours.
Non. Un dépôt est un simple transfert géré par le contrat destinataire : pas d'étape approve, ni d'approbation illimitée à révoquer.
Utilisez le convertisseur de tokens de l'app DEX223. Il convertit à 1:1 dans les deux sens et ne prend aucuns frais de protocole, seulement le gas du réseau.