Skip to main content

RPC | Bitcoin Glossary | Mapping Bitcoin

RPC

Desarrollo

Also known as: Remote Procedure Call, JSON-RPC

Remote Procedure Call: interfaz para que aplicaciones externas se comuniquen con Bitcoin Core, consulten datos, creen transacciones y controlen el nodo.

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 blockchain
  • getblock — Recuperar los datos de un bloque específico
  • getblockcount — Altura de bloque actual

Billetera:

  • getnewaddress — Generar una nueva dirección de recepción
  • sendtoaddress — Enviar bitcoin a una dirección
  • getbalance — Consultar el saldo de la billetera
  • listunspent — Listar UTXOs disponibles

Transacciones:

  • createrawtransaction — Construir una transacción sin procesar sin firmar
  • signrawtransactionwithwallet — Firmar una transacción
  • sendrawtransaction — Difundir una transacción

Red:

  • getpeerinfo — Información sobre los pares conectados
  • getnetworkinfo — 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 rpcauth fuertes y únicas
  • Restringir el acceso por dirección IP cuando sea posible
  • Considerar usar rpcwhitelist para 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).