Visão geral
A interface RPC (Chamada de Procedimento Remoto) é a principal forma programática de interagir com um nó completo do Bitcoin. O Bitcoin Core expõe um servidor JSON-RPC que aceita comandos via HTTP, permitindo que carteiras, exploradores de blocos, processadores de pagamento e aplicações personalizadas consultem dados da blockchain, construam transações, gerenciem carteiras e controlem o comportamento do nó.
Como o RPC funciona
Arquitetura RPC:
┌──────────────────┐ ┌──────────────────────┐
│ Cliente │ HTTP │ Nó Bitcoin Core │
│ (aplicação, │────────>│ │
│ script, ou │ JSON │ ┌────────────────┐ │
│ bitcoin-cli) │<────────│ │ Servidor RPC │ │
│ │ │ │ (porta 8332) │ │
└──────────────────┘ │ └───────┬────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ Blockchain │ │
│ │ + Carteira │ │
│ │ + Mempool │ │
│ │ + Rede │ │
│ └────────────────┘ │
└──────────────────────┘
Comandos RPC comuns
Os comandos RPC estão organizados em várias categorias:
Blockchain:
getblockchaininfo— Informações gerais do estado da blockchaingetblock— Recuperar os dados de um bloco específicogetblockcount— Altura de bloco atual
Carteira:
getnewaddress— Gerar um novo endereço de recebimentosendtoaddress— Enviar bitcoin para um endereçogetbalance— Verificar o saldo da carteiralistunspent— Listar UTXOs disponíveis
Transações:
createrawtransaction— Construir uma transação bruta não assinadasignrawtransactionwithwallet— Assinar uma transaçãosendrawtransaction— Transmitir uma transação
Rede:
getpeerinfo— Informações sobre os pares conectadosgetnetworkinfo— Estado e configuração da rede
Autenticação
O acesso RPC é protegido por autenticação de nome de usuário e senha configurada no bitcoin.conf. A configuração padrão permite apenas conexões de localhost. A opção rpcauth gera hashes de senha com sal para autenticação segura, e rpcallowip pode ser usado para permitir conexões de endereços remotos específicos (embora isso deva ser feito com extremo cuidado e idealmente por meio de um túnel criptografado).
bitcoin-cli
O Bitcoin Core inclui o bitcoin-cli, uma ferramenta de linha de comando que se comunica com o nó via RPC. Ele lida com autenticação e formatação, fornecendo uma maneira conveniente de interagir com o nó:
bitcoin-cli getblockchaininfo
bitcoin-cli getbalance
bitcoin-cli sendtoaddress "bc1q..." 0.001
Considerações de segurança
A interface RPC fornece controle total sobre um nó e sua carteira, incluindo a capacidade de enviar bitcoin. Deve ser tratada como uma interface de alta segurança:
- Nunca expor a porta RPC à internet pública
- Usar credenciais
rpcauthfortes e únicas - Restringir o acesso por endereço IP quando possível
- Considerar usar
rpcwhitelistpara limitar quais comandos usuários específicos podem executar
Equívoco comum
RPC não é o mesmo que o protocolo de rede P2P. O protocolo P2P é como os nós se comunicam entre si (trocando blocos e transações). O RPC é como as aplicações externas se comunicam com um único nó. Eles servem a propósitos completamente diferentes e usam portas diferentes (8333 para P2P, 8332 para RPC na mainnet).