RPC Best Practices
Um resumo condensado das 25 práticas RPC mais importantes extraídas de cada página desta seção.
Busque em todas as páginas da documentação
Um resumo condensado das 25 práticas RPC mais importantes extraídas de cada página desta seção.
Nunca lance produção em RPC público: Use provedor pago ou nó self-hosted com SLA (RPC Providers).
Armazene keys em variáveis de ambiente: Nunca commite API keys; faça proxy de leituras sensíveis via backend.
Emparelhe URLs HTTP e WSS: Assinaturas precisam de wss:// do mesmo dashboard do vendor (WebSocket Subscriptions).
Defina commitment explicitamente: Padrão confirmed para UX; finalized para tesouraria (RPC Basics).
Verifique null em getAccountInfo: value: null significa conta ausente - não decodifique às cegas (Core RPC Methods).
Prefira getMultipleAccounts: Agrupe pubkeys conhecidas em vez de N chamadas seriais getAccountInfo.
Nunca rode GPA sem filtro na mainnet: Sempre filtro memcmp/dataSize ou use indexer (getProgramAccounts & Filters).
Divida lotes grandes: 50-100 contas por requisição getMultipleAccounts (Pagination & Efficiency).
Paginate assinaturas server-side: Cursor de getSignaturesForAddress pertence à sua API, não a clientes mobile para whales.
Abort assinaturas WebSocket: Limpe no unmount para evitar vazamentos de conexão.
Use signatureNotifications para confirmações: Prefira assinaturas a loops de polling a 200ms.
Simule antes de envios na mainnet: Leia unitsConsumed e logs (Priority Fee & Simulation APIs).
Atualize priority fees por lote: Amostras obsoletas de getRecentPrioritizationFees subprecificam durante congestionamento.
Adicione margem de CU: Defina limite de compute unit em 110% do consumo simulado.
Use DAS para NFTs de carteira: getAssetsByOwner supera GPA manual de metadados (The DAS API).
Documente URLs DAS e RPC: Podem diferir nos dashboards de provedor.
Implemente failover RPC: URL secundária em 429/503 com backoff exponencial.
Rate-limit seus próprios clientes: Proteja cota do provedor de tempestades de retry.
Alinhe RPC da CLI e do app: solana config get deve corresponder a RPC_URL ao depurar.
Cache só dados imutáveis: TTL curto para metadados de mint; nunca cache saldos pós-swap sem invalidação.
Monitore lag de slot: RTT de getSlot e detecção de stall alertam endpoints não saudáveis.
Evite getTransaction pesado em browsers: Faça proxy via indexer para visões de histórico.
Use jsonParsed seletivamente: Fallback para base64 + decode IDL quando parser não suportado.
Planeje migração para indexer cedo: Se scans GPA ou histórico excedem milhares de linhas, inicie pipeline Geyser (Indexing Basics).
Fixe @solana/kit 7.0.0: RPC tipado reduz bugs de params vs fetch bruto.
getProgramAccounts sem filtro na mainnet em produção - timeouts, custo e bans.
Protótipos locais e uso raro de CLI apenas - não tráfego mainnet voltado ao usuário.
RPCs de simulação e priority fee alimentam decisões de compute budget - veja seção de otimização de transação.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026