Rede de postos de gasolina Ethereum (GSN)
Ethereum Gas Station Network (GSN) abstrai o processo de pagamento do gás dos usuários finais, o que minimiza o atrito UX para dapps. Com o GSN, os clientes sem gás podem interagir com contratos inteligentes Ethereum sem que os usuários precisem de ETH para taxas de transação. O GSN é um sistema descentralizado que melhora a usabilidade do dapp sem sacrificar a segurança.
Exemplos de casos de uso para GSN:
- Privacidade : Permitindo a retirada de tokens sem ETH enviados para endereços furtivos
- Pague pelo gás em tokens ERC-20 suportados : permite que os usuários paguem pelo gás em tokens ERC-20 que suportam
permit
a função - Pague pelo gás fora da rede : permite que os usuários paguem pelo gás indiretamente por meio de um rollup L2 ou cartão de crédito
- Integração : permite que os dapps subsidiem o processo de integração para novos usuários
O problema
Sem o GSN, qualquer pessoa que envie uma transação Ethereum precisa ter ETH para pagar as taxas do gás. Isso força os novos usuários a passarem pelo KYC e comprarem ETH antes de começarem a usar qualquer dapp. Isso pode ser um grande obstáculo para usuários sem experiência anterior em criptografia e que não estão familiarizados com o conceito de necessidade de manter ETH em sua carteira para obter gás.
Isso também é um problema de experiência do usuário para os usuários existentes que precisam reabastecer continuamente seu saldo de ETH para pagar as taxas de gás, mesmo que tenham tokens ERC-20 suficientes em sua carteira para pagar pelas transações de que precisam.
Arquitetura
Cliente: assina e envia meta transação para o servidor de retransmissão
Uma metatransação é um nome sofisticado para uma ideia simples: um servidor de retransmissão pode enviar a transação de um usuário e pagar ele mesmo o custo do gás. Em vez de assinar uma transação Ethereum, que exigiria ETH para gás, um usuário assina uma mensagem contendo informações sobre uma transação que gostaria de executar e a envia para um servidor de retransmissão.
Servidores de retransmissão: envia uma transação e paga taxas de gás do protocolo Ethereum por fazê-lo
Ao receber a solicitação de retransmissão de uma transação do cliente, o servidor Relay validará essa transação para garantir o reembolso da quantia de ETH que cobre as despesas de envio e alguma taxa extra para permitir que o retransmissor obtenha lucro.
Se tudo estiver bem, o retransmissor assina uma transação Ethereum nativa, envia-a ao mempool e retorna uma transação assinada ao cliente para validação. Caso algo dê errado, o cliente pode simplesmente escolher um servidor de retransmissão diferente e tentar enviar uma transação por meio de um novo.
Isso cria um efeito “um por todos e todos por um”, onde derrubar o frontend de qualquer dapp é tão difícil quanto derrubar toda a rede. Quanto mais dapps participarem, mais robusta será a garantia de disponibilidade.
Paymaster: concorda em reembolsar o servidor de retransmissão pelas taxas de gás
No GSN toda a lógica de reembolso de gás é implementada dentro dos contratos Paymaster. Um pagador mantém um saldo de ETH no RelayHub e pode implementar qualquer lógica de negócios para decidir se aceita ou rejeita uma metatransação. Por exemplo, aceitar apenas transações de usuários da lista de permissões ou métodos de contrato exigidos para integração de usuários que também passaram por um captcha, ou apenas transações que incluam reembolso em tokens ao Pagador, etc.
Encaminhador: verifica a assinatura do remetente e o nonce
Os contratos de destinatários com reconhecimento de meta-transação dependem apenas de um pequeno contrato de despachante confiável para sua segurança. Este contrato verifica a assinatura e o nonce do remetente original.
Contrato do destinatário: vê o remetente original e executa a transação original
Qualquer método público do contrato do destinatário pode ser executado através do GSN.
Para oferecer suporte a metatransações, os contratos de destinatário herdam de uma classe base simples e os substituem msg.sender
por _msgSender()
. Ele retorna o remetente original que assinou a solicitação de metatransação.
Ainda é possível fazer uma chamada de transação nativa para este contrato. O _msgSender()
método simplesmente retornará msg.sender
se o contrato tiver sido chamado diretamente.
RelayHub: coordena o processo de forma confiável
O RelayHub conecta usuários que executam clientes, servidores de retransmissão e pagadores para que os participantes não precisem conhecer ou confiar uns nos outros.
Os desenvolvedores Dapp não precisam entender ou confiar no funcionamento interno do RelayHub para se integrarem ao GSN. Os contratos do destinatário não estão expostos a possíveis problemas de segurança no RelayHub.
Nos bastidores, o RelayHub ajuda os clientes a descobrir o melhor servidor de retransmissão de terceiros, evita que servidores de retransmissão de terceiros censurem transações e garante que os Paymasters paguem aos servidores de retransmissão as taxas de gás mais taxas de transação.
Avaliações
Ainda não existem avaliações.