O que é ERC-677: facilitando as interações com contratos inteligentes

LeeMaimaiLeeMaimai
/Atualizado em 16 de out. de 2025
O que é ERC-677: facilitando as interações com contratos inteligentes

Principais Resultados

• O ERC-677 elimina a necessidade de aprovações separadas, reduzindo o atrito nas transações.

• Permite que contratos reajam imediatamente ao recebimento de tokens, otimizando fluxos de trabalho.

• É ideal para aplicações que exigem interações rápidas e atômicas, como staking e pagamentos de oráculos.

Contratos inteligentes impulsionam quase todas as interações significativas em cadeias EVM — desde a troca de tokens e staking, até a ponte de ativos e o acionamento de atualizações de oráculos. No entanto, o padrão básico de token ERC-20 frequentemente requer padrões de UX de várias etapas, como "aprovar" seguido de "chamar", o que adiciona atrito, custa mais gás e aumenta a chance de erro do usuário. O ERC-677 é uma extensão pragmática do ERC-20 que simplifica esses fluxos combinando uma transferência de token com uma chamada de contrato imediata.

Este artigo explica o que é o ERC-677, como funciona, onde é útil e o que desenvolvedores e usuários devem observar em 2025.

O problema apenas com o ERC-20

O ERC-20 define uma interface simples para tokens fungíveis — transferir, aprovar e transferirDe. Essa simplicidade ajudou o ERC-20 a se tornar a espinha dorsal das Finanças Descentralizadas (DeFi) e das stablecoins, mas também força fluxos de trabalho comuns em duas transações:

  • Aprovar o despachante (spender)
  • Chamar o contrato do protocolo (que então usa transferFrom)

Este padrão de duas etapas:

  • Aumenta a contagem de transações e o gás.
  • Cria atrito e confusão na experiência do usuário (UX).
  • Pode introduzir condições de corrida de aprovação e permissões pendentes. Veja as orientações da OpenZeppelin sobre o ajuste de permissões para mitigar problemas com a semântica de aprovação. Recomendações de permissão ERC-20 da OpenZeppelin

Para um resumo sobre o próprio ERC-20, consulte a documentação do Ethereum.org. Visão geral do padrão ERC-20

O que o ERC-677 adiciona

O ERC-677 estende o ERC-20 com uma função chave: transferAndCall. Em uma transação, o token é transferido para um contrato receptor e, imediatamente, invoca um callback predefinido (comumente onTokenTransfer) nesse receptor com dados arbitrários.

Fluxo de alto nível:

  1. O usuário assina um transferAndCall no token ERC-677.
  2. O contrato do token transfere tokens para o receptor.
  3. O contrato do token chama recipient.onTokenTransfer(sender, amount, data).
  4. O contrato receptor executa a lógica — por exemplo, depositar, fazer staking, trocar ou acionar um oráculo.

Este padrão remove a necessidade de uma etapa de aprovação separada e permite que os contratos reajam ao recebimento de tokens imediatamente.

O token LINK da Chainlink é uma implementação conhecida do ERC-677, projetada para que os contratos possam reagir às transferências de LINK imediatamente para pagar por serviços de oráculo e interações relacionadas. Token LINK da Chainlink e ERC-677

Usos típicos

  • Depósitos de staking e cofres (vaults): Os usuários depositam em uma transação, e o cofre contabiliza o depósito no callback.
  • Fluxos de DEX e liquidez: Os protocolos podem receber os tokens e executar a lógica de troca ou adição de liquidez diretamente.
  • Oráculos e pagamentos de serviços: Transfira tokens para um contrato de serviço e acione o uso ou a cobrança na mesma chamada. É assim que o ERC-677 do LINK permite pagamentos de oráculos contínuos. Token LINK da Chainlink e ERC-677
  • Pontes (Bridges) e protocolos cross-chain: Combine a entrega de tokens com um payload de instrução para ponteamento ou mensagens.
  • Interoperabilidade cross-chain: À medida que o uso cross-chain cresce, combinar transferência de valor com execução é útil. O design do CCIP da Chainlink ilustra a crescente demanda por fluxos de tokens programáveis ​​entre redes. O que é CCIP

