Descripción general
La interfaz RPC (Llamada a Procedimiento Remoto) es la forma programática principal de interactuar con un nodo completo de Bitcoin. Bitcoin Core expone un servidor JSON-RPC que acepta comandos a través de HTTP, permitiendo que billeteras, exploradores de bloques, procesadores de pagos y aplicaciones personalizadas consulten datos de la blockchain, construyan transacciones, gestionen billeteras y controlen el comportamiento del nodo.
Cómo funciona RPC
Arquitectura RPC:
┌──────────────────┐ ┌──────────────────────┐
│ Cliente │ HTTP │ Nodo Bitcoin Core │
│ (aplicación, │────────>│ │
│ script, o │ JSON │ ┌────────────────┐ │
│ bitcoin-cli) │<────────│ │ Servidor RPC │ │
│ │ │ │ (puerto 8332) │ │
└──────────────────┘ │ └───────┬────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ Blockchain │ │
│ │ + Billetera │ │
│ │ + Mempool │ │
│ │ + Red │ │
│ └────────────────┘ │
└──────────────────────┘
Comandos RPC comunes
Los comandos RPC están organizados en varias categorías:
Blockchain:
getblockchaininfo— Información general del estado de la blockchaingetblock— Recuperar los datos de un bloque específicogetblockcount— Altura de bloque actual
Billetera:
getnewaddress— Generar una nueva dirección de recepciónsendtoaddress— Enviar bitcoin a una direccióngetbalance— Consultar el saldo de la billeteralistunspent— Listar UTXOs disponibles
Transacciones:
createrawtransaction— Construir una transacción sin procesar sin firmarsignrawtransactionwithwallet— Firmar una transacciónsendrawtransaction— Difundir una transacción
Red:
getpeerinfo— Información sobre los pares conectadosgetnetworkinfo— Estado y configuración de la red
Autenticación
El acceso RPC está protegido por autenticación de nombre de usuario y contraseña configurada en bitcoin.conf. La configuración predeterminada solo permite conexiones desde localhost. La opción rpcauth genera hashes de contraseña con sal para una autenticación segura, y rpcallowip puede usarse para permitir conexiones desde direcciones remotas específicas (aunque esto debe hacerse con extremo cuidado e idealmente a través de un túnel cifrado).
bitcoin-cli
Bitcoin Core incluye bitcoin-cli, una herramienta de línea de comandos que se comunica con el nodo mediante RPC. Maneja la autenticación y el formato, proporcionando una manera conveniente de interactuar con el nodo:
bitcoin-cli getblockchaininfo
bitcoin-cli getbalance
bitcoin-cli sendtoaddress "bc1q..." 0.001
Consideraciones de seguridad
La interfaz RPC proporciona control total sobre un nodo y su billetera, incluyendo la capacidad de enviar bitcoin. Debe tratarse como una interfaz de alta seguridad:
- Nunca exponer el puerto RPC a internet público
- Usar credenciales
rpcauthfuertes y únicas - Restringir el acceso por dirección IP cuando sea posible
- Considerar usar
rpcwhitelistpara limitar qué comandos pueden ejecutar usuarios específicos
Concepto erróneo común
RPC no es lo mismo que el protocolo de red P2P. El protocolo P2P es cómo los nodos se comunican entre sí (intercambiando bloques y transacciones). RPC es cómo las aplicaciones externas se comunican con un solo nodo. Sirven propósitos completamente diferentes y usan puertos diferentes (8333 para P2P, 8332 para RPC en mainnet).