ERC-223 es un estándar de tokens para Ethereum y otras cadenas EVM, creado por Dexaran en 2017. Hace que los tokens se comporten como el ether: cuando envías tokens ERC-223 a un contrato inteligente, el contrato recibe un aviso y puede aceptarlos o rechazarlos, así que los tokens enviados al contrato equivocado no se pierden. Los depósitos se hacen en una sola transacción, sin paso de aprobación.
ERC-223 añade una regla a las transferencias de tokens: si el destinatario es un contrato inteligente, el token le pregunta primero. Las billeteras siguen funcionando como antes.
Llamas a transfer(to, amount), la misma función y firma que en ERC-20, así que cualquier billetera puede enviar tokens ERC-223.
Si el destinatario es un contrato inteligente, el token llama a su función tokenReceived, igual que el ether activa la función receive de un contrato.
Un contrato preparado para el token procesa el depósito. Un contrato que no lo está revierte la transacción y los tokens se quedan en tu billetera.
// Contrato receptor ERC-223 (EIP-223)
function tokenReceived(address _from, uint _value, bytes calldata _data) external returns (bytes4)
// ¿No implementada? La transferencia se revierte y el remitente conserva los tokens.ERC-20 se diseñó en 2015. Su función de transferencia no avisa al destinatario, así que un contrato que recibe tokens que no admite no puede rechazarlos. Los tokens quedan bloqueados en ese contrato, normalmente para siempre.
Para depositar en una dApp, ERC-20 además necesita dos transacciones: approve y luego transferFrom. Para ahorrar gas, muchos exchanges piden una aprobación ilimitada una sola vez. Eso permite al contrato mover tus tokens en cualquier momento, y si alguna vez lo hackean, los tokens aprobados pueden ser robados.
ERC-223 elimina ambos problemas: siempre se pregunta al destinatario y los depósitos son una sola transferencia.
$201,690,000
en tokens ERC-20 perdidos en la red principal de Ethereum por este fallo de diseño, a 29 de agosto de 2023.
Consulta el total actual en la calculadora de pérdidas de ERC-20 →| Característica | ERC-20 | ERC-223 |
|---|---|---|
| Enviar a un contrato | El contrato no recibe aviso. Los tokens no admitidos quedan atrapados. | El contrato recibe aviso y rechaza los tokens que no puede gestionar. |
| Depositar en una dApp | Dos transacciones: approve y luego transferFrom | Una transacción: transfer |
| Aprobaciones | Obligatorias. Las aprobaciones ilimitadas ponen los fondos en riesgo. | No hacen falta |
| Gas de un swap (ejemplo) | 257K (45K de aprobación + 212K de swap) | 220K, sin aprobación |
| Se comporta como el ether | No | Sí |
| Estado del estándar | Final (EIP-20, 2015) | Final (EIP-223, 2017) |
Las cifras de gas proceden de un swap medido del mismo token en DEX223. Los resultados varían según el token y el estado de la red.
No tienes que elegir. El conversor de tokens EIP-7417 convierte cualquier token ERC-20 en su versión ERC-223 y viceversa, 1:1, en cualquier momento. Ambas versiones son el mismo token.
Deposita la versión ERC-20 y recibe la versión ERC-223, o al revés. No hay límite para volver a convertir.
En DEX223 cada pool acepta las dos versiones de un token. Eliges ERC-20 o ERC-223 para cada lado de la operación.
Convertir entre ERC-20 y ERC-223 en DEX223 solo cuesta el gas de la red.
DEX223 fue el primer exchange descentralizado compatible con ERC-223. No es custodio: operas desde tu propia billetera.
Intercambia tokens ERC-223 en una sola transacción. Sin paso de aprobación y con menos gas.
Mueve cualquier token entre ERC-20 y ERC-223 a 1:1 con el conversor integrado.
Lista un token sin pedir permiso mediante un contrato de autolistado.
Sí. ERC-223 mantiene la misma función transfer, así que las billeteras pueden enviarlo, y el conversor EIP-7417 convierte cualquier token ERC-20 en su versión ERC-223 y viceversa a 1:1.
Sí. EIP-223, "Token with transaction handling model", tiene estado Final en las Ethereum Improvement Proposals.
Dexaran propuso ERC-223 en 2017. La EIP se creó el 3 de mayo de 2017.
La transferencia falla y los tokens se quedan en tu billetera. Con ERC-20, el mismo error suele bloquear los tokens para siempre.
No. Un depósito es una sola transferencia que gestiona el contrato receptor, así que no hay paso approve ni aprobaciones ilimitadas que revocar.
Usa el conversor de tokens de la app de DEX223. Convierte 1:1 en ambos sentidos y no cobra comisión de protocolo, solo el gas de la red.