Arquitetura em camadas
- Domain: entidades e invariantes de contas, pagamentos, taxa, reserva e patrocínio.
- Fiat Gateway: cobrança Pix, resgate e reconciliação sem receber chaves.
- Application: casos de uso, estado global e portas substituíveis.
- Infrastructure: RPC, Gateway ERC-4337, contratos, SecureStore e autenticação.
- Presentation: navegação, telas e componentes React Native.
As dependências apontam para dentro: apresentação → aplicação → domínio. Adaptadores de infraestrutura implementam as portas definidas pela aplicação.
Fluxo transacional
- A calculadora produz uma intenção em BRL ou Token Oficial.
- O cotador transforma BRL em quantidade inteira do token.
- Agenda, QR ou clipboard resolve o destinatário.
- A revisão valida contrato, rede, saldo e patrocínio.
- A autenticação libera apenas aquela operação.
- O app confere a UserOperation, reproduz o hash e assina localmente.
- Bundler envia; EntryPoint executa; Paymaster paga o gás em POL.
Pedido de pagamento
O value object PaymentRequest representa uma solicitação EIP-681. O contrato-alvo é o Token Oficial e a chamada descreve transfer(address,uint256).
QR Code e texto copiado carregam uma intenção. Nenhum dos dois assina ou transmite transações.
Agenda e clipboard
validateContactDraft centraliza nomes e endereços únicos. Um destinatário novo só é salvo após confirmação on-chain; falha de persistência nunca altera o resultado financeiro confirmado.
O mesmo parser valida QR e clipboard, sempre encaminhando o conteúdo para a tela de revisão.
Fronteiras de segurança
- Chaves privadas permanecem no armazenamento seguro.
- AsyncStorage contém somente estado público.
- Dados de RPC, QR, contrato e clipboard são não confiáveis.
- A resposta do Gateway é decodificada e verificada antes da assinatura.
- Credenciais de Bundler e Paymaster permanecem no backend.
- Swap e contratos de produção permanecem bloqueados até auditoria.
Entender Account Abstraction e custo zero →