Provedores de RPC
Todo exemplo de código neste guia que fala com a Solana - ler saldo, enviar transação, assinar mudanças de conta - faz isso através de um endpoint RPC. Este tutorial explica o que esse endpoint realmente é, por que a URL https://api.devnet.solana.com usada nos exemplos não é o que apps de produção usam, e como mudar para um provedor dedicado como Helius ou QuickNode.
O Que É um Provedor de RPC?
A Solana em si não tem uma única "porta da frente". A rede é um conjunto de validadores independentes, cada um executando software (Agave) que pode responder perguntas como "qual o saldo desta conta?" ou aceitar uma nova transação. RPC significa Remote Procedure Call - é o protocolo que seu código usa para pedir a um validador (ou nó construído especificamente para responder essas perguntas) que faça algo.
Um endpoint RPC é apenas uma URL que aponta para um desses nós. Quando seu código chama createSolanaRpc("https://api.devnet.solana.com"), ele não está falando com "Solana" no abstrato - está falando com um servidor específico que executa software RPC para o cluster devnet.
api.devnet.solana.com e api.mainnet-beta.solana.com são endpoints públicos que a Solana Foundation executa gratuitamente, para qualquer pessoa. São genuinamente úteis para aprender e nos primeiros dias de um projeto. São compartilhados por todo desenvolvedor no mundo acessando ao mesmo tempo.
Um provedor de RPC é uma empresa que executa sua própria frota de nós RPC de alto desempenho e fornece uma URL privada para alcançá-los. Em vez de compartilhar fila com todo desenvolvedor no endpoint público, seu app ganha sua própria faixa, com limites dimensionados ao que você paga.
Dois dos provedores RPC mais usados no ecossistema Solana são Helius e QuickNode. Ambos oferecem fluxo de cadastro, dashboard e URL RPC pessoal (frequentemente com API key embutida) em poucos minutos.
Essa distinção - endpoint público compartilhado versus endpoint de provedor dedicado - é a coisa mais comum que pega desenvolvedores passando de "funciona no meu tutorial" para "funciona para usuários reais".
Termos-Chave
| Termo | Significado em linguagem simples |
|---|---|
RPC | Remote Procedure Call - protocolo que seu código usa para pedir a um nó Solana que faça algo (ler dados, enviar transação). |
RPC endpoint / RPC URL | Endereço web específico para onde sua biblioteca client envia requisições RPC. |
RPC provider | Empresa que executa infraestrutura RPC dedicada e vende acesso privado. |
Public RPC | Endpoint gratuito e compartilhado (como api.devnet.solana.com) executado pela Solana Foundation, sem garantias. |
Rate limit | Número máximo de requisições permitidas em janela de tempo antes de falharem. |
API key | String secreta que o provedor emite, na URL RPC ou como header, para identificar e medir uso. |
Websocket endpoint | URL separada (wss://...) para subscriptions em tempo real, como observar mudanças em conta. |
Enhanced API | Endpoints específicos do provedor além de RPC Solana bruto - ex. dados NFT indexados, webhooks ou estimativa de priority fee. |
Por Que Importa
Os exemplos neste guia usam https://api.devnet.solana.com porque não exige cadastro e funciona para quem segue o tutorial. É exatamente por isso que é inadequado para aplicativo real: é rate-limited, sem garantia de uptime, e pode limitar ou rejeitar requisições sem aviso se muitos desenvolvedores acessarem ao mesmo tempo.
Desenvolvedores Solana profissionais tratam o endpoint RPC como string de conexão de banco de dados - infraestrutura de produção, não constante hardcoded. Cadastram-se em provedor dedicado, obtêm URL privada e leem de variável de ambiente.
Além de confiabilidade, provedores dedicados frequentemente expõem funcionalidade que RPC público bruto não tem: indexação mais rápida, webhooks que notificam backend quando algo acontece on-chain, estimativa de priority fee e APIs para workloads como NFTs ou DeFi. Helius, por exemplo, oferece API Digital Asset Standard (DAS) para consultar cNFTs e dados de token muito mais eficientemente que chamadas RPC brutas.
Para hobby ou primeiros dias aprendendo Solana, endpoint público é genuinamente ok. No momento em que construir algo que outras pessoas usarão de fato, reserve dez minutos para configurar provedor - geralmente é grátis em baixo volume.
Passo a Passo
Passo 1: Reconheça o endpoint que este guia tem usado
Olhe qualquer exemplo que cria client RPC - por exemplo em Clusters e Redes. Aponta para endpoint público devnet.
import { createSolanaRpc } from "@solana/kit";
// Endpoint público gratuito e compartilhado - ok para aprender
const rpc = createSolanaRpc("https://api.devnet.solana.com");Essa URL é placeholder para "qualquer endpoint RPC devnet funcionando", não recomendação para produção. Os próximos passos substituem por URL do provedor sem mudar mais nada no código.
Passo 2: Cadastre-se na Helius
Helius é empresa de infraestrutura construída especificamente para Solana. Além de RPC padrão, oferece APIs aprimoradas para dados NFT e token, webhooks para eventos on-chain e estimativa de priority fee.
Para obter URL, crie conta gratuita em helius.dev, abra o dashboard e crie novo projeto. Helius gera URL RPC pessoal com API key como query parameter, para devnet e mainnet-beta.
https://devnet.helius-rpc.com/?api-key=YOUR_API_KEYPasso 3: Cadastre-se na QuickNode
QuickNode é provedor de infraestrutura multi-chain - suporta Solana junto com Ethereum, Bitcoin e outras redes, escolha comum para equipes que já a usam. Oferece nós RPC dedicados, marketplace de add-ons e dashboards de uso.
Para obter URL, crie conta gratuita em quicknode.com, crie endpoint Solana no dashboard e escolha cluster (devnet ou mainnet-beta). QuickNode fornece URL HTTPS completa com token de acesso no path.
https://your-endpoint-name.solana-devnet.quiknode.pro/YOUR_TOKEN/Você só precisa de um provedor para seguir o resto do guia - escolha o que encaixa no fluxo, ou use endpoint público por agora e troque depois com o mesmo padrão.
Passo 4: Armazene URL como variável de ambiente
Nunca hardcode URL de provedor no código - geralmente contém API key, e commit no git vaza a chave para quem tem acesso ao repo.
# .env (adicione .env ao .gitignore antes de commitar)
SOLANA_RPC_URL=https://devnet.helius-rpc.com/?api-key=YOUR_API_KEYPasso 5: Leia endpoint da configuração em vez de hardcode
Com URL em variável de ambiente, troque string hardcoded por lookup com fallback ao endpoint público quando provedor não configurado - útil para scripts locais e CI sem exigir chave paga.
import { createSolanaRpc } from "@solana/kit";
const endpoint = process.env.SOLANA_RPC_URL ?? "https://api.devnet.solana.com";
const rpc = createSolanaRpc(endpoint);O resto do código - todo rpc.getBalance(), rpc.sendTransaction(), etc. - permanece igual. Só a criação da URL muda.
Juntando Tudo
// rpc-client.ts - Solana Kit 7.0.0
import { createSolanaRpc } from "@solana/kit";
// Fallback ao endpoint público devnet quando SOLANA_RPC_URL não definido,
// para funcionar para quem clonar o repo sem chave de provedor.
const endpoint = process.env.SOLANA_RPC_URL ?? "https://api.devnet.solana.com";
const rpc = createSolanaRpc(endpoint);
const { value: version } = await rpc.getVersion().send();
console.log("Connected via:", endpoint.includes("devnet.solana.com") ? "public devnet" : "dedicated provider");
console.log("Agave version:", version["solana-core"]);// rpc_client.rs - solana-client 3.0.10
use solana_client::rpc_client::RpcClient;
use std::env;
fn main() {
let endpoint = env::var("SOLANA_RPC_URL")
.unwrap_or_else(|_| "https://api.devnet.solana.com".to_string());
let rpc = RpcClient::new(endpoint.clone());
let version = rpc.get_version().unwrap();
println!("Connected via: {endpoint}");
println!("Agave version: {}", version.solana_core);
}Ambos snippets fazem o mesmo: verificam URL de provedor primeiro e só fazem fallback ao público se nenhuma estiver definida. Esse ?? (TypeScript) ou unwrap_or_else (Rust) é toda a diferença entre script de demo e um pronto para deploy.
Nada mais no código da aplicação precisa saber qual provedor você usa - createSolanaRpc e RpcClient::new aceitam qualquer URL RPC Solana válida, pública ou do provedor.
Erros Comuns de Iniciantes
- Hardcode
api.devnet.solana.comno código da aplicação - funciona até o tráfego subir, depois requisições falham silenciosamente por rate limits. Correção: leia endpoint de variável de ambiente com fallback público, como acima. - Commit de API key no git - URL de provedor com chave embutida é secret, e histórico do GitHub guarda para sempre. Correção: coloque URL em
.env, adicione.envao.gitignoreantes do primeiro commit, rotacione chave se vazar. - Misturar clusters entre URL RPC e keypair - apontar URL mainnet-beta em contas só devnet retorna "account not found". Correção: confira cluster no dashboard do provedor e na URL RPC.
- Assumir plano free-tier com requisições ilimitadas - tiers gratuitos são mais generosos que endpoint público, mas ainda medem requisições. Correção: verifique dashboard do provedor antes de assumir que rate limits não são a causa.
- Usar URL HTTPS RPC para subscriptions em tempo real - subscriptions estilo
onAccountChangeprecisam websocket, não HTTPS. Correção: use endpointwss://que o provedor emite junto com HTTPS. - Esquecer que devnet e mainnet-beta precisam URLs e chaves separadas na maioria dos dashboards - reutilizar uma cegamente entre ambientes impossibilita atribuir uso. Correção: crie endpoint distinto por cluster no dashboard.
FAQs
Endpoint RPC público é ruim ou só não é para produção?
Só não é para produção. api.devnet.solana.com é forma legítima e gratuita de aprender e prototipar. O problema é ser compartilhado por todos e sem garantia de uptime - ok para tutorial, arriscado para usuários reais.
Preciso pagar Helius ou QuickNode para seguir este guia?
Não. Ambos oferecem tiers gratuitos mais generosos que endpoint público, suficientes para desenvolvimento e projetos pequenos. Só paga quando tráfego ultrapassar tier gratuito.
O que "RPC" significa de fato?
Remote Procedure Call. Padrão geral de programação - não específico da Solana - para chamar função em outra máquina como se fosse local.
Posso usar Helius na mainnet e QuickNode na devnet?
Sim, pode misturar provedores por cluster ou ambiente. Nada no protocolo Solana prende você a um provedor - você só escolhe quais servidores respondem suas chamadas RPC.
O que é "enhanced API" e preciso de uma?
Funcionalidade que provedor adiciona sobre RPC Solana bruto - API DAS da Helius para dados NFT/token é um exemplo. Não precisa para leituras e transações básicas; importa quando recursos que RPC bruto torna lentos ou difíceis, como listar todos NFTs de uma carteira.
Por que dashboard mostra URLs separadas para devnet e mainnet-beta?
Porque são clusters diferentes com dados diferentes. URL devnet só vê contas e transações devnet; precisa URL mainnet-beta (e geralmente chave separada) ao implantar de verdade.
Endpoint websocket é a mesma coisa que endpoint RPC?
Relacionados mas distintos. Endpoint HTTPS RPC trata requisições pontuais (saldo, enviar transação). Endpoint websocket (wss://...) trata subscriptions - código permanece conectado e recebe updates, como "esta conta mudou".
O que acontece se exceder rate limit do provedor?
Requisições retornam erros (comumente HTTP 429) em vez de dados. A maioria dos SDKs não faz retry automaticamente - seu código precisa tratar falha com backoff ou mostrar erro ao usuário.
Devo colocar URL RPC em código client-side (browser)?
Só se URL e chave forem públicas por design - verifique docs do provedor, pois alguns planos suportam chaves restritas por domínio. Caso contrário, mantenha URL no servidor e faça proxy de chamadas RPC no backend, como qualquer outra API key.
Existem provedores RPC além de Helius e QuickNode?
Sim - Triton e outros também servem o ecossistema Solana. Helius e QuickNode são cobertos aqui por serem os mais comuns para desenvolvedores novos escolhendo provedor, não por serem as únicas opções.
Trocar provedor RPC exige mudar código da aplicação?
Não, desde que leia URL da configuração em vez de hardcode (Passo 5 acima). Trocar provedor vira mudança de uma linha em variável de ambiente.
Relacionado
- Clusters e Redes - devnet, testnet, mainnet-beta e combinar URL RPC ao cluster certo
- Noções Básicas de Solana - primeiros passos na devnet com endpoint público
- Carteiras e Explorers - fluxo devnet e faucets
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, @solana/kit 7.0.0 e solana-client 3.0.10 (Rust).