O que é a função Permit (EIP-2612)?
A função Permit, definida pela EIP-2612, é uma extensão do token ERC-20 que permite que o proprietário de um token autorize um spender assinando uma mensagem off-chain, em vez de enviar uma transação de aprovação separada on-chain.No universo cripto, isso é importante porque torna as aprovações de tokens mais simples, baratas e fáceis de combinar com outras ações de contratos inteligentes.A especificação oficial da EIP-2612 explica que o padrão estende o ERC-20 com uma nova função chamada
Ela apenas define uma allowance, que pode ser usada posteriormente por
Principais pontos sobre a função Permit
- A EIP-2612 adiciona permit,nonceseDOMAIN_SEPARATORaos tokens ERC-20.
- A função Permit permite que usuários aprovem gastos de ERC-20 com uma assinatura off-chain.
- A mensagem assinada segue as regras de dados estruturados tipados da EIP-712.
- Um permit altera a allowance, mas não transfere tokens por conta própria.
- Nonces impedem que a mesma assinatura de permit seja reutilizada.
- Prazos limitam por quanto tempo um permit assinado pode permanecer válido.
- O Permit melhora a experiência do usuário, mas não elimina o risco de aprovação nem o phishing de assinaturas.
- A EIP-2612 adiciona
Por que a EIP-2612 foi criada
Os tokens ERC-20 usam um modelo de aprovação que permite que um endereço autorize outro a gastar tokens em seu nome.O padrão ERC-20 original define funções como
A primeira é uma transação
Como funciona a função Permit
A função principal da EIP-2612 tem o seguinte formato:
O
O
O
O
Os valores
Se todas as verificações necessárias forem aprovadas, o contrato define
O contrato também emite um evento
As três principais funções da EIP-2612
A EIP-2612 exige que os tokens compatíveis adicionem três funções ao ERC-20.A primeira função é
A função
A segunda função é
A função
A terceira função é
A função
O que é uma allowance?
Allowance é a quantidade de tokens ERC-20 que o proprietário autorizou um spender a usar.Por exemplo, se Alice autorizar um contrato inteligente a gastar 100 tokens, a allowance de Alice para esse contrato será de 100 tokens.O spender poderá então chamar
Em vez de exigir que o proprietário do token chame diretamente
Função Permit vs. função Approve
A função tradicional
Com
Com
Com
Com
Por que a EIP-712 é importante para o Permit
A EIP-2612 usa dados estruturados tipados com base na EIP-712.
A EIP-712 é um padrão para hash e assinatura de dados estruturados, em vez de sequências de bytes opacas.Isso é importante porque os usuários de carteiras precisam entender o que estão assinando.Uma solicitação de assinatura hexadecimal bruta pode ser confusa e perigosa.Uma assinatura tipada pode exibir campos como proprietário, spender, valor, nonce e prazo com mais clareza.A EIP-712 também usa um separador de domínio.O separador de domínio ajuda a distinguir um contexto de assinatura de outro.No caso da EIP-2612, ele geralmente inclui informações como nome do token, versão, ID da rede e endereço do contrato verificador.Esse projeto ajuda a impedir que uma assinatura destinada a um token ou rede seja válida em outro contexto.A própria EIP-712 afirma que não inclui proteção contra repetição por si só.A EIP-2612 adiciona essa proteção por meio de nonces individuais por proprietário.Nonces e proteção contra repetição
Um nonce é um número usado uma única vez.Na EIP-2612, cada endereço proprietário tem um nonce acompanhado pelo contrato do token.Quando um usuário assina um permit, os dados assinados incluem o nonce atual do proprietário.Quando o permit é usado com sucesso, o contrato do token incrementa esse nonce.Se alguém tentar enviar o mesmo permit novamente, o nonce já não corresponderá.Isso fará a assinatura reutilizada falhar.A proteção por nonce é essencial porque as assinaturas podem ser copiadas.Sem essa proteção, um spender ou invasor poderia reutilizar o mesmo permit assinado várias vezes.Uma boa implementação de permit deve tratar os nonces como parte da mensagem assinada e atualizá-los somente quando um permit for bem-sucedido.Para os usuários, o significado prático é simples.Uma assinatura válida de permit deve poder ser usada uma vez, não para sempre.Prazos e expiração da assinatura
O parâmetro
Separador de domínio e contexto da rede
O separador de domínio é uma parte essencial das assinaturas da EIP-712.Na EIP-2612, ele ajuda a vincular o permit a um contrato de token e a um domínio específicos.Um domínio comum inclui o nome do token, a versão do token, o ID da rede e o endereço do contrato verificador.Isso reduz o risco de um permit assinado para um contrato ser reutilizado em outro contrato.Também reduz o risco de um permit assinado em uma rede ser reutilizado em outra.No entanto, a segurança do separador de domínio depende de uma implementação correta.Se o contrato do token usar um separador de domínio incompleto, o risco de repetição poderá aumentar.Se o ID da rede mudar ou um contrato for implantado em várias redes, os desenvolvedores precisarão considerar cuidadosamente como separar as assinaturas.Para os usuários, o separador de domínio geralmente fica oculto na interface da carteira.Para os desenvolvedores, esse é um dos detalhes mais importantes para uma implementação segura de permit.Como funcionam as aprovações sem gas
A expressão "aprovação sem gas" pode causar confusão.A EIP-2612 não torna gratuitas as transações na Ethereum ou em redes EVM.Ela permite que o proprietário do token aprove gastos assinando uma mensagem em vez de enviar uma transação.Um relayer, aplicativo, contrato inteligente ou spender pode então enviar o permit assinado on-chain e pagar a taxa de gas.Isso pode ajudar usuários que têm tokens ERC-20, mas não possuem tokens nativos de gas suficientes para aprová-los.Também pode ajudar aplicativos a criar experiências mais simples, em uma única etapa.Por exemplo, um usuário pode assinar um permit e, em seguida, concluir um depósito, pagamento ou ação com tokens sem enviar manualmente uma aprovação separada antes.A experiência parece mais simples, mas a blockchain ainda registra a alteração de estado por meio de uma transação on-chain.Os desenvolvedores devem explicar isso claramente, pois, caso contrário, os usuários podem pensar que mensagens assinadas não têm consequências.Uma assinatura de permit pode ter consequências reais on-chain depois que alguém a envia.Usos comuns da EIP-2612 em cripto
A EIP-2612 é frequentemente usada em finanças descentralizadas e aplicativos baseados em tokens.Um protocolo de empréstimo pode usar permit para permitir que o usuário aprove um ativo como garantia e o deposite em um único fluxo.Um contrato de staking pode usar permit para permitir que o usuário aprove tokens para staking sem uma transação de aprovação separada.Um aplicativo de pagamento pode usar permit para que o pagador autorize a movimentação de tokens em um processo de checkout mais simples.Uma carteira pode usar permit para reduzir o número de etapas de transação em interações comuns com ERC-20.Um serviço de relayer pode pagar a taxa de gas em nome do usuário e recuperar as taxas de outra forma.Um contrato inteligente pode combinar permit com
Função Permit e abstração de contas
A função Permit às vezes é discutida em conjunto com a abstração de contas, pois ambas as ideias melhoram a experiência de uso das carteiras.O Permit permite que o proprietário de um token ERC-20 autorize alterações na allowance por meio de assinaturas.A abstração de contas busca tornar as contas cripto mais programáveis e flexíveis.São ferramentas diferentes, mas compartilham um objetivo semelhante.Ambas tentam reduzir o atrito nas interações com blockchain.O Permit se concentra nas aprovações de tokens.A abstração de contas se concentra de forma mais ampla em como as contas autorizam e pagam por ações.Um aplicativo cripto pode usar as duas ideias no mesmo projeto de produto.Por exemplo, uma carteira ou sistema de smart accounts pode permitir transações patrocinadas e, ao mesmo tempo, usar aprovações de tokens compatíveis com permit.Os usuários não precisam entender todas as camadas técnicas, mas os desenvolvedores devem implementar cada uma corretamente.Riscos de segurança da função Permit
O principal risco para os usuários é o phishing de assinaturas.Um site malicioso pode solicitar que o usuário assine um permit que aprova um spender perigoso.Como uma assinatura de permit não é uma transferência normal de tokens, alguns usuários podem pensar que ela é inofensiva.Essa suposição é perigosa.Um permit pode autorizar um spender a mover tokens posteriormente.Antes de assinar, os usuários devem verificar o endereço do spender, a quantidade de tokens, o nome do token e o prazo.Os usuários devem rejeitar assinaturas pouco claras, inesperadas ou solicitadas por sites desconhecidos.Outro risco é a aprovação ilimitada.Se um usuário assinar um permit com um valor muito alto, o spender poderá obter amplo poder de gasto sobre a allowance daquele token.Um terceiro risco é uma implementação inadequada.Se o contrato do token tratar incorretamente os nonces, a separação de domínio, a recuperação de assinatura ou os prazos, as assinaturas poderão ser repetidas ou aceitas quando deveriam falhar.Um quarto risco é a confusão na interface do usuário.Se uma carteira não exibir os dados tipados com clareza, os usuários poderão assinar aprovações sem entendê-las.O Permit melhora a usabilidade, mas também torna mais importante educar os usuários sobre assinaturas.O Permit não elimina o risco de aprovação
A EIP-2612 altera a forma como uma aprovação é autorizada, mas não muda o risco básico de aprovar um spender.Se o spender for malicioso, comprometido ou receber uma allowance excessiva, o usuário ainda poderá perder tokens.Uma aprovação por permit pode ser tão poderosa quanto uma transação normal de
Permit e front-running
Qualquer pessoa que tenha a mensagem assinada pode enviar assinaturas de permit.Isso exige atenção especial ao front-running.Se um usuário assinar um permit e enviá-lo a um aplicativo, outra parte que veja a assinatura poderá enviá-la primeiro.Em muitos casos, isso apenas consome o permit e define a mesma allowance que o usuário pretendia.No entanto, se um aplicativo esperar que a execução do permit e outra ação ocorram em conjunto, um permit enviado antecipadamente por outra parte poderá fazer a transação combinada posterior falhar, pois o nonce já terá mudado.Os desenvolvedores devem projetar fluxos que lidem com esse caso de forma adequada.Muitas vezes, um contrato inteligente pode verificar se a allowance esperada já está disponível e prosseguir, em vez de falhar sem necessidade.As interfaces também devem explicar claramente quando um fluxo de permit falhar.Para os usuários, o ponto principal é que os permits assinados podem ser usados por qualquer pessoa até serem utilizados ou expirarem.Não compartilhe dados de permit assinados a menos que confie no fluxo.Considerações de implementação para desenvolvedores
Os desenvolvedores devem seguir atentamente a especificação da EIP-2612.O hash do tipo permit deve corresponder à estrutura de assinatura esperada.O digest deve usar a codificação da EIP-712 com o separador de domínio e o hash da estrutura do permit.O contrato deve rejeitar permits expirados.O contrato deve rejeitar assinaturas inválidas.O contrato deve rejeitar permits em que o signatário recuperado não seja o proprietário.O contrato deve rejeitar casos inadequados em que o proprietário seja o endereço zero.O contrato deve incrementar o nonce do proprietário após a execução bem-sucedida do permit.O contrato deve emitir o evento padrão
A documentação ERC20Permit da OpenZeppelin apresenta um padrão de implementação amplamente usado em projetos Solidity.
A OpenZeppelin também documenta o uso de Permit ERC-20 em outros ambientes, como o ERC-20 Permit para Stylus.
Mesmo usando uma biblioteca, os desenvolvedores devem testar cuidadosamente o comportamento específico do token.Função Permit vs. meta-transações
Uma meta-transação é um padrão mais amplo em que um usuário assina uma mensagem e outra parte envia uma transação em seu nome.A EIP-2612 pode ser entendida como um padrão específico de assinatura voltado a aprovações.Ela não transforma todas as ações com tokens em ações assinadas.Ela padroniza somente aprovações assinadas para allowances de ERC-20.Esse escopo limitado é intencional.Um padrão mínimo é mais fácil de adotar e integrar em carteiras, contratos e aplicativos.Os desenvolvedores que quiserem transferências assinadas, ações em lote ou patrocínio personalizado de gas talvez precisem de contratos ou padrões adicionais.O Permit é poderoso porque resolve um problema comum sem alterar todo o modelo ERC-20.Ele complementa os sistemas de meta-transações, em vez de substituí-los por completo.Função Permit vs. transferência de tokens
Um permit não é uma transferência.Uma transferência move tokens de um endereço para outro.Um permit atualiza a allowance que um endereço concede a outro.Isso significa que um usuário pode assinar um permit e ainda manter os tokens na mesma carteira até que o spender use a allowance.A movimentação efetiva dos tokens geralmente ocorre por meio de
Função Permit vs. Permit2
A EIP-2612 é um padrão no nível do token.O próprio contrato do token precisa implementar a função permit para que o token seja compatível com a EIP-2612.Outros sistemas de aprovação podem oferecer um comportamento semelhante ao permit por meio de contratos externos.Esses sistemas não são iguais ao suporte nativo à EIP-2612.Essa diferença importa porque as solicitações da carteira, os endereços dos spenders, os sistemas de nonce, os escopos de aprovação e os métodos de revogação podem variar.Ao assinar uma aprovação semelhante a permit, o usuário deve verificar qual contrato está recebendo a autorização.Ao integrar permits, os desenvolvedores devem verificar se o token oferece suporte direto à EIP-2612 ou se exige outro mecanismo de aprovação.Chamar toda aprovação assinada de "EIP-2612" pode causar confusão.A EIP-2612 tem uma interface e uma estrutura de assinatura específicas.Como os usuários devem interpretar uma solicitação de assinatura de permit
Primeiro, o usuário deve verificar o nome do token.Em seguida, deve verificar o endereço do spender ou o aplicativo que está solicitando a permissão.O usuário deve conferir a quantidade aprovada.Também deve verificar se o valor é limitado ou, na prática, ilimitado.O usuário deve verificar o prazo.Também deve confirmar se a solicitação apareceu após uma ação intencional.Se a solicitação aparecer inesperadamente, o usuário deve rejeitá-la.O usuário deve ter ainda mais cautela se o site solicitar várias assinaturas seguidas.O usuário deve evitar assinar mensagens de permit recebidas por links em mensagens diretas, chats falsos de suporte, anúncios suspeitos ou páginas desconhecidas de tokens.O usuário deve lembrar que assinar um permit pode conceder a outro endereço poder para gastar seus tokens.Uma solicitação segura na carteira deve exibir esses campos de forma legível, mas os usuários não devem confiar apenas no design da interface.Por que o Permit melhora a experiência do usuário
O Permit melhora a experiência do usuário ao reduzir o número de transações on-chain necessárias.Ele pode eliminar a etapa de aprovação separada em muitos fluxos de dApps.Ele pode permitir que os usuários interajam com tokens ERC-20 mesmo sem tokens nativos de gas suficientes para uma aprovação independente.Também pode ajudar os aplicativos a patrocinar o gas ou agrupar a aprovação com outra ação.Ele pode reduzir falhas na experiência do usuário causadas por aprovar um token e depois esquecer de concluir a segunda transação.Também pode simplificar a integração de usuários que estão começando a usar aplicativos on-chain.Esses benefícios são especialmente importantes porque as aprovações ERC-20 estão entre os pontos de maior atrito em cripto.No entanto, uma aprovação mais simples não é automaticamente mais segura.Uma boa experiência do usuário deve ser acompanhada por solicitações de assinatura claras, projeto cuidadoso dos spenders e gerenciamento fácil das allowances.Erros comuns relacionados à EIP-2612
Um erro comum é pensar que o permit transfere tokens imediatamente.O Permit apenas atualiza a allowance.Outro erro comum é achar que uma aprovação sem gas significa que ninguém paga gas.Um permit ainda precisa de uma transação on-chain para atualizar o estado do contrato.Um terceiro erro comum é assinar aprovações ilimitadas sem entender o risco associado ao spender.Um quarto erro comum é ignorar o campo de prazo.Um quinto erro comum é confiar em uma solicitação de assinatura apenas porque ela não se parece com uma transação normal.Um sexto erro comum é presumir que todo token ERC-20 oferece suporte à EIP-2612.Um sétimo erro comum é integrar o permit sem testar o ID da rede, o separador de domínio e o comportamento dos nonces em diferentes implantações.Um oitavo erro comum é tratar todos os sistemas semelhantes a permit como se fossem idênticos à EIP-2612.Um nono erro comum é não tratar o envio antecipado de permits em fluxos combinados de contratos.Um décimo erro comum é exibir solicitações de permit de uma forma que os usuários não consigam entender.Boas práticas para usuários
Assine mensagens de permit somente em sites e aplicativos em que confia.Antes de assinar, confira o token, o spender, a quantidade e o prazo.Evite aprovações ilimitadas, a menos que haja uma justificativa sólida.Sempre que possível, use valores de aprovação pequenos.Revogue allowances antigas que não sejam mais necessárias.Não assine mensagens de permit recebidas por links aleatórios, mensagens falsas de suporte ou páginas desconhecidas de airdrop.Use uma carteira separada para dApps experimentais e outra para ativos mantidos no longo prazo.Leia atentamente os avisos da carteira.Não presuma que uma assinatura é segura só porque não exibe diretamente uma taxa de gas.Lembre-se de que outra pessoa pode enviar um permit assinado antes que ele expire.Boas práticas para desenvolvedores
Sempre que possível, use implementações de permit auditadas e bem mantidas.Ao declarar suporte à EIP-2612, siga exatamente a interface oficial da EIP-2612.Use dados tipados da EIP-712 para que as carteiras exibam informações claras sobre a assinatura.Implemente corretamente a separação de domínio.Registre nonces por endereço proprietário.Rejeite assinaturas expiradas.Rejeite signatários inválidos e casos em que o proprietário seja o endereço zero.Emita o evento
Função Permit em uma frase
A função Permit da EIP-2612 permite que o proprietário de um token ERC-20 aprove um spender por meio de uma assinatura EIP-712, atualizando a allowance on-chain sem que o proprietário envie uma transação de aprovação separada.Perguntas frequentes
O que é a função Permit da EIP-2612?
A função Permit é uma extensão do ERC-20 que permite que o proprietário de um token aprove um spender com uma assinatura off-chain que pode ser enviada on-chain posteriormente.O permit transfere tokens?
Não. O permit apenas define uma allowance e não transfere tokens por conta própria.Por que a EIP-2612 é útil?
A EIP-2612 é útil porque reduz o atrito das aprovações, permite experiências de aprovação sem gas e possibilita que aplicativos combinem aprovações com outras ações de contratos inteligentes.O proprietário do token paga gas ao usar o permit?
O proprietário do token não precisa enviar a transação de aprovação, mas alguém ainda precisa pagar a taxa de gas para enviar o permit assinado on-chain.Qual é a diferença entre approve e permit?
Approve é uma transação on-chain enviada pelo proprietário do token, enquanto permit é uma assinatura off-chain que outra parte pode enviar on-chain.Qual é a relação entre a EIP-712 e o permit?
A EIP-712 fornece a assinatura de dados estruturados tipados, que ajuda as carteiras a exibir os detalhes do permit com mais clareza e a vincular assinaturas a um domínio definido.O que é um nonce na EIP-2612?
Um nonce é um valor individual por proprietário que impede a reutilização da mesma assinatura de permit.O que é o prazo de um permit?
O prazo é o momento de expiração após o qual a assinatura do permit deixa de ser válida.A EIP-2612 é segura?
A EIP-2612 pode ser segura quando implementada e usada corretamente, mas os usuários ainda precisam ficar atentos a phishing de assinaturas, aprovações ilimitadas, spenders maliciosos e solicitações pouco claras na carteira.Todos os tokens ERC-20 oferecem suporte a permit?
Não. Somente tokens ERC-20 que implementam a extensão EIP-2612 oferecem suporte à função Permit padrão.Uma assinatura de permit pode sofrer front-running?
Sim. Qualquer pessoa que tenha uma assinatura válida de permit pode enviá-la antes de outra transação. Por isso, os desenvolvedores devem projetar fluxos que considerem essa possibilidade.Como os usuários podem reduzir os riscos do permit?
Os usuários podem reduzir os riscos do permit verificando o spender, limitando os valores de aprovação, usando prazos curtos, evitando sites suspeitos e revogando allowances não utilizadas.Conclusão
A função Permit da EIP-2612 é uma das melhorias mais úteis para a experiência de aprovação do ERC-20.Ela permite que os usuários autorizem allowances de tokens por meio de assinaturas, em vez de transações de aprovação separadas.Isso pode reduzir o atrito relacionado ao gas, melhorar a integração em dApps, permitir fluxos de transações patrocinadas e facilitar a combinação de interações com ERC-20 em uma única jornada do usuário.O padrão usa dados estruturados tipados da EIP-712, separação de domínio, nonces e prazos para tornar as aprovações assinadas mais seguras e específicas.No entanto, o permit não elimina o risco básico das allowances de tokens.Um permit assinado ainda pode conceder a um spender poder real sobre os tokens do usuário.Os usuários devem tratar assinaturas de permit com a mesma seriedade que transações de aprovação.Os desenvolvedores devem implementar o padrão com cuidado, exibir informações claras sobre as assinaturas e lidar com casos extremos, como proteção contra repetição, assinaturas expiradas e envio antecipado de permits.Quando usada corretamente, a EIP-2612 facilita o uso de tokens ERC-20 sem alterar a ideia central de gastos de tokens baseados em allowance.É um padrão pequeno, mas importante, que melhora a usabilidade prática dos aplicativos cripto e mantém a compatibilidade com o ecossistema ERC-20 mais amplo.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

