Standard de tokens

Qu'est-ce que l'ERC-223 ?

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.

Fonctionnement

Des tokens qui se comportent comme l'ether

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.

  1. Vous envoyez des tokens

    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.

  2. Le contrat est notifié

    Si le destinataire est un smart contract, le token appelle sa fonction tokenReceived, comme l'ether déclenche la fonction receive d'un contrat.

  3. Accepter ou refuser

    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.

Le problème

Pourquoi des tokens ERC-20 se perdent

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 →

Comparaison

ERC-20 vs ERC-223

CritèreERC-20ERC-223
Envoi vers un contratLe 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 dAppDeux transactions : approve, puis transferFromUne transaction : transfer
ApprobationsObligatoires. 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'etherNonOui
Statut du standardFinal (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.

Compatibilité

Utilisez l'ERC-20 et l'ERC-223 ensemble

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.

Tout token, dans les deux sens

Déposez la version ERC-20 et recevez la version ERC-223, ou l'inverse. La conversion retour n'a aucune limite.

Un seul pool de liquidité

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.

Aucuns frais de protocole

Convertir entre ERC-20 et ERC-223 sur DEX223 ne coûte que le gas du réseau.

Dès aujourd'hui

L'ERC-223 sur DEX223

DEX223 a été le premier exchange décentralisé compatible ERC-223. Il est non custodial : vous échangez depuis votre propre portefeuille.

Swaps sans approbation

Échangez des tokens ERC-223 en une seule transaction. Pas d'étape d'approbation, moins de gas.

Conversion dans l'app

Passez n'importe quel token de l'ERC-20 à l'ERC-223 à 1:1 avec le convertisseur intégré.

Listez n'importe quel token

Listez un token sans autorisation via un contrat d'auto-listing.

FAQ

Questions sur l'ERC-223

L'ERC-223 est-il compatible avec l'ERC-20 ?

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.

L'ERC-223 est-il un standard officiel d'Ethereum ?

Oui. L'EIP-223, "Token with transaction handling model", a le statut Final dans les Ethereum Improvement Proposals.

Qui a créé l'ERC-223 ?

Dexaran a proposé l'ERC-223 en 2017. L'EIP a été créée le 3 mai 2017.

Que se passe-t-il si j'envoie des tokens ERC-223 à un contrat qui ne les gère pas ?

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.

Les tokens ERC-223 ont-ils besoin d'approbations ?

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.

Comment convertir des tokens ERC-20 en ERC-223 ?

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.