Paymaster EOA
Paymaster para EOA
Visão Geral
Paymaster Baseado em EOA
Este documento apresenta uma solução de paymaster projetada especificamente para carteiras de Contas de Propriedade Externa (EOA), diferentemente do paymaster definido no EIP-4337. Com modificações mínimas, as carteiras podem integrar esta solução para suportar o patrocínio de taxas de Gas, melhorando significativamente a experiência do usuário.
O que é Paymaster baseado em EOA
O paymaster na EIP-4337 (Abstração de Conta via Especificação de Contrato de Ponto de Entrada) é um componente crucial projetado para melhorar a flexibilidade e a experiência do usuário de transações Ethereum. Ele permite que um terceiro pague pelas taxas de transação de um usuário, removendo a necessidade de os usuários manterem ETH para pagar pelo Gas.
Embora a EIP-4337 tenha introduzido o conceito revolucionário de paymasters para carteiras de contrato inteligente, uma parte significativa do ecossistema Ethereum ainda depende de EOAs. Reconhecendo isso, esta apresenta uma solução de paymaster inovadora projetada especificamente para carteiras EOA. Esta inovação traz os benefícios do patrocínio de transações e uma experiência de usuário aprimorada para a base de usuários da BOT Chain mais ampla, sem exigir uma mudança para carteiras de contrato inteligente. A solução de paymaster para EOA visa democratizar o acesso a transações patrocinadas, tornando as interações Blockchain mais amigáveis e econômicas para milhões de usuários de carteiras EOA existentes.
Como funciona
Uma mudança significativa ocorre no processamento de transações:
-
Função do Validador: Os Validadores não verificam mais os preços individuais do Gas da transação dentro de um bloco.
-
Agrupamento de Transações: As transações privadas são agrupadas em bundles e enviadas para os builders.
-
Priorização: Os builders priorizam com base no preço agregado do Gas de cada bundle.
-
Flexibilidade Intra-Bundle: Dentro de um único bundle, os preços do Gas podem variar, permitindo que transações com taxa zero e taxas mais altas coexistam.
Esta flexibilidade permite recursos inovadores, como taxas de Gas patrocinadas e transações sem Gas.
Definições
Bundle: Um array ordenado de transações que são executadas atomicamente, garantindo que todas as transações no bundle sejam processadas juntas ou de forma alguma.
Builder: Um novo participante na cadeia de suprimentos de MEV responsável pela construção de blocos. Os builders empacotam bundles de transações, transações individuais do txpool público e fluxo de ordem de transações privadas em blocos propostos.
Proposer: Um Validador que seleciona o bloco mais lucrativo das propostas de vários builders para inclusão na Blockchain.
Paymaster: Um componente de infraestrutura que permite o patrocínio de transações, permitindo que terceiros ou o próprio usuário cubram as taxas de Gas.
Sponsor Policy: Um conjunto de regras definidas pelo patrocinador do Gas para determinar quais transações se qualificam para patrocínio. Isso pode incluir critérios como remetentes de transações na whitelist ou tipos de transações específicos.
Fluxo de Trabalho Geral
O processo de patrocínio de Gas envolve vários componentes e etapas-chave:
-
Iniciação do Usuário:
-
Um usuário prepara uma transação usando qualquer Wallet compatível.
-
A Wallet define o preço do Gas como zero para transações potencialmente patrocinadas.
-
-
Envio do Paymaster:
- A Wallet envia a transação com preço de Gas zero para o Paymaster.
-
Verificação da Política de Patrocínio:
-
O Paymaster verifica a transação em relação às políticas de patrocínio existentes.
-
As políticas podem incluir critérios como endereços de remetente/destinatário, tipos de token ou limites de transação.
-
-
Processamento do Patrocínio:
-
Se a transação for elegível para patrocínio: a. O Paymaster cria uma transação de patrocinador com um preço de Gas mais alto. b. A transação original do usuário e a transação do patrocinador são combinadas em um bundle.
-
Se não for elegível, a transação é rejeitada ou devolvida ao usuário para processamento normal.
-
-
Criação e Envio do Bundle:
- Este bundle é enviado para vários MEV builders.
-
Seleção do Builder e Proposta de Bloco:
- Os MEV builders incorporam o bundle em suas propostas de bloco.
-
Inclusão na Blockchain:
-
Os Proposers (Validadores) selecionam o bloco mais lucrativo das propostas dos builders.
-
O bloco selecionado, contendo tanto a transação original do usuário quanto a transação do patrocinador, é adicionado à Blockchain.
-
Isso garante a execução atômica de ambas as transações.
-
-
Processamento Pós-Transação:
- O Gerenciador do Paymaster atualiza a conta do patrocinador, deduzindo o valor apropriado para o Gas patrocinado.
Esta solução permite o patrocínio de Gas contínuo sem exigir mudanças significativas nas infraestruturas de Wallet existentes. Ela fornece um sistema flexível que pode acomodar vários modelos de patrocínio, mantendo a segurança e a integridade da rede Blockchain.
Infraestrutura do Paymaster
Pronto para habilitar experiências sem Gas em seu aplicativo ou Wallet? Aqui estão algumas informações úteis sobre a infraestrutura de paymaster que estão disponíveis na BOT Chain:
- Nodereal. O MegaFuel, desenvolvido pela Nodereal, é uma implementação de paymaster baseada no BOT Chain Paymaster para EOA Wallet. Com modificações mínimas, as carteiras podem integrar o MegaFuel para oferecer patrocínio de taxas de Gas, melhorando significativamente a experiência do usuário. Ao mesmo tempo, os patrocinadores podem personalizar seu patrocínio no MegaFuel, permitindo que usuários patrocinados enviem transações sem Gas.
Especificação da API do Paymaster
Para facilitar a adoção generalizada e garantir a interoperabilidade entre as diversas implementações de Wallets, é crucial estabelecer um conjunto padronizado de especificações de interface para paymasters. Essa padronização permitirá que os desenvolvedores de Wallets integrem recursos de patrocínio de Gas de forma eficiente e consistente, independentemente do serviço de paymaster específico que escolherem usar.
Especificação da API
O Paymaster precisa implementar uma API JSON-RPC chamada pm_isSponsorable, para que possa retornar informações de patrocinador e política para as carteiras. O Paymaster também precisa implementar a API JSON-RPC eth_sendRawTransaction. As especificações detalhadas da API são definidas abaixo:
pm_isSponsorable
Parâmetros de Requisição
-
jsonrpc: A versão do protocolo JSON-RPC ("2.0"). -
id: Um identificador único para a requisição (1 neste exemplo). -
method: O nome do método a ser invocado ("pm_isSponsorable"). -
params: Um array contendo um único objeto com os seguintes campos:-
to: O endereço do destinatário da transação. -
from: O endereço do remetente da transação. -
value: O valor da transação em hexadecimal. -
data: Dados adicionais para a transação em hexadecimal. -
gas: O limite de Gas da transação em hexadecimal.
-
Exemplo:
{
"jsonrpc": "2.0",
"id": 1,
"method": "pm_isSponsorable",
"params": [
{
"to": "0x...", // an address
"from": "0x...", // an address"value": "0xa1",
"data": "0x",
"value": "0x1b4",
"gas" : "0x101b4"
}
]
}
Campos de Resposta
-
jsonrpc: A versão do protocolo JSON-RPC ("2.0"). -
id: O identificador único para a requisição (1 neste exemplo). -
result: Um objeto contendo os detalhes da política de patrocínio:-
(Obrigatório)
Sponsorable: Um booleano indicando se a transação é patrocinada (true ou false). -
(Obrigatório)
SponsorPolicy:. O nome da política de patrocínio.
-
Exemplo:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"Sponsorable": true,
"SponsorPolicy": "a sample policy name"
}
}
eth_sendrawtransaction
A API eth_sendrawtransaction implementada pelo Paymaster deve seguir esta Especificação da API Ethereum. O cliente pode criar uma nova transação de chamada de mensagem ou uma criação de contrato para transações assinadas via API eth_sendrawtransaction.
Parâmetros de Requisição
Os params devem conter os dados da transação assinada.
Exemplo:
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_sendRawTransaction",
"params": [
"0x02f86a6102850df8475800850df84758000a94cd9c02358c223a3e788c0b9d94b98d434c7aa0f18080c080a0bcb0e8ffa344e4b855c6e13ee9e4e5d22cff6ad8bd1145a93b93c5d332100c2ca03765236eba5fbb357e35014fd19ba4b3c6b87f3793bd14dddf7913fc8dcc88bf"
]
}
Campos de Resposta
DATA, 32 Bytes - o hash da transação.
Exemplo:
{
"id": 1,
"jsonrpc": "2.0",
"result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}
Integração de Wallet
Este guia descreve os passos para desenvolvedores de Wallet integrarem serviços de paymaster, permitindo o patrocínio de taxas de Gas para seus usuários. Ao seguir estes padrões, as Wallets podem oferecer transações sem Gas de forma contínua em vários provedores de paymaster.
Fluxo de Trabalho de Interação

A integração envolve a modificação do processo de criação e envio de transações para interagir com os serviços de paymaster.
Os principais passos são:
-
Preparação da Transação:
-
Quando um usuário inicia uma transação, primeiro chame
gm_sponsorablepara verificar se ela é elegível para patrocínio. -
Se for patrocinável, defina o preço do Gas da transação como zero.
-
-
Notificação ao Usuário:
- Informe o usuário que a transação será gratuita e patrocinada pelo "nome da política" retornado pela API.
-
Assinatura da Transação:
- Faça com que o usuário assine a transação com preço de Gas zero.
-
Envio ao Paymaster:
- Envie a transação assinada para o paymaster usando
eth_sendRawTransaction.
- Envie a transação assinada para o paymaster usando
-
Manipulação da Resposta:
-
Processe a resposta do paymaster:
-
Se bem-sucedido, informe o usuário que a transação foi enviada.
-
Se falhar, considere voltar ao processamento normal da transação ou informar o usuário sobre a falha.
-
-
-
Monitoramento da Transação:
- Monitore o status da transação como de costume.
Melhores Práticas
-
Sempre verifique a elegibilidade de patrocínio antes de modificar os preços do Gas.
-
Forneça feedback claro ao usuário sobre o status do patrocínio.
-
Implemente tratamento de erros adequado para casos em que o patrocínio falha.
-
Considere mecanismos de fallback para transações não patrocinadas.
Experimente Transações sem Gas
Experimente o Paymaster em Wallets Populares
Várias Wallets de criptomoeda populares já implementaram a integração com o Paymaster. Este tutorial irá guiá-lo através da experiência de enviar transações sem Gas para Wallets integradas ao paymaster.
Wallets Integradas ao Paymaster
Wallets com funcionalidade de Paymaster integrada oferecem uma experiência contínua para os usuários. Essas Wallets detectam automaticamente se uma transação é elegível para patrocínio. Quando uma transação se qualifica, a Wallet define o preço do Gas como zero sem qualquer intervenção do usuário.
Para ilustrar isso, vamos percorrer o processo de transferência de Stablecoin na BOT Chain.