Documento técnico

Arquitetura do Meu Dinheiro

Separação entre domínio, casos de uso, infraestrutura e apresentação para reduzir o acoplamento de regras financeiras à interface mobile.

React Native + ExpoERC-4337PaymasterPolygon 137

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

  1. A calculadora produz uma intenção em BRL ou Token Oficial.
  2. O cotador transforma BRL em quantidade inteira do token.
  3. Agenda, QR ou clipboard resolve o destinatário.
  4. A revisão valida contrato, rede, saldo e patrocínio.
  5. A autenticação libera apenas aquela operação.
  6. O app confere a UserOperation, reproduz o hash e assina localmente.
  7. 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.
Consultar especificação completa no GitHub ↗
Entender Account Abstraction e custo zero →