Arquitetura recomendada
Separe cliente, backend e acesso à rede. O frontend não deve falar com a chain direamente para operações sensíveis; o backend concentra RPC, filas e segredos.Visão geral
Fluxo de leitura vs escrita
Papel de cada componente
Frontend / aplicativo
Frontend / aplicativo
Interface para usuários e operadores urbanos. Exibe saldos, status de transações e dados indexados vindos do backend. Não armazena private keys de deploy nem de serviço.
Backend / API
Backend / API
Orquestra regras de negócio, autenticação e integração com a testnet. Envia transações assinadas via RPC, persiste
transactionHash e blockNumber, e expõe APIs estáveis para o frontend.RPC público
RPC público
Endpoint
https://rpc.fmartns.dev para métodos eth_*, net_* e web3_*. Leitura de estado, estimativa de gas e envio de transações já assinadas. Sem debug_*, admin_*, engine_* ou txpool_*.Explorer da rede
Explorer da rede
Consulta humana de blocos, transações, endereços e contratos em explorer.fmartns.dev. Complementa o RPC em suporte, auditoria e validação visual de deploys.
Indexador (opcional)
Indexador (opcional)
Worker que consome eventos (
eth_getLogs) a partir do último bloco salvo. Alimenta banco da aplicação com dados de contratos (IoT, identidade, auditoria). Veja acordeão Indexação de eventos abaixo.Ciclo de uma transação
Checklist de integração
Chain ID e rede
Chain ID e rede
- Fixe
chainId = 20260520no cliente e valide na inicialização. - RPC:
https://rpc.fmartns.dev. - Não assuma que a rede é Ethereum mainnet ou testnet pública.
Confirmações e finalidade
Confirmações e finalidade
- Aguarde receipt com
statusde sucesso. - Em QBFT estável, 1 confirmação costuma bastar para muitos fluxos; fluxos críticos podem exigir política interna adicional.
- Persista
blockNumberetransactionHashno seu banco.
Indexação de eventos
Indexação de eventos
- Armazene último bloco processado.
- Retome de
último + 1após restart. - Use filtros por contrato e tópicos de evento; evite varrer toda a chain sem necessidade.
Resiliência de RPC
Resiliência de RPC
- Retry com backoff em erros transitórios.
- Timeout configurável.
- Não faça polling agressivo; respeite limites razoáveis.
- Trate erros JSON-RPC explicitamente.
Segurança de chaves
Segurança de chaves
- Nunca coloque private keys no frontend.
- Separe contas: usuário final, deployer, serviço backend.
- Use
.env, secret manager ou vault em produção. - Nunca use chave de validador em aplicação ou deploy.
Envio de transações pelo backend
Quando o backend assina transações:- Carregue chave apenas no servidor.
- Estime gas (
estimateGas) e definagasPricecompatível com rede legada. - Envie via
eth_sendRawTransactionou SDK equivalente. - Aguarde receipt e grave hash + bloco.
O que não fazer
- Depender de
debug_*,admin_*,engine_*outxpool_*no endpoint público. - Assumir EIP-1559, blobs ou
PUSH0sem verificar Diferenças em relação ao Ethereum. - Expor endpoints internos, métricas ou painéis operacionais na documentação voltada ao usuário.
- Hardcodar chaves privadas em repositório.
Evolução futura
Uma página dedicada a backend/indexer (workers, filas, reprocessamento) pode ser adicionada depois. Por ora, combine este guia com Usar o RPC e Consultar no explorer.Próximos passos
FAQ
Perguntas frequentes
Deploy de contratos
Publicar contratos na testnet
