RPC Best Practices
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
confirmedpara UX;finalizedpara tesouraria (RPC Basics). -
Verifique null em getAccountInfo:
value: nullsignifica 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
getSignaturesForAddresspertence à 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
unitsConsumede logs (Priority Fee & Simulation APIs). -
Atualize priority fees por lote: Amostras obsoletas de
getRecentPrioritizationFeessubprecificam durante congestionamento. -
Adicione margem de CU: Defina limite de compute unit em 110% do consumo simulado.
-
Use DAS para NFTs de carteira:
getAssetsByOwnersupera 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 getdeve corresponder aRPC_URLao 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
getSlote 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.
FAQs
Qual é o maior erro de RPC?
getProgramAccounts sem filtro na mainnet em produção - timeouts, custo e bans.
RPC público é aceitável alguma vez?
Protótipos locais e uso raro de CLI apenas - não tráfego mainnet voltado ao usuário.
Como práticas RPC se ligam à aterrissagem de tx?
RPCs de simulação e priority fee alimentam decisões de compute budget - veja seção de otimização de transação.
Relacionados
- RPC Basics - entrada da seção
- RPC Providers - escolha de vendor
- Pagination & Efficiency - padrões de escala
- Indexing Best Practices - além de RPC
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.