Nós RPC da Solana: Configuração, Provedores e Melhores Práticas
Complete guide to Solana RPC nodes. Learn how they work, compare top providers like Helius and QuickNode, and fix rate limit errors for production dAp...
Os nós RPC da Solana fornecem as interfaces de leitura, envio e assinatura que os aplicativos usam para se comunicar com a rede. Recursos, limites, preços, requisitos de hardware e números de desempenho dos provedores mudam ao longo do tempo, portanto, as decisões de produção devem ser verificadas em relação à documentação atual e testes de carga de trabalho.
Última atualização: julho de 2025
Os endpoints públicos da Solana podem ser úteis para o desenvolvimento, mas não são uma garantia de serviço de produção universal. Se um dApp retorna erros 429, trava em consultas de conta ou tem problemas de envio sob carga, seu caminho de RPC é um componente a ser investigado junto com a construção da transação, taxas, vencimento, rede e condições do cluster.
Este guia aborda o que é um nó RPC da Solana, como ele difere de um nó validador, como as solicitações fluem pelo sistema, onde obter URLs de endpoints públicos, quais métodos RPC são mais importantes, como se conectar via @solana/web3.js, quais provedores gerenciados avaliar, o que a auto-hospedagem realmente exige e como corrigir os erros de limite de taxa que você provavelmente já está vendo.
TL;DR: Para desenvolvimento, use os endpoints públicos gratuitos da Solana Foundation. Para produção, use um provedor gerenciado como Helius, QuickNode, Alchemy ou Triton One. A auto-hospedagem oferece mais controle operacional, mas ainda exige planejamento de capacidade, políticas de acesso, monitoramento e orientações de hardware atualizadas.
Pular para:
- O que são nós RPC da Solana?
- Nó RPC vs. Nó Validador
- Como os nós RPC da Solana funcionam
- Tipos de nós RPC da Solana
- Por que a qualidade do nó RPC importa: DeFi, NFTs e desempenho de dApps
- Melhores provedores de nós RPC da Solana
- Conectando seu App usando @solana/web3.js
- Métodos RPC da Solana: O que você pode consultar
- Como executar seu próprio nó RPC da Solana
- Erros comuns de RPC da Solana e como corrigi-los
- Perguntas frequentes
- Escolhendo a estratégia de RPC correta para Solana
O que são nós RPC da Solana?
Um nó RPC da Solana é um servidor que implementa a API JSON-RPC da Solana, aceitando solicitações de aplicativos clientes e retornando dados do estado da blockchain em resposta. dApps, carteiras, exploradores de blocos e scripts automatizados usam esses nós para ler saldos de contas, enviar transações e assinar eventos na blockchain sem manter uma cópia local do livro-razão (ledger).
Materiais históricos citam uma taxa de transferência teórica da Solana próxima a 65.000 TPS e uma duração de slot alvo próxima a 400 milissegundos. Nenhum dos dois é um resultado garantido em tempo real: definições de transação, slots pulados, tráfego de votos, carga de trabalho, condições do cluster e versões de software afetam o desempenho observado. A cadência alvo e o volume do estado da conta ainda impõem demandas substanciais à infraestrutura de RPC.
Chamada de Procedimento Remoto (RPC) é um padrão de comunicação no qual um programa em uma máquina chama uma função em outra máquina como se fosse local, com a complexidade da rede abstraída. Seu dApp pode consultar o estado da conta e enviar transações para um nó remoto em vez de manter sua própria cópia do livro-razão. A Solana usa JSON-RPC 2.0 como seu protocolo de transmissão: um formato leve que roteia chamadas pelo nome do método via HTTP ou WebSocket, não por caminhos de URL baseados em recursos como APIs REST.
A Solana Foundation opera endpoints públicos gratuitos em https://api.mainnet-beta.solana.com e URLs equivalentes para devnet e testnet. Esses endpoints aplicam limites de taxa (rate limits) por endereço IP. Quando seu aplicativo excede esses limites, ele recebe erros HTTP 429 (Too Many Requests), causando falhas intermitentes e experiência do usuário degradada sob carga.
Nó RPC vs. Nó Validador: Entendendo a Diferença
Um nó RPC serve dados da blockchain para clientes externos via API JSON-RPC. Um nó validador participa do consenso e vota na validade do bloco. Esses são os dois principais tipos de nós na Solana e servem a propósitos distintos.
| Atributo | Nó RPC | Nó Validador |
|---|---|---|
| Papel Principal | Serve dados da blockchain para clientes externos via API JSON-RPC | Participa do consenso Tower BFT; vota na validade do bloco a cada slot |
| Participação no Consenso | Nenhuma | Sim — vota em cada slot |
| Staking / Recompensas | Não é necessário investir em staking; sem recompensas de bloco | Requer SOL em staking; ganha recompensas de staking de SOL |
| Requisito de RAM | Mínimo de 256 GB (mantém o estado completo da conta para respostas de consulta) | Menor RAM; prioriza rede de baixa latência para votação |
| Como é acessado | Via URL de endpoint HTTP ou WebSocket | Identificado pela chave pública da conta de voto |
Os nós validadores participam do consenso Tower BFT, um mecanismo de votação baseado em Proof-of-Stake. O Proof of History (PoH), mecanismo de sequenciamento criptográfico da Solana (não seu protocolo de consenso), estabelece a ordenação antes que os votos sejam computados. O Tower BFT é a camada de consenso; o PoH cuida da cronometragem.
Gulf Stream, o protocolo de encaminhamento de transações da Solana, envia transações diretamente para os nós líderes atuais e futuros, ignorando a Mempool que outras blockchains usam. Os validadores lidam com esse processo de encaminhamento. Os nós RPC não.
Executar um nó RPC não requer SOL em staking. Alguns operadores executam tanto a funcionalidade de validador quanto a de RPC na mesma máquina física, mas as funções permanecem logicamente separadas: uma vota no consenso, a outra atende às consultas dos clientes. Para os requisitos de hardware envolvidos na auto-hospedagem de um nó RPC, as demandas de RAM e armazenamento são substancialmente maiores do que para um validador isolado.
Como os nós RPC da Solana Funcionam: Arquitetura e Fluxo de Dados
Um nó RPC da Solana mantém uma réplica local do livro-razão e do estado da conta, servindo esses dados a qualquer cliente que envie uma solicitação JSON-RPC válida.
O Ciclo de Vida da Solicitação JSON-RPC
- Um aplicativo cliente (dApp, carteira ou script) envia uma solicitação HTTP POST ou mensagem WebSocket para a URL do endpoint do nó RPC.
- O corpo da solicitação contém um payload JSON-RPC 2.0 com quatro campos:
jsonrpc,id,method,params. - O nó RPC recebe a solicitação e a encaminha para o manipulador interno apropriado com base no campo
method. - O nó consulta sua réplica local do livro-razão ou armazenamento de estado de conta para os dados solicitados.
- O nó retorna uma resposta codificada em JSON contendo os dados solicitados ou um objeto de erro estruturado.
Um exemplo concreto de getBalance:
// Solicitação
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": ["SuaChavePúblicaBase58Aqui", {"commitment": "confirmed"}]
}// Resposta
{
"jsonrpc": "2.0",
"result": {
"context": {"slot": 285823400},
"value": 5000000000
},
"id": 1
}
// Nota: o valor está em lamports. Divida por 1.000.000.000 para converter para SOL.Ao contrário das APIs REST que usam URLs baseadas em recursos, o JSON-RPC roteia cada chamada através de um único endpoint usando o campo method. Desenvolvedores com experiência em Ethereum reconhecerão a estrutura da solicitação. A Solana difere em três aspectos principais: não há Mempool (as transações vão diretamente para o líder atual), o estado vive em contas em vez do armazenamento de contrato EVM, e os slots de 400ms são cerca de 30 vezes mais rápidos do que os tempos de bloco de 12 segundos do Ethereum.
Níveis de Compromisso (Commitment Levels): processed, confirmed, finalized
Cada chamada RPC que lê o estado aceita um parâmetro de commitment:
processed: O slot mais recente que o nó viu. Mais rápido, mas o slot poderia, teoricamente, ser revertido.confirmed: O slot recebeu a maioria qualificada dos votos dos validadores. Finalidade forte para a maioria dos casos de uso de dApps.finalized: O slot faz parte da cadeia permanentemente. Use para operações de alto risco.
O nó armazena duas categorias de dados. O estado atual da conta reside na RAM: o snapshot de cada conta ativa no último slot confirmado, necessário para respostas rápidas de consulta. Os dados históricos do ledger residem em NVMe SSD: todos os registros de transação organizados por slot. Solana acumula aproximadamente 100 a 200 GB de dados do ledger por dia na mainnet-beta. Esse crescimento de armazenamento, combinado com slots de 400ms, explica por que os nós RPC exigem no mínimo 256 GB de RAM e vários terabytes de armazenamento rápido.
Para a referência completa da API Solana JSON-RPC, consulte docs.solana.com/api.
HTTP vs. WebSocket: Escolhendo o Transporte Certo
| Transporte | Modelo | Uso Típico | Métodos de Exemplo |
|---|---|---|---|
| HTTP / HTTPS | Requisição-resposta (stateless, pull) | Consultas únicas, submissão de transações | getBalance, getAccountInfo, sendTransaction |
| WebSocket / WSS | Conexão persistente (stateful, push) | Assinaturas de eventos em tempo real | accountSubscribe, logsSubscribe, signatureSubscribe |
Tipos de Nós RPC Solana: Públicos, Privados e Auto-hospedados
Os nós RPC Solana são acessados de três maneiras: através dos endpoints públicos gratuitos da Solana Foundation, através de um provedor privado gerenciado, ou através de um nó auto-hospedado que você opera diretamente.
| Tipo | Operador | Custo | Limites de Taxa | Meta de Serviço | Uso Típico |
|---|---|---|---|---|---|
| Endpoint Público | Solana Foundation | Grátis | Sim (aplicado por IP) | Nenhum | Desenvolvimento e testes |
| Provedor Gerenciado | Helius, QuickNode, Alchemy, Triton One | Níveis pagos disponíveis | Limites mais altos ou nenhum em planos pagos | Sim (planos pagos) | dApps de Produção |
| Auto-hospedado | Você | Custo de hardware + operações | Nenhum (você os controla) | Você define | Grandes protocolos, exchanges |
RPC Solana Público Endpoints (Grátis)
A Solana Foundation opera quatro endpoints RPC públicos, um por cluster de rede. Todos são gratuitos, mas aplicam limites de taxa por endereço IP. Todos são gratuitos, mas aplicam limites de taxa por endereço IP.
| Cluster | URL do Endpoint HTTP | URL do Endpoint WebSocket | Caso de Uso |
|---|---|---|---|
| mainnet-beta | https://api.mainnet-beta.solana.com | wss://api.mainnet-beta.solana.com | Rede de produção (o rótulo "beta" é histórico; esta é a mainnet ativa da Solana) |
| devnet | https://api.devnet.solana.com | wss://api.devnet.solana.com | Desenvolvimento e testes; airdrops de SOL grátis disponíveis |
| testnet | https://api.testnet.solana.com | wss://api.testnet.solana.com | Testes de estresse pré-produção |
| localnet | http://localhost:8899 | ws://localhost:8900 | Desenvolvimento local; gerado por solana-test-validator (não é um cluster público oficial) |
Os endpoints públicos aplicam um limite de taxa de aproximadamente 100 requisições por 10 segundos por endereço IP. Exceder esse limite retorna HTTP 429 Too Many Requests. Esses endpoints funcionam para desenvolvimento e testes. Para uso em produção, consulte a comparação de provedores de RPC Solana abaixo.
Para documentação completa do cluster, consulte docs.solana.com/clusters.
Provedores de Nós RPC Privados e Gerenciados
Um provedor de RPC gerenciado pode oferecer endpoints dedicados, limites publicados mais altos, suporte a WebSocket, metas de serviço e múltiplas regiões; os recursos exatos dependem do plano atual. Os quatro principais provedores para Solana:
- Helius: Provedor nativo de Solana com APIs RPC aprimoradas e notificações via webhook
- QuickNode: Provedor multichain com distribuição geográfica e um marketplace de add-ons
- Alchemy: Provedor multichain com ferramentas de desenvolvimento de nível empresarial
- Triton One: Especialista nativo de Solana focado em desempenho RPC bruto para cargas de trabalho institucionais
Uma comparação completa com preços, suporte a WebSocket e diferenciais está na seção de comparação de provedores.
Nós RPC Solana Auto-hospedados
A auto-hospedagem lhe dá controle total sobre sua infraestrutura RPC sem limites de taxa, mas o custo do hardware começa em milhares de dólares e a manutenção DevOps contínua não é trivial. Requisitos completos e uma visão geral da configuração estão em Como Executar Seu Próprio Nó RPC Solana.
Por Que a Qualidade do Nó RPC Importa: Bots de Trading e Arbitragem, NFTs e Desempenho de dApp
A qualidade do seu nó RPC determina diretamente se sua aplicação funciona corretamente em condições de produção. Quatro casos de uso tornam isso concreto.
Bots de Trading e Arbitragem
Protocolos em Solana processam transações sensíveis ao tempo onde a latência determina os resultados. Um bot de trading chamando getLatestBlockhash e sendTransaction através de um endpoint público com limite de taxa arrisca um blockhash desatualizado ou uma transação perdida durante um timeout 429. Na linha do tempo de slots de 400ms da Solana, uma diferença de 50ms no tempo de resposta do RPC pode determinar se uma transação cai no slot alvo ou o perde completamente.
Jupiter (agregador), Raydium (AMM/Opções), Drift (perpetuais) e Marginfi (empréstimos) dependem de acesso RPC de baixa latência. Diferente do Ethereum, as transações Solana pulam completamente o mempool via Gulf Stream, indo direto para o líder atual. Não há fila de ordenação para recorrer caso sua chamada RPC chegue tarde.
Cunhagem de NFTs e Monitoramento de Logs
Cunhagens de NFTs de alta demanda geram picos de centenas de chamadas sendTransaction concorrentes de compradores competindo por oferta limitada. Um endpoint público limitado a ~10 requisições por segundo retorna erros 429 para a maioria dos participantes durante quedas de pico. Marketplaces de NFTs como Magic Eden e Tensor usam assinaturas WebSocket logsSubscribe para detectar eventos de cunhagem em tempo real, o que requer um provedor que lide com conexões WebSocket estáveis em escala.
Aplicações de carteira chamam getBalance e getTokenAccountBalance para cada ativo que um usuário detém, além de getAccountInfo para ler metadados na blockchain. Uma carteira atendendo 10.000 usuários ativos pode emitir dezenas de milhares de consultas RPC por minuto. Um provedor RPC privado com capacidade de QPS (queries per second) suficiente mantém essas consultas resolvendo sem degradar a experiência do usuário. QPS aqui se refere à taxa de transferência de requisições RPC, não à taxa de transferência de transações no nível da rede Solana.
Plataformas de análise e indexadores chamam getBlock repetidamente para replicar o histórico completo de transações do ledger Solana. Uma sincronização histórica completa emite milhares de requisições getBlock em sequência. Nós RPC auto-hospedados ou planos de nível empresarial dedicados são as únicas opções que sustentam esse volume de forma confiável. Exchanges Centralizadas executando seus próprios nós RPC Solana usam padrões semelhantes de alta taxa de transferência para reconciliar saldos de usuários e detectar depósitos em escala.
O tempo de slot de 400ms da Solana, comparado ao tempo de bloco aproximado de 12 segundos do Ethereum, significa que uma dApp Solana consulta o RPC aproximadamente 30 vezes mais frequentemente por unidade de tempo para operações equivalentes, tornando o desempenho do nó RPC desproporcionalmente mais crítico aqui do que na maioria das outras redes. Se você está atingindo limites de taxa sob tráfego de produção, atualizar para um provedor RPC privado é a solução mais direta.
Comparando Provedores de Nós RPC Solana
Para a maioria das dApps de produção, a questão não é se usar um provedor de RPC gerenciado, mas qual deles se adapta à sua carga de trabalho. A tabela abrange as quatro opções principais com o endpoint público gratuito da Solana Foundation como base.
| Provedor | Nativo Solana | Nível Gratuito | Nível Pago (aprox.) | Nó Dedicado | WebSocket | Regiões | Diferencial Principal |
|---|---|---|---|---|---|---|---|
| Helius | Sim | Sim | ~US$ 49-499/mês | Sim | WebSocket | EUA, UE | APIs Aprimoradas: webhooks, análise de transações, APIs NFT |
| QuickNode | Não (multicadeia) | Sim (teste) | ~US$ 49-399/mês | Sim | WebSocket | EUA, UE, Ásia + | Marketplace de complementos; ampla cobertura multicadeia |
| Alchemy | Não (multicadeia) | Sim | ~US$ 49-399/mês | Sim | WebSocket | EUA, UE | Ferramentas para desenvolvedores empresariais; Webhooks Notify |
| Triton One | Sim | Não | Personalizado/corporativo | Sim | WebSocket | EUA, UE, Ásia | Desempenho de nível institucional; entre em contato para obter preços |
| Fundação Solana (pública) | Sim | Gratuito (com limite de taxa) | N/A | Não | WebSocket (com limite de taxa) | EUA | Apenas para desenvolvimento e testes |
As informações de preços nesta tabela estavam precisas no momento da publicação. Os planos, preços e recursos dos provedores mudam com frequência. Verifique os detalhes atuais diretamente no site de cada provedor antes de fazer uma seleção.
Última Atualização: Julho de 2025
Helius anuncia métodos RPC focados em Solana, webhooks e recursos de análise de transações. As capacidades, cotas, preços, regiões e termos de serviço devem ser verificados diretamente em helius.dev e testados com a carga de trabalho pretendida.
QuickNode anuncia infraestrutura RPC multicadeia, Endpoints regionais e complementos opcionais. Verifique a cobertura atual de Solana, cotas, preços e termos de serviço em quicknode.com, em seguida, compare os métodos e regiões necessários.
Alchemy anuncia infraestrutura de desenvolvedor multicadeia que inclui suporte a Solana. Confirme a cobertura de métodos atual, comportamento do WebSocket, limites, regiões e preços em alchemy.com antes de tratá-la como equivalente a outro provedor.
Triton One anuncia infraestrutura Solana para cargas de trabalho de maior vazão. Sua latência, disponibilidade, cobertura geográfica, limites e termos comerciais exigem verificação direta em triton.one e testes específicos da carga de trabalho.
GenesysGo operou anteriormente um serviço RPC Solana sob a marca Shadow. Verifique o status atual em genesysgo.com antes de avaliar.
Todos os principais provedores oferecem níveis gratuitos ou planos de teste suficientes para desenvolvimento e testes. Os limites de taxa se tornam uma preocupação de produção apenas quando sua aplicação atende usuários reais em escala.
Como Avaliar um Provedor RPC Solana
O provedor certo depende da sua carga de trabalho:
| Sua Situação | Ponto de Partida para Avaliação |
|---|---|
| Desenvolvedor solo ou equipe pequena, orçamento limitado | Nível gratuito do Helius ou teste gratuito do QuickNode; atualize quando atingir os limites de taxa |
| dApp de produção apenas em Solana | Helius (nativo Solana, APIs aprimoradas) ou Triton One (se a latência p99 for a principal preocupação) |
| Equipe multicadeia (Solana mais Ethereum ou outras) | QuickNode ou Alchemy (ambos suportam várias cadeias sob uma única conta) |
| Corporativo com requisitos rigorosos de SLA | QuickNode (nível corporativo) ou Alchemy (reputação corporativa) |
| Protocolo DeFi de alta frequência ou operação de MEV | Triton One (foco institucional) ou um nó RPC auto-hospedado |
| Controle máximo, sem limites de taxa, grande equipe de DevOps | Nó RPC auto-hospedado (ver requisitos de hardware e visão geral da configuração) |
As reivindicações de latência dos provedores não são intercambiáveis. p50 é o tempo de resposta mediano, enquanto p99 captura os 1% mais lentos das requisições e pode importar para operações sensíveis ao tempo. Os resultados reais dependem da combinação de métodos, carga, proximidade geográfica, cache e limites do plano, portanto, compare o padrão de requisição pretendido antes de escolher um plano pago.
Conectando Seu App a um Nó RPC Solana Usando @solana/web3.js
Mudar do endpoint público da Fundação Solana para um provedor privado requer a alteração de uma linha em sua aplicação: a string de URL passada para o construtor Connection.
Nota de versão: Exemplos de código nesta seção usam @solana/web3.js v1.x, o padrão de produção atual. Solana Labs está desenvolvendo a v2.0 com uma API significativamente diferente. Se você estiver usando a v2.0, consulte a documentação oficial da v2.0 para métodos equivalentes.
Instalar e Conectar
Etapa 1: Instalar o pacote
npm install @solana/web3.jsEtapa 2: Instanciar uma Conexão e consultar um Saldo
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
// Obtenha o endpoint de uma variável de ambiente — nunca codifique um URL privado em código
const RPC_ENDPOINT = process.env.RPC_URL ?? "https://api.devnet.solana.com";
const connection = new Connection(RPC_ENDPOINT, "confirmed");
async function getWalletBalance(address: string): Promise<void> {
const publicKey = new PublicKey(address);
// getBalance retorna lamports; divida por LAMPORTS_PER_SOL (10^9) para obter SOL
const balanceLamports = await connection.getBalance(publicKey);
const balanceSOL = balanceLamports / LAMPORTS_PER_SOL;
console.log(`Saldo: ${balanceSOL} SOL`);
}
**Etapa 3: Ler dados da conta**
async function getAccountData(address: string): Promise<void> {
const publicKey = new PublicKey(address);
// getAccountInfo retorna null se a conta não existir
const accountInfo = await connection.getAccountInfo(publicKey);
if (!accountInfo) {
console.log("Conta não encontrada");
return;
}
console.log("Programa proprietário:", accountInfo.owner.toBase58());
console.log("Comprimento dos dados (bytes):", accountInfo.data.length);
console.log("Lamports:", accountInfo.lamports);
}
**Etapa 4: Enviar uma transação**
import {
Transaction,
SystemProgram,
Keypair,
sendAndConfirmTransaction,
} from "@solana/web3.js";
async function transferSOL(
sender: Keypair,
recipientAddress: string,
amountSOL: number
): Promise<string> {
const recipient = new PublicKey(recipientAddress);
const lamports = amountSOL * LAMPORTS_PER_SOL;
const transaction = new Transaction().add(
SystemProgram.transfer({
fromPubkey: sender.publicKey,
toPubkey: recipient,
lamports,
})
);
// sendAndConfirmTransaction aguarda o compromisso "confirmed" antes de resolver
const signature = await sendAndConfirmTransaction(connection, transaction, [sender]);
return signature;
}
**Etapa 5: Configurar a troca de endpoint baseada em ambiente**
Configure um módulo de configuração para trocar clusters por meio de uma variável de ambiente em vez de alterar o código da aplicação:
// config/rpc.ts
const RPC_ENDPOINTS: Record<string, string> = {
"mainnet-beta": "https://api.mainnet-beta.solana.com",
"devnet": "https://api.devnet.solana.com",
"private": process.env.PRIVATE_RPC_URL ?? "",
};
const NETWORK = process.env.SOLANA_NETWORK ?? "devnet";
export const connection = new Connection(RPC_ENDPOINTS[NETWORK], "confirmed");
**Nota de segurança:** Nunca codifique em seu URL de endpoint RPC privado em JavaScript do lado do cliente. Um URL exposto no navegador vaza sua Chave da API para quem inspecionar o tráfego da rede. Encaminhe-o por meio de um proxy do lado do servidor ou rota de API de backend.
Para a referência completa da API @solana/web3.js, consulte [solana-labs.github.io/solana-web3.js](https://solana-labs.github.io/solana-web3.js/).)
### Conexões RPC HTTP vs. WebSocket: Quando Usar Cada Uma
| Cenário | Usar HTTP | Usar WebSocket |
|---|---|---|
| Obter um Saldo de carteira uma vez | Sim | Não |
| Enviar uma transação | Sim | Não |
| Monitorar uma conta para alterações em tempo real | Não | Sim |
| Transmitir logs de transação para um programa | Não | Sim |
| Rastrear a confirmação de uma assinatura específica | Não | Sim |
Conexões WebSocket usam `wss://` em vez de `https://`. A maioria dos provedores gerenciados fornece ambos os endpoints sob o mesmo plano.
// Assinatura WebSocket: monitorar alterações de conta em tempo real
const publicKey = new PublicKey("SuaChavePublicaDaContaAqui");
const connectionWithWS = new Connection(
process.env.RPC_URL ?? "https://api.devnet.solana.com",
{
commitment: "confirmed",
wsEndpoint: process.env.WSS_URL ?? "wss://api.devnet.solana.com",
}
);
// onAccountChange retorna um ID de assinatura usado para limpeza posterior
const subscriptionId = connectionWithWS.onAccountChange(
publicKey,
(accountInfo, context) => {
console.log("Conta alterada no slot:", context.slot);
console.log("Novo saldo em lamports:", accountInfo.lamports);
},
"confirmed"
);
// Remova a assinatura quando não for mais necessária:
// connectionWithWS.removeAccountChangeListener(subscriptionId);Lidando com limites de taxa (Rate Limits) e erros 429
Um erro 429 (Too Many Requests) de um endpoint público da Solana significa que sua aplicação excedeu o limite de taxa por IP. Três estratégias resolvem isso:
- Mude para um provedor privado gerenciado. Helius, QuickNode, Alchemy e Triton One oferecem planos dimensionados para tráfego de produção. Consulte a comparação de provedores de RPC privados da Solana.
- Implemente o backoff exponencial. Em uma resposta 429, tente novamente com um atraso que dobra a cada tentativa (veja o código abaixo).
- Agrupe leituras de contas com
getMultipleAccounts. Buscar 20 contas em uma chamada consome uma solicitação em vez de 20.
// Wrapper de backoff exponencial para qualquer chamada RPC
async function withRetry<T>(
fn: () => Promise<T>,
maxRetries: number = 5
): Promise<T> {
let attempt = 0;
while (attempt < maxRetries) {
try {
return await fn();
} catch (error: any) {
const is429 = error?.message?.includes("429");
if (is429 && attempt < maxRetries - 1) {
// Aguarda 500ms, depois 1s, 2s, 4s, 8s
const waitMs = 500 * Math.pow(2, attempt);
await new Promise((resolve) => setTimeout(resolve, waitMs));
attempt++;
} else {
throw error;
}
}
}
throw new Error("Limite máximo de tentativas excedido");
}Métodos RPC da Solana: O Que Você Pode Consultar
A API JSON-RPC da Solana expõe mais de 80 métodos. A tabela abaixo abrange os que a maioria dos desenvolvedores de dApp usa regularmente.
Métodos RPC HTTP
| Categoria | Método | Descrição | Caso de Uso Comum |
|---|---|---|---|
| Dados da Conta | getAccountInfo | Retorna todos os dados armazenados em uma conta | Lendo o estado da conta de propriedade do programa |
| Dados da Conta | getBalance | Retorna o Saldo de SOL para uma chave pública (em lamports) | Exibição do saldo da carteira |
| Dados da Conta | getTokenAccountBalance | Retorna o saldo de tokens SPL para uma conta de token | Saldo da carteira de tokens |
| Dados da Conta | getMultipleAccounts | Retorna dados para múltiplas contas em uma única chamada | Leituras em lote (reduz a exposição ao limite de taxa) |
| Transação | sendTransaction | Envia uma transação assinada para a rede | Qualquer operação de escrita |
| Transação | simulateTransaction | Simula uma transação sem transmiti-la | Validação pré-voo |
| Transação | getTransaction | Retorna detalhes da transação confirmada por assinatura | Busca no histórico de transações |
| Bloco / Slot | getSlot | Retorna a altura atual do slot | Monitoramento do progresso da rede |
| Bloco / Slot | getLatestBlockhash | Retorna o blockhash mais recente e o último slot válido | Obrigatório antes de enviar qualquer transação |
| Bloco / Slot | getBlock | Retorna todas as transações em um determinado slot | Análise e indexação na blockchain |
getRecentBlockhash foi descontinuado. Use getLatestBlockhash em seu lugar. A substituição também retorna lastValidBlockHeight, o que permite um manuseio confiável do vencimento da transação.
Métodos de Assinatura WebSocket
| Método | O Que Faz | Caso de Uso Comum |
|---|---|---|
accountSubscribe | Envia atualizações quando uma conta específica muda | Monitoramento de saldo em tempo real |
logsSubscribe | Transmite logs de transação que correspondem a um filtro | Monitoramento de eventos DeFi, detecção de mintagem NFT |
signatureSubscribe | Notifica quando uma assinatura de transação é confirmada | Rastreamento de confirmação de transação |
As assinaturas WebSocket são adequadas para qualquer dApp que precise reagir a eventos na blockchain sem polling. accountSubscribe é acionado quando os dados de uma conta específica mudam, útil para rastrear a carteira de um usuário ou a conta de estado de um programa Solana (o equivalente a um Smart Contract no Ethereum). logsSubscribe transmite logs de transação que correspondem a um filtro de ID de programa, usado por protocolos DeFi como Jupiter e Raydium para detectar eventos de troca (swap) assim que eles acontecem.
Anchor, o framework de desenvolvimento de programas Solana mais utilizado, gera clientes TypeScript que chamam esses métodos por meio do @solana/web3.js internamente. A configuração do RPC aplica-se de forma idêntica a dApps baseados em Anchor.
Para a referência completa dos métodos, incluindo parâmetros, tipos de retorno e códigos de erro, consulte a Documentação da API RPC da Solana.
Como Executar Seu Próprio Nó RPC Solana: Requisitos e Visão Geral da Configuração
Hospedar seu próprio nó RPC Solana oferece controle total, sem limites de taxa e máxima privacidade de dados. O investimento em hardware chega a milhares de dólares, e manter o nó saudável requer capacidade de DevOps dedicada. Grandes protocolos, exchanges e equipes com capacidades de infraestrutura existentes são o público para este caminho.
Requisitos de Hardware
| Componente | Mínimo | Recomendado para Produção |
|---|---|---|
| CPU | 12 núcleos, 3,5 GHz ou superior | 24 núcleos, alta velocidade de clock |
| RAM | 256 GB DDR4 ECC | 512 GB DDR4 ECC |
| Armazenamento | 2 TB NVMe SSD | 2x 2 TB NVMe SSD (volumes de ledger e contas separados) |
| Rede | 1 Gbps dedicado, baixa latência | 10 Gbps dedicado |
| Sistema Operacional | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS |
Os requisitos de hardware evoluem à medida que a rede cresce. Verifique as especificações atuais na documentação oficial da Solana em docs.solana.com/running-validator antes de provisionar o hardware.
O modelo baseado em contas da Solana armazena todo o estado do programa em contas individuais. Um nó RPC completo deve manter o estado atual da conta para cada conta ativa em RAM para respostas rápidas de consulta, além de dados históricos do ledger em SSD NVMe. O crescimento do armazenamento de 100 a 200 GB por dia na Mainnet-beta significa que os operadores devem planejar a rotação contínua do ledger.
Visão Geral do Processo de Configuração
São necessárias sete etapas. Cada etapa possui um link para a documentação oficial da Solana para detalhes completos de configuração.
- Provisionar hardware que atenda ou exceda as especificações acima.
- Instalar o sistema operacional e configurar os parâmetros do kernel Linux: aumentar os limites de descritores de arquivo ulimit e ajustar as configurações de rede sysctl para o alto volume de tráfego UDP da Solana.
- Instalar a CLI da Solana e o binário do validador
agave(anteriormentesolana-validator) do canal oficial de lançamento da Solana Labs. - Configurar o nó para o modo RPC passando a flag
--no-votingpara desativar a participação no consenso, e definir--rpc-port 8899(HTTP) e--rpc-pubsub-port 8900(WebSocket). - Baixar um snapshot do repositório de snapshots da Solana Foundation para inicializar a sincronização a partir de um estado recente em vez de reproduzir desde a gênese.
- Iniciar o nó e monitorar o progresso da sincronização usando
solana catchuppara rastrear o quão atrasado o nó está em relação à ponta do cluster. - Configurar regras de firewall para expor as portas 8899 and 8900 apenas para endereços IP autorizados. Não exponha sua porta RPC publicamente sem autenticação.
Tempo de Sincronização e Manutenção Contínua
A sincronização de snapshots leva de 1 a 3 dias em hardware recomendado. Sincronizar desde a gênese leva consideravelmente mais tempo e não é recomendado.
O metal puro (bare metal) normalmente custa entre US$ 500 e US$ 1.500 por mês, dependendo das especificações e da geografia do data center. Equivalentes na nuvem custam mais devido à sobrecarga de virtualização em cargas de trabalho com uso intensivo de armazenamento. O crescimento do armazenamento de 100 a 200 GB por dia força uma escolha entre pré-alocar volumes massivos ou automatizar a poda (pruning) do ledger.
Para equipes que estão avaliando a decisão entre construir ou comprar, compare os custos dos provedores gerenciados na seção de comparação de provedores antes de se comprometer com a aquisição de hardware.
Erros Comuns de RPC da Solana e Como Corrigi-los
429 Too Many Requests
Sua aplicação excedeu o limite de taxa por IP no endpoint público da Solana. Para corrigir isso:
- Mude para um provedor privado gerenciado. Helius, QuickNode, Alchemy e Triton One oferecem planos dimensionados para tráfego de produção. Veja a comparação de provedores RPC privados da Solana.
- Implemente o backoff exponencial. Em uma resposta 429, tente novamente com um atraso que dobra a cada tentativa. Um exemplo de código está na seção de manipulação de limite de taxa.
- Agrupe leituras de contas com
getMultipleAccounts. Buscar 20 contas em uma única chamada consome uma requisição em vez de 20.
Timeouts de Confirmação de Transação
Uma transação enviada via sendTransaction não é processada. O blockhash pode ter expirado ou a rede pode ter ficado congestionada. Para corrigir isso:
- Chame
getLatestBlockhashimediatamente antes de construir uma transação. Não usegetRecentBlockhash(descontinuado). - Verifique o
lastValidBlockHeightda resposta e tente novamente antes que essa altura seja atingida. - Use
sendAndConfirmTransactionem vez dosendTransactionbruto para a tentativa automática em caso de falhas transitórias.
Falhas de Limite de Taxa em getProgramAccounts
getProgramAccounts é uma das chamadas RPC que mais consomem recursos. Endpoints públicos geralmente a restringem ou rejeitam inteiramente devido à carga que ela impõe na infraestrutura compartilhada. Se você encontrar erros 403 ou de timeout especificamente nessas chamadas, atualize para um provedor RPC privado com suporte explícito para consultas de contas de programas grandes.
Perguntas Frequentes: Nós RPC da Solana
O que é um nó RPC da Solana?
Um nó RPC da Solana é um servidor que implementa a API JSON-RPC da Solana, aceitando requisições de aplicações clientes e retornando dados de estado da blockchain. dApps, carteiras e exploradores de blocos os utilizam para ler saldos de contas, buscar histórico de transações e enviar transações assinadas para a rede sem a necessidade de executar uma cópia local do livro-razão (ledger).
Qual é a diferença entre um nó RPC da Solana e um nó validador?
Os dois desempenham papéis diferentes. Um nó RPC fornece dados para clientes externos via API JSON-RPC, não participa do consenso e não ganha recompensas de Staking. Um nó validador vota na validade do bloco em cada slot, requer SOL em staking e ganha recompensas em SOL por votos corretos. Alguns operadores executam ambos no mesmo hardware, mas as funções permanecem logicamente separadas.
O endpoint RPC público da Solana é gratuito para uso?
Sim. Os endpoints públicos da Solana Foundation em api.mainnet-beta.solana.com, api.devnet.solana.com e api.testnet.solana.com são gratuitos. Eles impõem um limite de taxa de aproximadamente 100 requisições por janela de 10 segundos por endereço IP. Esses endpoints são suficientes para desenvolvimento e testes, mas não são adequados para dApps de produção que atendem usuários reais.
Como evito limites de taxa no RPC público da Solana?
Três abordagens funcionam em conjunto: mudar para um provedor RPC privado gerenciado para tráfego de produção; implementar backoff exponencial para tentar novamente requisições falhas com intervalos de espera crescentes; e agrupar múltiplas leituras de contas em chamadas únicas de getMultipleAccounts em vez de emitir um getAccountInfo por conta.
Qual hardware um nó RPC da Solana auto-hospedado requer?
No mínimo: uma CPU de 12 núcleos, 256 GB de RAM DDR4, SSD NVMe de 2 TB e uma conexão de rede dedicada de 1 Gbps. Recomendado para produção: CPU de 24 núcleos, 512 GB de RAM, 2x SSD NVMe de 2 TB e rede de 10 Gbps. Verifique as especificações atuais na documentação do validador Solana,), pois os requisitos aumentam conforme a rede cresce.
Quanto tempo leva para sincronizar um nó RPC da Solana?
Planeje de 1 a 3 dias usando um snapshot recente em hardware recomendado. A sincronização a partir do gênesis leva consideravelmente mais tempo. A Solana Foundation fornece snapshots oficiais para acelerar o processo.
Qual é a diferença entre conexões RPC HTTP e WebSocket na Solana?
O RPC via HTTP utiliza um modelo de requisição-resposta sem estado. Sua aplicação envia uma requisição e recebe uma resposta, o que funciona para consultas únicas como getBalance ou sendTransaction. O RPC via WebSocket usa uma conexão persistente com um modelo de assinatura. Sua aplicação se inscreve em eventos na blockchain e recebe notificações push quando esses eventos ocorrem. Use WebSocket para qualquer recurso em tempo real em seu dApp.
Como dApps em produção devem avaliar um provedor RPC da Solana?
Helius e QuickNode são duas Opções frequentemente discutidas, mas a visibilidade da comunidade não é prova de adequação ou desempenho. O Helius se ajusta a equipes que constroem exclusivamente na Solana e precisam de APIs aprimoradas nativas da Solana. O QuickNode atende equipes que suportam múltiplas blockchains sob uma única conta. Triton One é a opção para cargas de trabalho institucionais onde a latência p99 é a restrição primária. A escolha certa depende da sua carga de trabalho e se os recursos específicos da Solana ou o suporte multi-chain importam mais.
Guias Relacionados da Solana
Explore SOL na Bybit
Os leitores podem revisar as informações atuais do mercado de SOL) ou o mercado Spot de SOL/USDT.). Esses links fornecem informações de mercado e acesso; eles não validam uma reivindicação técnica ou implicam que SOL é adequado para todos os leitores.
Escolhendo a Estratégia de RPC da Solana Certa para o Seu Caso de Uso
Existem três caminhos, e a maioria das equipes reconhecerá imediatamente qual deles se ajusta ao seu estágio atual.
| Situação | Caminho |
|---|---|
| Construindo ou testando localmente | Use os endpoints públicos gratuitos da Solana Foundation na devnet ou testnet |
| dApp de produção atendendo usuários | Use um provedor privado gerenciado: Helius, QuickNode, Alchemy ou Triton One com base na sua carga de trabalho |
| Grande protocolo, exchange ou equipe com capacidade de DevOps | Avalie a auto-hospedagem: controle total, sem limites de taxa, custo considerável de hardware e operacional |
A confiabilidade do RPC afeta as leituras da aplicação e o envio de transações, mas uma duração de slot alvo não é uma garantia de confirmação e a latência do RPC é apenas um fator para que uma transação seja processada. Escolha o nível que corresponde à sua escala atual e planeje a atualização antes que os limites de taxa se tornem um problema para o usuário.
Próximos passos:
- Inscreva-se em um plano de desenvolvimento gratuito: helius.dev ou quicknode.com
- Revise a referência completa do método JSON-RPC da Solana: docs.solana.com/api
- Revise as especificações de hardware antes de provisionar para auto-hospedagem: Como Executar Seu Próprio Nó RPC da Solana