O que é uma função de transferência em cripto?
Uma função de transferência em cripto é uma função de contrato inteligente que move tokens de um endereço blockchain para outro.Ela é mais frequentemente discutida em padrões de tokens como ERC-20 na Ethereum e TRC-20 na TRON.Nesse contexto, uma função de transferência não é igual a uma função de transferência matemática usada em engenharia ou sistemas de sinais.Ela é uma regra programável dentro de um contrato de token que verifica se o movimento de tokens é permitido e, em seguida, atualiza os saldos on-chain.A especificação oficial do ERC-20 define uma função
O mesmo padrão também define
O Ethereum.org explica em seu guia do padrão de tokens ERC-20 que os tokens ERC-20 são transferidos usando
Por que a função de transferência é importante
A função de transferência é importante porque os tokens só são úteis se puderem se mover com segurança entre endereços.Um token pode representar uma stablecoin, um ativo de governança, um ponto de recompensa, um ativo wrapped, um token de utilidade, um token de liquidez ou uma moeda de jogo.Se a função de transferência estiver corrompida, restrita, for maliciosa ou tiver um projeto inadequado, os usuários poderão não conseguir mover o token normalmente.Uma transferência normal de token deve reduzir o saldo do remetente e aumentar o saldo do destinatário pela mesma quantidade de tokens.A função também deve rejeitar transferências que violem regras básicas, como enviar mais tokens do que o remetente possui.Na maioria dos padrões de tokens, uma transferência bem-sucedida emite um evento de transferência para que carteiras, exploradores de blockchain, indexadores e aplicativos possam acompanhar o movimento.Esse histórico de eventos é importante porque muitas interfaces exibem a atividade de tokens por meio da leitura de logs de eventos.Sem funções de transferência previsíveis, carteiras e aplicativos precisariam de lógica personalizada para cada token.Os padrões de tokens resolvem esse problema ao fornecer uma interface compartilhada aos desenvolvedores.Por isso, a função de transferência é um dos elementos mais importantes dos ecossistemas de contratos inteligentes.Como funciona uma função de transferência
Uma função de transferência começa quando um usuário assina uma transação a partir de uma carteira.A transação chama o contrato do token e inclui o endereço do destinatário e a quantidade de tokens.A blockchain verifica se a transação foi assinada corretamente pela chave privada do remetente.Em seguida, o contrato do token verifica se o remetente tem saldo suficiente.O contrato também pode verificar se as transferências estão pausadas, bloqueadas, sujeitas a taxas, limitadas ou restringidas por regras adicionais do token.Se todas as verificações forem aprovadas, o contrato subtrai os tokens do saldo do remetente.Em seguida, o contrato adiciona a mesma quantidade, ou a quantidade líquida permitida, ao saldo do destinatário.Normalmente, o contrato emite um evento
Função básica de transferência ERC-20
A função
O parâmetro
O parâmetro
A especificação ERC-20 afirma que a função transfere tokens para um endereço e deve disparar o evento
A especificação ERC-20 também afirma que os chamadores devem lidar com valores de retorno
Por exemplo, a atual documentação ERC-20 da OpenZeppelin descreve o ERC-20 como um padrão para tokens fungíveis e fornece padrões de implementação amplamente usados.
Os desenvolvedores ainda devem ler o contrato real de cada token, em vez de presumir que todos os tokens se comportam perfeitamente.Um token pode alegar compatibilidade com um padrão e ainda incluir regras extras que afetam o comportamento da transferência.Função transfer vs. função transferFrom
A função
A função
Uma transferência normal de carteira geralmente usa
Um contrato inteligente que move tokens em nome de um usuário geralmente usa
Antes que
Evento Transfer
O evento
No ERC-20, o evento normalmente é escrito como
O campo
O campo
O campo
Função de transferência e saldos de tokens
O saldo de um token normalmente é armazenado em um mapping dentro de um contrato inteligente.Para tokens no estilo ERC-20, o contrato registra quantos tokens cada endereço possui.Quando
Função de transferência e taxas de gas
Chamar uma função de transferência custa taxas de rede porque a blockchain deve executar código e armazenar o resultado.Na Ethereum e em muitas redes compatíveis com EVM, esse custo é pago em gas.Uma transferência simples de moeda nativa pode custar menos do que uma transferência de token, porque transferências de tokens executam código de contrato inteligente.As transferências de tokens podem ficar mais caras quando o contrato inclui lógica adicional, como taxas, limites, blacklists, hooks ou mecanismos de reflection.Os usuários devem verificar a taxa de rede estimada antes de confirmar uma transferência de token.Os desenvolvedores devem otimizar a lógica de transferência porque código ineficiente torna cada transferência de usuário mais cara.O custo de gas não é apenas uma questão de experiência do usuário.Ele também pode afetar se um token é prático para pagamentos, jogos, recompensas ou transferências frequentes.Um token projetado para movimentações cotidianas deve evitar complexidade desnecessária nas transferências.Um token com lógica pesada de transferência pode gerar baixa usabilidade e maior risco de falha durante congestionamentos.Função de transferência em tokens TRC-20
Os tokens TRC-20 também usam funções do tipo transferência na blockchain TRON.A interface oficial do protocolo TRC-20 da TRON descreve o TRC-20 como um padrão de contrato para emissão de ativos em tokens.
O guia oficial de interação com contratos TRC-20 explica como endereços aprovados podem chamar
Função de transferência e transferências de moedas nativas
Uma função de transferência geralmente é discutida para contratos de tokens, e não para transferências de moedas nativas.O envio de ETH, TRX ou outra moeda nativa normalmente é tratado pelo protocolo-base da blockchain.O envio de um token ERC-20 ou TRC-20 geralmente exige chamar uma função do contrato do token.Essa distinção importa porque uma carteira pode mostrar saldos de moedas nativas e tokens na mesma interface.O usuário pode achar que todas as transferências funcionam da mesma forma, mas o processo no backend pode ser diferente.Uma transferência de moeda nativa pode falhar devido a saldo nativo insuficiente para o valor e a taxa.Uma transferência de token pode falhar por saldo de tokens insuficiente, gas insuficiente, allowance insuficiente, transferências pausadas, blacklists ou restrições específicas do contrato.Uma transferência nativa normalmente não emite um evento
Função de transferência e endereços de contratos inteligentes
Enviar tokens para o endereço de um contrato inteligente pode ser arriscado se o contrato não for projetado para lidar com esses tokens.O Ethereum.org alerta que tokens ERC-20 transferidos com
Função de transferência e aprovações
As aprovações estão intimamente ligadas às funções de transferência porque permitem que
Um usuário concede aprovação ao chamar
O endereço ou contrato inteligente aprovado pode então chamar
Função de transferência e allowance
Uma allowance é a quantidade de tokens que um endereço permitiu que outro endereço gastasse.O sistema de allowance é o que torna
O contrato inteligente pode então chamar
Após um
Casos de falha da função de transferência
Uma função de transferência pode falhar por muitos motivos.O remetente pode não ter saldo de tokens suficiente.O remetente pode não ter moeda nativa suficiente para pagar gas ou recursos de rede.O endereço de recebimento pode ser bloqueado pelas regras do token.O endereço do remetente pode ser bloqueado pelas regras do token.O contrato de token pode estar pausado por um administrador.A quantidade transferida pode exceder um limite de transação ou de carteira.O token pode incluir taxas de transferência que tornam o valor de saída esperado diferente do valor de entrada.O contrato pode reverter porque a transferência viola regras internas de contabilidade.A rede pode rejeitar a transação se o limite de gas for muito baixo.O usuário pode chamar a função errada ou usar o endereço errado do contrato do token.Função de transferência e tokens com taxa na transferência
Alguns tokens incluem taxas dentro da função de transferência.Eles geralmente são chamados de tokens fee-on-transfer, tokens com imposto ou tokens deflacionários.Quando um usuário envia 100 tokens, o destinatário pode receber menos de 100 porque parte da quantidade é queimada, redirecionada ou coletada pelo contrato.Esse comportamento pode quebrar premissas em carteiras, sistemas de pagamento e protocolos DeFi.Um recebedor de pagamento pode esperar uma quantidade exata, mas receber menos.Um pool DeFi pode calcular saldos incorretamente se presumir que toda quantidade transferida chega integralmente.Os desenvolvedores devem detectar e tratar cuidadosamente o comportamento fee-on-transfer ao integrar tokens.Os usuários devem ler a documentação do token antes de enviar ou fazer swap de tokens incomuns.Um token pode seguir uma interface conhecida e ainda ter comportamento de transferência que surpreende os usuários.A função de transferência é onde muitas dessas regras especiais são aplicadas.Função de transferência e blacklists
Alguns contratos de tokens incluem lógica de blacklist ou blocklist dentro da função de transferência.Uma blacklist pode impedir determinados endereços de enviar, receber ou mover tokens.Esse recurso pode ser usado para compliance, resposta a fraudes, fundos hackeados ou controle do emissor.Ele também pode criar risco de centralização porque o emissor do token pode ter grande poder sobre os saldos dos usuários.Os usuários devem verificar se um contrato de token inclui funções de blacklist antes de manter grandes quantidades.Os desenvolvedores devem divulgar claramente qualquer lógica de restrição de transferência.Tokens voltados à conformidade podem precisar de restrições por razões legais.Tokens de comunidade podem não precisar desses poderes e podem enfrentar preocupações de confiança se os incluírem silenciosamente.Uma função de transferência com lógica de controle oculta pode tornar um token muito mais arriscado do que parece.A liberdade de um token depende tanto da interface padrão quanto da implementação real do contrato.Função de transferência e tokens pausáveis
Um token pausável pode interromper transferências em determinadas condições.A função de pausa normalmente é controlada por uma função de administrador ou processo de governança.Quando pausada, a função de transferência pode rejeitar movimentações normais de tokens.Isso pode ser útil durante emergências, como hacks, bugs de contrato, incidentes de bridge ou questões legais.Também pode criar risco para o usuário porque os fundos podem ficar temporária ou indefinidamente impossibilitados de se mover.Os usuários devem entender quem pode pausar um token e em quais condições.Um token com um processo de pausa transparente pode ser mais seguro do que um token com poderes de emergência ocultos.Os desenvolvedores devem documentar a autoridade de pausa e incluir proteções de governança quando possível.Auditores devem verificar se os controles de pausa podem ser abusados.A função de transferência é onde as regras de pausa geralmente afetam os usuários no dia a dia.Função de transferência e minting ou burning
Minting e burning estão relacionados a transferências, mas não são iguais a transferências normais.O minting cria novos tokens e normalmente emite um evento de transferência a partir do endereço zero.O burning destrói tokens e normalmente emite um evento de transferência para o endereço zero.Esse padrão de eventos ajuda carteiras e exploradores a acompanhar alterações na oferta.No entanto, os usuários não devem confundir eventos de mint ou burn com transferências comuns entre usuários.Um token com poder ilimitado de minting pode diluir os detentores.Um token com mecanismos de burning pode reduzir a oferta ou destruir tokens dos usuários sob determinadas regras.Os desenvolvedores devem separar claramente a lógica de transferência normal das permissões de mint e burn.Auditores devem verificar quem controla o minting e o burning e se esses poderes têm limites.O controle da oferta pode ser tão importante quanto o controle de transferência ao avaliar o risco de um token.Função de transferência e reentrância
Reentrância é um risco de contrato inteligente em que uma chamada externa permite que outro contrato entre novamente na função original antes que a primeira execução termine.Transferências ERC-20 básicas normalmente atualizam saldos internos sem chamar o código do receptor.No entanto, tokens com hooks, callbacks, lógica de taxas ou integrações externas podem introduzir caminhos de execução mais complexos.Os desenvolvedores devem ter cuidado ao escrever funções de transferência que interagem com contratos externos.Chamadas externas dentro da lógica de transferência podem aumentar a superfície de ataque.Proteções comuns incluem padrões checks-effects-interactions, guardas de reentrância, chamadas externas limitadas e ordem cuidadosa de atualização de estado.Os usuários não precisam entender todos os detalhes de reentrância para enviar tokens.No entanto, devem entender que comportamentos incomuns de tokens podem criar risco técnico.Auditorias são especialmente importantes para tokens que adicionam lógica complexa às transferências.Uma função de transferência simples geralmente é mais fácil de analisar do que uma altamente personalizada.Função de transferência e NFTs
Os padrões de NFT também usam funções de transferência, mas seu comportamento é diferente dos padrões de tokens fungíveis.Tokens ERC-721 representam ativos únicos, portanto a função de transferência move um ID de token específico, e não uma quantidade fungível.Uma transferência de NFT pode usar funções como
Função de transferência e interfaces de carteira
As carteiras ocultam dos usuários grande parte da complexidade da função de transferência.Um usuário pode clicar em “enviar”, inserir um endereço, escolher uma quantidade e confirmar.Por trás da interface, a carteira prepara uma chamada de contrato para a função de transferência do token.A carteira estima o gas ou os recursos de rede.A carteira solicita que o usuário assine a transação.A carteira transmite a transação assinada para a rede.Uma boa carteira deve mostrar claramente o token, o endereço de destino, a quantidade, a rede e a taxa estimada.Uma carteira inadequada pode ocultar detalhes importantes do contrato ou não alertar os usuários sobre aprovações arriscadas.Os usuários devem sempre confirmar a rede e o endereço de recebimento antes de assinar.A interface da carteira é conveniente, mas a função de transferência ainda é executada exatamente de acordo com o código do contrato.Função de transferência e exploradores de blockchain
Exploradores de blockchain ajudam os usuários a verificar os resultados de funções de transferência.Após uma transferência de token, os usuários podem pesquisar o hash da transação em um explorador.O explorador pode mostrar o status da transação, o contrato do token, remetente, destinatário, quantidade, taxa, número do bloco e eventos emitidos.Se o saldo da carteira parecer incorreto, o explorador pode ajudar a confirmar se a transferência ocorreu on-chain.Se um depósito estiver ausente, o hash da transação ajuda as equipes de suporte a identificar a transferência.Os exploradores leem dados da blockchain, mas também podem depender de sistemas de indexação que podem apresentar atrasos ou erros de exibição.A transação bruta e os logs de eventos são mais importantes do que capturas de tela.Os usuários devem fornecer hashes de transação em vez de enviar apenas imagens das telas da carteira.Os desenvolvedores devem tornar os eventos de token claros para que exploradores possam exibir transferências corretamente.O rastreamento confiável de transferências depende de bons eventos de contrato e de boa indexação.Função de transferência e sistemas de pagamento
Sistemas de pagamento que aceitam tokens dependem fortemente de funções e eventos de transferência.Um comerciante pode pedir a um usuário que envie um token para um endereço de depósito.O sistema do comerciante então observa a blockchain em busca de um evento de transferência ou alteração de saldo.Se a quantidade e o token corresponderem à fatura, o comerciante pode marcar o pagamento como recebido.Sistemas de pagamento devem tratar cuidadosamente decimais, taxas, endereços de contrato, seleção de rede e confirmações.Eles não devem depender apenas de símbolos de tokens, pois símbolos podem ser copiados.Devem armazenar endereços de contratos de tokens e hashes de transação nos registros de pagamento.Devem considerar tokens fee-on-transfer se for necessária uma liquidação exata.Também devem aguardar uma política de confirmação adequada com base na blockchain e no valor da transferência.Um bom processamento de pagamentos trata transferências de tokens como eventos programáveis de contratos, não apenas como mensagens simples de conta.Função de transferência e auditorias de segurança
Auditores de segurança inspecionam funções de transferência porque elas controlam a movimentação de tokens.Eles verificam se os saldos são atualizados corretamente.Eles verificam se os eventos são emitidos corretamente.Eles verificam se transferências podem ser pausadas, bloqueadas, taxadas ou redirecionadas.Eles verificam se funções de administrador podem abusar da lógica de transferência.Eles verificam se a oferta pode sofrer minting ou burning inesperadamente por caminhos relacionados a transferências.Eles verificam se transferências podem quebrar integrações DeFi.Eles verificam se hooks incomuns criam riscos de reentrância ou negação de serviço.Eles verificam se o tratamento do endereço zero é seguro.Uma auditoria de token que ignora a função de transferência está incompleta.Função de transferência e tokens de golpe
Tokens de golpe frequentemente manipulam funções de transferência para prender usuários.Um token pode permitir a compra, mas bloquear a venda.Um token pode cobrar taxas extremas de transferência após o lançamento.Um token pode colocar compradores em blacklist depois que eles recebem tokens.Um token pode permitir que apenas endereços selecionados transfiram normalmente.Um token pode falsificar eventos de transferência para confundir exploradores ou usuários.Um token pode incluir poderes ocultos do proprietário que alteram as regras de transferência posteriormente.Esses riscos explicam por que os usuários não devem confiar em um token apenas porque ele aparece em uma carteira.Os usuários devem verificar se o código-fonte do contrato é verificado e se as regras de transferência são compreensíveis.Uma função de transferência pode parecer normal no nível da interface enquanto oculta lógica perigosa no código.Boas práticas para usuários
Verifique o endereço do contrato do token antes de enviar ou receber tokens.Mantenha moeda nativa suficiente para gas ou recursos de rede.Verifique cuidadosamente o endereço de recebimento antes de assinar.Use uma pequena transferência de teste antes de enviar uma grande quantidade.Revise cuidadosamente os avisos da carteira e as telas da hardware wallet.Evite aprovar contratos desconhecidos.Revogue allowances não utilizadas quando possível.Verifique transferências com um hash da transação em um explorador de blockchain confiável.Não envie tokens para endereços de contratos, a menos que o contrato tenha sido projetado para recebê-los.Nunca compartilhe chaves privadas ou frases de recuperação para resolver um problema de transferência.Boas práticas para desenvolvedores
Use bibliotecas de tokens auditadas e amplamente revisadas quando possível.Siga exatamente o padrão de token relevante, a menos que exista um motivo claro para estendê-lo.Emita eventos de transferência de forma consistente com as alterações de saldo.Documente todas as restrições de transferência, taxas, blacklists, pausas e poderes de administrador.Evite chamadas externas dentro da lógica de transferência, a menos que sejam necessárias e cuidadosamente protegidas.Teste casos de falha de transferência, não apenas transferências bem-sucedidas.Teste o comportamento do endereço zero, de allowances, de taxas e de saldos em casos extremos.Deixe os decimais do token claros para carteiras e sistemas de pagamento.Verifique o código-fonte do contrato após o deployment.Projete um comportamento de transferência que outros aplicativos possam integrar com segurança.Erros comuns sobre funções de transferência
O primeiro erro é pensar que uma transferência de token é igual a uma transferência de moeda nativa.Uma transferência de token normalmente chama um contrato inteligente, enquanto uma transferência de moeda nativa é tratada pelo protocolo-base.O segundo erro é pensar que
FAQ
O que é uma função de transferência em cripto?
Uma função de transferência é uma função de contrato inteligente que move tokens de um endereço blockchain para outro.Uma função de transferência é o mesmo que enviar cripto?
Ela é parte do envio de tokens, mas transferências de moedas nativas podem ocorrer no nível do protocolo sem chamar uma função de transferência de contrato de token.O que é a função de transferência ERC-20?
A função de transferência ERC-20 é
O que é transferFrom?
O que é um evento Transfer?
Um evento
Por que minha transferência de token falhou?
Uma transferência de token pode falhar devido a saldo insuficiente, gas insuficiente, recursos insuficientes, transferências pausadas, blocklists, limites ou regras específicas do contrato.Uma função de transferência pode cobrar uma taxa?
Sim, alguns tokens incluem lógica fee-on-transfer que envia ao destinatário uma quantidade menor que a inserida pelo remetente.Uma função de transferência pode bloquear usuários?
Sim, alguns contratos de tokens incluem regras de blacklist, pausa ou permissão que podem bloquear determinadas transferências.Tokens podem ficar presos após usar uma função de transferência?
Sim, tokens podem ficar presos se forem enviados para um endereço de contrato que não foi projetado para lidar com eles ou recuperá-los.Uma função de transferência exige gas?
Sim, funções de transferência de tokens normalmente exigem gas ou recursos de rede porque executam lógica de contrato inteligente e atualizam o estado da blockchain.A transferência TRC-20 é igual à transferência ERC-20?
O conceito é semelhante, mas o TRC-20 é executado na TRON e usa recursos específicos da TRON, como Energy e Bandwidth.Uma função de transferência pode ser maliciosa?
Sim, um contrato de token malicioso pode usar lógica de transferência para prender usuários, bloquear vendas, cobrar taxas ocultas ou redirecionar fundos.Os usuários devem inspecionar funções de transferência antes de comprar tokens?
Os usuários devem, no mínimo, verificar código-fonte verificado, auditorias, permissões do token, restrições de transferência e alertas da comunidade antes de confiar em tokens desconhecidos.Qual é a forma mais segura de enviar tokens?
A forma mais segura é verificar o contrato do token, confirmar o endereço e a rede, manter gas suficiente, enviar primeiro uma quantidade de teste e revisar todos os avisos da carteira antes de assinar.Conclusão
Uma função de transferência é uma das partes mais importantes da lógica de contrato inteligente de tokens em cripto.Ela controla como tokens se movem entre endereços, como saldos são atualizados e como carteiras e exploradores detectam a atividade de tokens.Em tokens ERC-20 e TRC-20, a função de transferência fornece aos usuários uma forma padrão de enviar ativos fungíveis on-chain.A função relacionada
Você também pode gostar
HOT
Criptomoedas que estão em alta atualmente e ganhando atenção significativa do mercado
TOP volume
As criptomoedas com o maior volume de negociação
Recém-adicionados
Criptomoedas listadas recentemente que estão disponíveis para negociação

