ERC-223 é um padrão de tokens para a Ethereum e outras redes EVM, criado por Dexaran em 2017. Ele faz os tokens se comportarem como o ether: quando você envia tokens ERC-223 para um contrato inteligente, o contrato é notificado e pode aceitá-los ou recusá-los, então tokens enviados ao contrato errado não se perdem. Depósitos levam uma única transação, sem etapa de aprovação.
O ERC-223 acrescenta uma regra às transferências de tokens: se o destinatário for um contrato inteligente, o token pergunta a ele primeiro. As carteiras continuam funcionando como antes.
Você chama transfer(to, amount), a mesma função e assinatura do ERC-20, então qualquer carteira pode enviar tokens ERC-223.
Se o destinatário for um contrato inteligente, o token chama a função tokenReceived dele, do mesmo jeito que o ether aciona a função receive de um contrato.
Um contrato preparado para o token processa o depósito. Um contrato que não está preparado reverte a transação, e os tokens continuam na sua carteira.
// Contrato receptor ERC-223 (EIP-223)
function tokenReceived(address _from, uint _value, bytes calldata _data) external returns (bytes4)
// Não implementada? A transferência é revertida e o remetente fica com os tokens.O ERC-20 foi criado em 2015. A função de transferência dele não avisa o destinatário, então um contrato que recebe tokens que não suporta não consegue recusá-los. Os tokens ficam presos nesse contrato, geralmente para sempre.
Para depositar em um dApp, o ERC-20 também exige duas transações: approve e depois transferFrom. Para economizar gas, muitas exchanges pedem uma aprovação ilimitada uma única vez. Isso permite que o contrato movimente seus tokens a qualquer momento, e se ele for hackeado, os tokens aprovados podem ser drenados.
O ERC-223 elimina os dois problemas: o destinatário é sempre consultado, e um depósito é uma única transferência.
$201,690,000
em tokens ERC-20 perdidos na rede principal da Ethereum por essa falha de projeto, até 29 de agosto de 2023.
Veja o total de hoje na calculadora de perdas do ERC-20 →| Recurso | ERC-20 | ERC-223 |
|---|---|---|
| Enviar para um contrato | O contrato não é notificado. Tokens não suportados ficam presos. | O contrato é notificado e recusa tokens que não consegue processar. |
| Depositar em um dApp | Duas transações: approve e depois transferFrom | Uma transação: transfer |
| Aprovações | Obrigatórias. Aprovações ilimitadas colocam os fundos em risco. | Não são necessárias |
| Gas de um swap (exemplo) | 257K (45K de aprovação + 212K de swap) | 220K, sem aprovação |
| Comporta-se como o ether | Não | Sim |
| Status do padrão | Final (EIP-20, 2015) | Final (EIP-223, 2017) |
Os valores de gas vêm de um swap medido do mesmo token na DEX223. Os resultados variam conforme o token e as condições da rede.
Você não precisa escolher. O conversor de tokens EIP-7417 transforma qualquer token ERC-20 na versão ERC-223 e vice-versa, 1:1, a qualquer momento. As duas versões são o mesmo token.
Deposite a versão ERC-20 e receba a versão ERC-223, ou o contrário. Não há limite para converter de volta.
Na DEX223 cada pool aceita as duas versões de um token. Você escolhe ERC-20 ou ERC-223 para cada lado da negociação.
Converter entre ERC-20 e ERC-223 na DEX223 custa apenas o gas da rede.
A DEX223 foi a primeira exchange descentralizada a suportar ERC-223. Ela não é custodial: você negocia a partir da sua própria carteira.
Troque tokens ERC-223 em uma única transação. Sem etapa de aprovação e com menos gas.
Mova qualquer token entre ERC-20 e ERC-223 a 1:1 com o conversor integrado.
Liste um token sem pedir permissão, por meio de um contrato de autolistagem.
Sim. O ERC-223 mantém a mesma função transfer, então as carteiras conseguem enviá-lo, e o conversor EIP-7417 transforma qualquer token ERC-20 na versão ERC-223 e vice-versa a 1:1.
Sim. A EIP-223, "Token with transaction handling model", tem status Final nas Ethereum Improvement Proposals.
Dexaran propôs o ERC-223 em 2017. A EIP foi criada em 3 de maio de 2017.
A transferência falha e os tokens continuam na sua carteira. Com o ERC-20, o mesmo erro costuma prender os tokens para sempre.
Não. Um depósito é uma única transferência processada pelo contrato receptor, então não há etapa approve nem aprovação ilimitada para revogar.
Use o conversor de tokens no app da DEX223. Ele converte 1:1 nos dois sentidos e não cobra taxa de protocolo, apenas o gas da rede.