Como o ERC-677 se compara a alternativas

  • ERC-1363 (tokens "pagáveis" semelhantes a transferAndCall): Objetivo semelhante — permitir que os contratos reajam ao receber tokens — com callbacks padronizados para fluxos de gastos e aprovação. Bom para experiências semelhantes a pagamentos. Especificação ERC-1363

  • ERC-777 (tokens baseados em hooks): Fornece semânticas de token mais ricas e hooks de receptor. Poderoso, mas historicamente veio com mais complexidade e risco de reentrância se os receptores não forem cuidadosamente projetados. Especificação ERC-777

  • EIP-2612 (permit) e Permit2: Focam em aprovações sem gás por meio de mensagens assinadas, reduzindo a necessidade de transações de aprovação. Ótimo para DEXes e carteiras, mas geralmente ainda deixa você com uma chamada de contrato subsequente. O ERC-677 reduz as etapas do usuário, agrupando transferência e execução. EIP-2612 permit, Uniswap Permit2

  • Abstração de Conta (EIP-4337): Permite que carteiras e patrocinadores (paymasters) agrupem várias operações e patrocinem gás, melhorando a UX. O ERC-677 complementa a Abstração de Conta (AA) ao reduzir ainda mais as etapas do lado do protocolo. Abstração de Conta EIP-4337

Em resumo: permit e AA reduzem o atrito do lado da carteira; o ERC-677 reduz o atrito permitindo que a própria transferência de token acione a lógica do contrato inteligente.

Considerações para desenvolvedores e segurança

Com callbacks ao receber tokens, a cautela é essencial:

  • Reentrância: O contrato do token chama a lógica do receptor. Se os receptores chamarem de volta para o token ou outros contratos externos, você pode introduzir vulnerabilidades de reentrância. Use padrões de verificação-efeitos-interações (checks-effects-interactions) ou guardiões (guard patterns) onde apropriado. SWC-107 Reentrância, OpenZeppelin ReentrancyGuard

  • Valide o remetente e o token: Certifique-se de que os contratos receptores verifiquem se msg.sender é igual ao contrato de token confiável e valide o endereço do token se vários tokens forem suportados.

  • Lista de permissões (Whitelisting): Considere adicionar à lista de permissões os contratos receptores permitidos (ou validar interfaces) para tokens onde o callback pode executar operações sensíveis.

  • Design de eventos: A emissão de eventos ricos ajuda na indexação e análise. Mantenha eventos de Transfer compatíveis com ERC-20 juntamente com dados específicos do ERC-677, sempre que viável, para compatibilidade com ferramentas.

  • Segurança de fallback: Se o receptor não implementar o callback esperado, a transferência deve reverter ou seguir um caminho de falha seguro e explícito para evitar a perda "silenciosa" de funcionalidade.

  • Gás e modos de falha: O callback pode reverter; lide com falhas com mensagens de erro claras e garanta que os usuários entendam se a transferência foi bem-sucedida ou se a transação inteira reverteu.

Para segurança geral de contratos inteligentes, a documentação do Solidity sobre considerações de segurança continua sendo uma leitura essencial. Considerações de segurança do Solidity

UX da carteira: por que isso importa para os usuários

Ao remover a sequência "aprovar e depois chamar", o ERC-677 pode fazer com que interações complexas pareçam uma única ação proposital. Isso reduz a fadiga de assinatura, diminui a sobrecarga cognitiva e geralmente economiza gás. No entanto, a transação única é mais rica: você está transferindo tokens e executando a lógica do contrato. Isso exige visualizações claras, simulação e dados de chamada legíveis das carteiras.

Se você é um usuário preocupado com a segurança interagindo com protocolos que usam ERC-677, usar uma carteira de hardware que exibe nomes de função, parâmetros e mudanças de valor estimadas legíveis pode ajudá-lo a assinar com confiança.

