Skip to main content

RPC | Bitcoin Glossary | Mapping Bitcoin

RPC

Desenvolvimento

Also known as: Remote Procedure Call, JSON-RPC

RPC é a interface do Bitcoin Core para software externo interagir com o nó: consultar blockchain, gerenciar carteiras e criar transações Bitcoin.

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 blockchain
  • getblock — Recuperar os dados de um bloco específico
  • getblockcount — Altura de bloco atual

Carteira:

  • getnewaddress — Gerar um novo endereço de recebimento
  • sendtoaddress — Enviar bitcoin para um endereço
  • getbalance — Verificar o saldo da carteira
  • listunspent — Listar UTXOs disponíveis

Transações:

  • createrawtransaction — Construir uma transação bruta não assinada
  • signrawtransactionwithwallet — Assinar uma transação
  • sendrawtransaction — Transmitir uma transação

Rede:

  • getpeerinfo — Informações sobre os pares conectados
  • getnetworkinfo — 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 rpcauth fortes e únicas
  • Restringir o acesso por endereço IP quando possível
  • Considerar usar rpcwhitelist para 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).