This post is authored by Last Labs' Anett Rolikova. For more discussion on RPCs, Web3 development, join Anett in the conversation on Farcaster in the /last channel.
RPCs, or Remote Procedure Calls, are a fundamental component in the world of Web3 development, acting as the critical link between decentralized applications (dApps) and blockchain networks. Developers use RPCs to query data from various endpoints that read data directly from blockchain networks. These endpoints play a crucial role in ensuring the scalability of web3 dApps by making the process of building and operating them more seamless and efficient.
DApps often require data for tasks such as sending transactions, retrieving block data, or evaluating the state of the blockchain. Public or private node endpoints provide this data through RPCs connecting dApps to the blockchain and enabling them to interact with raw blockchain data easily. In simpler terms, RPC nodes enable communication between dApps (the client) and the underlying blockchain infrastructure (the server).
Explain an RPC
For Web3 builders, it is essential to understand decentralized application (dApp) technical components. Remote Procedure Calls (RPCs) are one of the fundamental building blocks that allow dApps to interact with blockchains. Whether you're sending transactions, retrieving data, or executing smart contracts, RPCs play a critical role in the smooth operation and scalability of your dApp. The two main roles of RPCs are to 1) write and 2) read information from a blockchain. Your dApp writes transactions on blockchain and it reads the current values so it can display the correct data in your dApp.
What is RPC and RPC Node?
RPC stands for Remote Procedure Call. It is a protocol that allows dApp to execute transactions and smart contract calls on a node. RPC calls are used to request data from dApp and execute them via node infrastructure. RPC calls can retrieve block information data, check account balances and submit transactions.
RPC nodes are servers that process RPC requests from dApps to the underlying blockchain, this is an endpoint for dApps to interact with blockchains without running a full node.
In a simpler way, RPC calls are almost like a messaging service, similar to SMTP but for blockchain. While RPC nodes are servers that receive these messages (transaction data, smart contract calls), process them, then return the results back to dApp to update the data on frontend side.
RPCs Provided Useful, But Limited, Data
RPCs write and read data off blockchain. They provide a limited amount of data that you can access. Although when you have a dApp, you might need more analytical data about transactions and onchain user data that lets you interact with the dApp logic that you are building.
Communication Facilitators: RPC nodes serve as the communication backbone, similar to the way TCP/IP works, but within a decentralized network, allowing data exchange between nodes and applications.
Transaction Executors: RPC calls execute transactions from a dApp to a node. The user signs a transaction using a wallet with their private keys to send the tx to the block, but the RPC is the connector between the user’s wallet, the dApp, and the final chain execution.
Data Retrievers: DApps can query some blockchain data via RPC. For more precise data, you need to use Indexers such as Flair, Graph, Ponder, Envio. Indexers pull much more detailed information from the blockchain for developers. More on Indexers in another post.
Challenges with RPCs
RPCs don’t solve every challenge. Because RPCs query blockchain state, when there is high volume it also impacts RPC performance. Network congestion can lead to soaring transaction costs and a growing backlog of unconfirmed transactions running on RPCs. Ethereum’s RPC infrastructure distribution has been an issue for some time, as RPC nodes in Ethereum are relatively centralized, with most requests being fulfilled by a few centralized providers. This centralization makes RPCs vulnerable to manipulation, where attackers can trick other related blockchain infrastructure due to performance manipulation.
JSON-RPC API
For software applications to interact with the Ethereum blockchain—whether by reading blockchain data or sending transactions to the network—they must connect to an Ethereum node. To facilitate this, every Ethereum client has implemented the JSON-RPC specification, providing a uniform set of methods that applications can rely on regardless of the specific node or client implementation.
JSON-RPC is a standard collection of methods that all clients implement. It serves as the execution API specification, ensuring a consistent set of methods across all execution clients.
In another words “JSON-RPC is the protocol or message format that you use to talk to a RPC Node, which is basically a JSON with predefined fields like id/method/params” - Aram from eRPC
Understanding the difference between public and private RPC endpoints is crucial for optimizing performance and reliability in your dApp. Let’s explore how these two types of endpoints compare.
Public RPC vs. Private RPC vs Free vs Paid Endpoints
Public RPC Endpoints are shared, rate-limited resources running on RPC nodes available for anyone to use. They allow requests to be made and data to be sent and received from the blockchain. Public RPC endpoints are free and ready to use but are not intended to support production-grade applications. They often have limits on the number of calls they can support, and using them can lead to issues like network congestion, slower network speeds, less responsive blockchain data, and longer uptimes.
Private RPC Endpoints, on the other hand, provide users with dedicated endpoints to publish transactions. This can be beneficial if you're building a dApp that requires fast, accurate, and reliable blockchain data. Using private RPCs over public ones can be especially advantageous during events like exclusive NFT mints, time-sensitive arbitrage transactions, or when reliable service is needed during network congestion, such as airdrop opportunities.
Both Paid and Free RPCs are usually hosted on cloud, meaning you are renting nodes in data centers such as AWS. The paid versions of RPC, you usually pay for every RPC call which can get expensive. Especially if you are launching an exciting Airdrop or an NFT collection with a famous artist. The nodes can lag behind then users can complain that they see that their transaction went through via blockchain explorer but they don't see it in their wallet. This issue can happen if there's not enough nodes close by, and they are far (physically) such as on another continent. That's why there’s almost 40 RPC providers with over 400 endpoints in 12 regions all over the world.
Free RPCs have very limited availability of how many contract calls they can process. Unless you self-host your infrastructure, where you actually need to pay for your servers and devops person to maintain this infrastructure.
Choosing a reliable RPC provider is crucial for the success of your dApp. You can check a well-curated list of RPCs and providers, and also check out this 1kx RPC Atlas and Chainlist for more RPC resources.
L1 vs L2 and RPCs
When it comes to connecting your dApp via RPC, it does not matter whether you are choosing to deploy it on L1 or L2. You will get node endpoints in both ways. There’s no difference between deploying on EVM L1 vs L2 when it comes to RPC connection.
Conclusion: Bringing It All Together
RPCs are much more than just a technical detail—they are the critical link that allows decentralized applications to interact with the blockchain, making them an indispensable part of the Web3 development landscape. By understanding how RPCs, nodes, and endpoints function together, developers can build more efficient, scalable, and reliable dApps that meet the growing demands of the decentralized ecosystem.
As we continue to see rapid growth in Web3, mastering RPCs will be key for any developer looking to create impactful dApps. Whether you’re just starting or are deep into building your decentralized application, choosing the right RPC can significantly enhance your project's performance and user experience.
So, as you move forward in your Web3 development journey, keep these insights in mind and consider how RPCs can be the cornerstone of your dApp’s success. With the right knowledge and tools, you’ll be well-equipped to build the next generation of decentralized applications.
About Last
Last is the shared incentives layer for everything. Learn more about the upcoming network that pays profits to users and accelerates yield from every chain. Join the community, post cube.