Contexto de 2025: adoção e composabilidade

Em 2025, a tendência continua em direção ao agrupamento de transferência de valor e execução de intenção:

  • Mais protocolos preferem depósitos, trocas ou pagamentos de serviços "com um clique" que parecem nativos e reduzem a desordem de aprovação.
  • Frameworks cross-chain enfatizam movimentos de tokens programáveis ​​e payloads de mensagens — semânticas semelhantes ao ERC-677 se mapeiam bem para essas arquiteturas. Veja como o CCIP formaliza mensagens programáveis ​​ao lado da transferência de tokens para casos de uso cross-chain. O que é CCIP

Espere maior suporte de carteiras e middleware para simular fluxos de callback, expor riscos e fornecer prompts inteligíveis que tornam as operações combinadas de transferência e execução mais seguras.

Esboço da interface mínima

Conceitualmente, o ERC-677 se parece com isto (as implementações podem variar ligeiramente):

interface IERC677 {
    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
    event Transfer([address](https://onekey.so/blog/pt/ecosystem/what-is-a-crypto-wallet-address/) indexed from, [address](https://onekey.so/blog/pt/ecosystem/what-is-a-crypto-wallet-address/) indexed to, uint256 value, bytes data);
}

interface IERC677Receiver {
    function onTokenTransfer([address](https://onekey.so/blog/pt/ecosystem/what-is-a-crypto-wallet-address/) sender, uint256 value, bytes calldata data) external;
}

O contrato do token chama onTokenTransfer no receptor imediatamente após transferir o valor, permitindo que o receptor reaja em uma única transação.

Dicas práticas

  • Para desenvolvedores de protocolos: Documente claramente as interfaces de callback esperadas e os motivos de reversão. Quando aplicável, publique listas de permissões ou verificações de interface para que os integradores possam verificar o comportamento.
  • Para integradores: Simule transferAndCall para visualizar as mudanças de estado pós-callback. Sinalize receptores arriscados ou callbacks desconhecidos para os usuários.
  • Para usuários: Prefira protocolos confiáveis ​​e inspecione as visualizações de transação. Se sua carteira suportar decodificação legível, reserve um momento para revisar os parâmetros passados ​​para o callback.

Você deve usar ERC-677?

Use ERC-677 quando:

  • Você deseja eliminar o padrão de aprovar + chamar para fluxos de usuário principais.
  • O protocolo se beneficia da reação imediata e atômica ao recebimento de tokens.
  • Você pode reforçar os callbacks do receptor contra reentrância e validar minuciosamente as fontes de token.

Se o seu caso de uso for puramente centrado em aprovação (por exemplo, permitir que uma DEX gaste tokens posteriormente), EIP-2612 ou Permit2 podem ser suficientes. Se você precisar de semânticas de hook mais ricas em muitos receptores, avalie o ERC-777, mas esteja ciente de sua complexidade.

Uma nota para usuários OneKey

Transações ERC-677 combinam uma transferência de token com uma chamada de contrato. Ao assinar, é útil ver exatamente qual função será executada e com quais parâmetros. A abordagem de código aberto da OneKey e o suporte a EVM visam fornecer visualizações de chamadas transparentes e assinatura confiável para interações avançadas como transferAndCall, para que usuários avançados possam manter forte segurança enquanto desfrutam de uma UX simplificada.

Ao entender o ERC-677 e usar uma carteira que apresente os detalhes da transação de forma clara, você pode se beneficiar com segurança de interações de contratos inteligentes mais simples e em uma única transação.

Proteja sua jornada criptográfica com o OneKey

View details for Comprar OneKeyComprar OneKey

Comprar OneKey

A carteira de hardware mais avançada do mundo.

View details for Baixar aplicativoBaixar aplicativo

Baixar aplicativo

Negocie ativos globais. Comece em poucos minutos, apenas com o seu email.

View details for OneKey SifuOneKey Sifu

OneKey Sifu

Clareza Cripto—A uma chamada de distância.