Remote procedure calls or RPCs are core elements of on-chain applications as they allow apps to ‘read and write’ the information while working with blockchains. Through simple commands (‘methods’) they send and receive various types of data about blocks, transactions, validators, hashes, and so on.
What is an RPC node?
In Web3, an RPC definition stands for ‘remote procedure call’ and refers to a protocol that allows a computer program running on one system (the client) to request services or data from another program running on a different system (the server).
In the context of a blockchain, an RPC node refers to a node on the network that exposes an API (Application Programming Interface) using the RPC protocol. This API can be used by other programs or applications to interact with the blockchain, perform operations such as sending transactions, querying the blockchain state, or managing the node itself. For example, in a Bitcoin network, an RPC node might allow you to retrieve information about the latest blocks, view transaction details using hashes, or send new transactions to the network.
What is JSON RPC?
JSON-RPC (short for ‘JavaScript Object Notation Remote Procedure Call’ is a lightweight RPC protocol encoded in JSON (JavaScript Object Notation). It is a remote communication protocol utilized for transmitting data between a client and a server in a decentralized network. JSON-RPC allows for the encoding of requests and responses in JSON format, making it easy to read and write for both humans and machines.
In the context of blockchain technology, JSON-RPC is often used to interact with an RPC node and make calls to the blockchain's underlying API. For example, a client dApp might use JSON-RPC to send a request to an Ethereum RPC node to retrieve information about a specific account balance or to submit a new transaction to the network.
What is the Bitcoin RPC API?
The Bitcoin RPC API (Remote Procedure Call Application Programming Interface) is a set of APIs that allow developers to interact with the Bitcoin network and perform various operations such as retrieving information about transactions and blocks, sending transactions, and managing the node itself.
The Bitcoin RPC API is implemented using the JSON-RPC protocol, which allows for the encoding of requests and responses in JSON format. It is accessible through an HTTP-based interface that can be accessed by a variety of programming languages and client libraries.
Using the Bitcoin RPC API, developers can build applications that can interact with the Bitcoin network, such as wallets, block explorers, and other types of blockchain-based tools and services. Some of the commonly used methods provided by the Bitcoin RPC API include:
- getindexinfo: Retrieves the status of one or all available indices currently running in the node;
- getblock: Retrieves information about a specific block;
- validateaddress: Retrieves information about the given Bitcoin address;
- sendrawtransaction: Submits a raw transaction (serialized, hex-encoded) to local node and network
- getdifficulty: Retrieves the proof-of-work difficulty as a multiple of the minimum difficulty.
The Bitcoin RPC API is an important part of the Bitcoin ecosystem and provides developers with a way to interact with the network and build new and innovative applications.
Request
curl --location --request POST 'https://btc.getblock.io/mainnet/' \ --header 'x-api-key: YOUR-API-KEY' \ --header 'Content-Type: application/json' \ --data-raw '{"jsonrpc": "2.0", "method": "getdifficulty", "params": [], "id": "getblock.io" }
Response
{ "error": null, "id": "getblock.io", "result": 303127737690.0432 }
Here’s how the getdifficulty method checks the current mining difficulty of Bitcoin (BTC) blockchain.
How to find Bitcoin transaction with JSON RPC API methods
In this demo, we’re going to display a combination of Bitcoin JSON RPC methods crypto wallet uses to retrieve the information about a single Bitcoin deposit knowing the number of a block it was included into.
Please feel free to refer to GetBlock Documentation to check out the samples of code and instructions on how to run it.
- First, we need to know the blockchain height, i.e. the number of latest block mined (added to the blockchain). This info can be retrieved with the getmininginfo method.
- Once the number of the last block is known, let’s retrieve its hash using the getblockhash method.
- Then, using the abovementioned getblock method, we can recover the information about the transactions included into this block. To do so, we need to set the verbose parameter to ‘2’; otherwise we will only see the transactions’ hashes.
- Now we can parse the transactions in order to find the one in question.
- Once the transaction is found, let’s create our ‘own’ transaction. In order to get it added to the blockchain, we need to pay a miners fee. Its size can be found with the estimatesmartfee method.
- Like we displayed in previous part, let’s use the sendrawtransaction method to sign (authorize) the transaction and include it to the network;
- We can check the number of confirmations for the transaction in question by using the getrawtransaction method.
P.S. Also, check out our video demo of Bitcoin endpoint operations: https://www.youtube.com/watch?v=ujrvv-ztVjc
Bitcoin RPC Methods FAQ
Let’s discuss some questions that might be tricky for the newbies interested in building on Bitcoin RPC.
Does Bitcoin use RPC?
Yes, Bitcoin like all other blockchains and the majority of centralized networks can be accessed via RPC methods. This feature streamlines the process of software development and removes the necessity to write the same commands again and again.
What is the Bitcoin Core RPC methods list?
Developers of Bitcoin Core, an open-source software necessary to run the Bitcoin network, published the comprehensive list of Bitcoin RPC methods on their bitcoin.org website. The list includes blockchain RPCs, control RPCs, mining RPCs and so on.
Does Bitcoin have an API?
Yes, Bitcoin can interact with users and applications through its API interface as displayed above. You can use free Bitcoin API endpoints by GetBlock as well as paid ones.
What is the default Bitcoin RPC port?
In order to accept JSON-RPC communications, Bitcoin uses RPC port 8333 as the default port on mainnet while RPC port 18333 is available for testnet.
Wrapping up
JSON RPC API methods allow users and applications to exchange the data with blockchains. In the case of Bitcoin, the methods can be used to get the information about blocks, wallets, transactions, gas fees, and so on.
GetBlock connects its clients to 50+ blockchains in mainnets and testnets. To fuel your project with blockchain nodes, sign up to GetBlock and select your first RPC node for free: https://account.getblock.io/sign-in.