This is a companion to my Bitcoin node build log. If you followed along and got a node running, this is what you can do with it.
The Realization
When you run a Bitcoin Core node, you're not just validating transactions. You're running a programmable interface to the entire Bitcoin network.
Your node is the same backend infrastructure that powers blockchain.com, mempool.space, and every Bitcoin wallet. The difference is you control it. No API keys, no rate limits, no third-party dependency.
What is RPC?
RPC stands for Remote Procedure Call. It's a way for one program to request that another program execute a function — like asking "what's the current block height?" or "send this transaction."
Think of it like a remote control for your Bitcoin node.
When you run Bitcoin Core, it exposes an RPC interface on localhost port 8332. You can interact with it from virtually any programming language — Python, JavaScript, Go, whatever — by sending JSON-RPC requests to your node.
# The CLI is just a convenient wrapper around these RPC calls
bitcoin-cli getblockchaininfo
# Under the hood, it's sending JSON like this:
curl --user user:pass --data-binary \
'{"jsonrpc": "1.0", "method": "getblockchaininfo", "params": []}' \
http://127.0.0.1:8332/
Your Bitcoin Core node becomes your personal gateway to the Bitcoin network. This is how real Bitcoin applications are built — they run a node and use these RPC commands to interact with Bitcoin programmatically.
Anything you see on sites like blockchain.com or mempool.space? Those are just applications built on top of nodes using these same RPC calls. Your node is the backend. You can build whatever frontend or application logic you want on top of it.
The Stack
Take any traditional app — an e-commerce site, a SaaS product, a mobile app, a game — and by integrating with a Bitcoin node, you've added a programmable money layer to it.
Lightning works the same way. Lightning implementations like LND, Core Lightning, or Eclair expose their own RPC/API interfaces. Your stack might look like:
Your Application
↓
Lightning Node (LND, CLN, Eclair) ← Lightning RPC API
↓
Bitcoin Core Node ← Bitcoin RPC API
↓
Bitcoin Network
This is exactly how real products are built.
The powerful realization: Bitcoin and Lightning are just open APIs. There's no company to get permission from, no developer account to sign up for, no fees to Visa or Stripe. You run the infrastructure yourself and build whatever you want on top.
You're essentially adding a global, permissionless payment rail to any application.
RPC Command Reference
All commands below are invoked via bitcoin-cli <command>. Full documentation: developer.bitcoin.org/reference/rpc
Blockchain RPCs
Commands for querying block and chain data.
| Command | Description |
|---|---|
getbestblockhash | Returns the hash of the best (tip) block |
getblock | Returns data about a specific block |
getblockchaininfo | Returns blockchain state info (sync progress, chain, etc.) |
getblockcount | Returns the height of the most-work chain |
getblockhash | Returns hash of block at given height |
getblockheader | Returns header data for a block |
getblockstats | Returns statistics about a block |
getchaintips | Returns info about all known chain tips |
getchaintxstats | Returns transaction statistics for the chain |
getdifficulty | Returns current proof-of-work difficulty |
getmempoolinfo | Returns mempool state info |
getrawmempool | Returns all transaction IDs in the mempool |
gettxout | Returns details about an unspent transaction output |
gettxoutsetinfo | Returns statistics about the UTXO set |
verifychain | Verifies blockchain database |
Network RPCs
Commands for peer connections and network info.
| Command | Description |
|---|---|
getnetworkinfo | Returns network state info |
getpeerinfo | Returns data about connected peers |
getconnectioncount | Returns number of connections |
getnettotals | Returns network traffic statistics |
addnode | Add/remove a node from the connection list |
disconnectnode | Disconnect from a specific peer |
getaddednodeinfo | Returns info about added nodes |
getnodeaddresses | Returns known node addresses |
listbanned | Returns list of banned peers |
setban | Add/remove an IP from the ban list |
ping | Ping all connected peers |
Wallet RPCs
Commands for wallet management. Requires wallet support (enabled by default).
| Command | Description |
|---|---|
getbalance | Returns wallet balance |
getbalances | Returns all balances (trusted, untrusted, immature) |
getnewaddress | Generates a new receiving address |
getreceivedbyaddress | Returns amount received by an address |
gettransaction | Returns details about a wallet transaction |
getwalletinfo | Returns wallet state info |
listreceivedbyaddress | Lists amounts received by each address |
listtransactions | Returns recent transactions |
listunspent | Returns unspent transaction outputs |
sendtoaddress | Send bitcoin to an address |
sendmany | Send to multiple addresses in one transaction |
signmessage | Sign a message with an address's private key |
walletpassphrase | Unlock an encrypted wallet |
backupwallet | Backup the wallet to a file |
createwallet | Create a new wallet |
loadwallet | Load a wallet from file |
Control RPCs
Commands for controlling the node itself.
| Command | Description |
|---|---|
stop | Gracefully shut down the node |
uptime | Returns node uptime in seconds |
help | List all commands, or get help for a specific command |
logging | Get or set log categories |
getrpcinfo | Returns RPC server info |
getmemoryinfo | Returns memory usage info |
Mining RPCs
Commands for mining operations.
| Command | Description |
|---|---|
getmininginfo | Returns mining-related info |
getnetworkhashps | Returns estimated network hash rate |
getblocktemplate | Returns data for constructing a block |
submitblock | Submit a new block to the network |
prioritisetransaction | Adjust priority of a mempool transaction |
Raw Transaction RPCs
Commands for creating and handling raw transactions.
| Command | Description |
|---|---|
createrawtransaction | Create an unsigned raw transaction |
decoderawtransaction | Decode a raw transaction hex |
decodescript | Decode a script hex |
getrawtransaction | Returns raw transaction data |
sendrawtransaction | Broadcast a signed transaction |
signrawtransactionwithkey | Sign a raw transaction with provided keys |
testmempoolaccept | Test if a transaction would be accepted |
PSBT Commands
Partially Signed Bitcoin Transactions — for multi-party signing workflows.
| Command | Description |
|---|---|
createpsbt | Create an unsigned PSBT |
decodepsbt | Decode a PSBT |
finalizepsbt | Finalize and extract a PSBT |
combinepsbt | Combine multiple PSBTs |
analyzepsbt | Analyze a PSBT |
Utility RPCs
General utility commands.
| Command | Description |
|---|---|
validateaddress | Validate a Bitcoin address |
verifymessage | Verify a signed message |
estimatesmartfee | Estimate fee rate for confirmation target |
createmultisig | Create a multisig address |
deriveaddresses | Derive addresses from a descriptor |
The Bottom Line
Running a Bitcoin Core node gives you programmable access to the entire Bitcoin network. These RPC commands are your interface — the same ones powering block explorers, wallets, and payment processors.
Your node connects you to a global financial network. The only ongoing cost is electricity and internet. No API keys. No rate limits. No permission required.
That's the infrastructure. Now build something.
This is a companion to Running a Bitcoin Node. Next up: Core Lightning setup and the Lightning RPC API.
Building on Bitcoin? Let me know on X what you're working on.
