All dApps (decentralized applications) need a way to communicate with blockchains. Without a means of communication, dApps won’t be able to access information and make transactions on the blockchain on which they operate. This connection between the blockchain and the dApps is facilitated by what is known as RPC nodes. These nodes are essential elements when developing dApps; however, they are unfortunately sometimes misused by developers. As this is the case, we’ll take this article to familiarize ourselves with the concept of RPC nodes, why we shouldn’t use them, and the best alternative solution for this problem.
Many developers use RPC nodes as a base for dApps. This is a perfectly valid strategy, but to develop a fully functioning dApp, developers also need to build a complete infrastructure around the nodes. This is a complex and time-consuming endeavor, and there is a much better solution on the market — Moralis.
Instead of manually setting up intricate infrastructure around a node, you can significantly shorten the development process by utilizing Moralis. The reason for this is that Moralis already provides a fully developed backend infrastructure for all dApps. As such, we do not need to utilize the RPC nodes in this part of the development process.
So, your best option as a developer is to sign up with Moralis. This means you can skip complicated backend development and focus your full attention on developing smart contracts and the frontend of your dApps. Furthermore, you get access to a wide selection of development tools that enables you to take your dApp ideas and make them a reality quickly.
What are RPCs?
So, before taking a closer look at what an RPC node is and, more specifically, Ethereum RPC nodes, we should understand what RPCs are. RPC is an abbreviation for a remote procedure call, and they are a form of inter-process communication (IPC). In distributed computing, an RPC refers to the process where a program executes a subroutine in a separate location. These locations are also often referred to as address spaces.
When an RPC is executed, a request-reply process occurs between different address spaces. One address calls the procedure meanwhile the other responds, and these two parties are often referred to as ”clients” and ”servers”. This means that the client sends the request to execute a procedure with specified parameters on a remote server. In return, a response is sent back from the server to the client.
All RPCs are coded using the same basis as regular programming procedures or function calls. This means developers use the same code even though the subroutine was intended for local or remote execution. As a result, the programmers don’t need to indicate where the procedures will run.
RPCs are useful since they allow developers to split apps and dApps into different parts. These parts can act independently from one another, which means that we can separate logic from presentation. So, it is possible to split the frontend side from the actual app when it comes to web applications. One advantage of this is that it is possible to improve security as the data itself can only be accessed through call functions.
What are RPC Nodes?
As an RPC is the most straightforward API in which developers can communicate with servers to execute code remotely, they are very similar to function calls, only that they occur between two separate systems.
In blockchain terms, a server is often referred to as a node. As such, we need a node to use RPCs when it comes to the world of crypto and blockchain. These nodes are also sometimes referred to as RPC nodes, and they allow us to read blockchain data and send transactions to different networks. This means that an RPC node is vital to enable our application to function correctly. Without the possibility to send an RPC call, we can not allow our dApps to interact with the blockchain of our choice. Moralis’ Speedy Nodes are an example of such nodes, however, we’ll get to those later.
Furthermore, it means that RPC nodes are a widely used technology when it comes to dApp development. However, developers are sometimes unnecessarily using RPC nodes. As this is the case, we will take the following section to look at why you shouldn’t use RPC nodes.
Why You Shouldn’t use RPC Nodes
RPC nodes are extensively used for some wrong reasons, and unfortunately, this has resulted in the dApp development scene developing at a slower pace. When misused, RPC nodes can be somewhat primitive tools that are a real productivity killer for Web3 development.
On occasion, many developers use RPC nodes as the foundation for their decentralized applications. However, only using an RPC node does not provide developers with all the necessary information and functionality to build a dApp.
Consequently, there is a whole process of developing a complex infrastructure around the RPC node to ensure that the dApp is working properly. This process involves a vast amount of indexing, figuring out how to search for information, set up a database, etc. This means that developing with an RPC node as a basis can be both resource-intensive and time-consuming. In fact, if you want more information, see the following video for why RPC nodes can be a bad idea:
However, as we mentioned earlier, RPC nodes are essential for our dApps to communicate with the blockchain, meaning that this is a fundamental piece of technology. But, developers only need to know how to use this technology correctly. As such, RPC nodes shouldn’t be used directly in the app itself but rather located underneath the tech stack.
A great analogy here is that, when developing PC applications, developers do not directly communicate with the RAM or the CPU. However, these are both critical parts of the PC’s infrastructure, but the communications remain underneath the text stack. To increase productivity, it should be the same scenario for our RPC nodes. It is unnecessarily difficult for developers to communicate with the RPC nodes directly.
However, to solve this issue, we have Moralis to take care of all the heavy lifting and unnecessary work!
Why Use Moralis Instead?
Moralis is a complete platform for Web3 dApp development. The platform can allow you as a developer time to save time, boost growth, and increase engagement. As such, Moralis is a one-stop shop for everything you need to build your first dApp.
Furthermore, with Moralis, you as a developer do not need to create a complete and complex infrastructure around RPC nodes; the platform takes care of this for you. This means that Moralis provides all users with a fully managed, infinitely scalable backend infrastructure. As such, developers can avoid redundant indexing, setting up a database, and figuring out how to search for information. Instead, the platform provides developers with a fully managed system where all the critical functionality is already set up and developed. Consequently, we can ditch the RPC nodes in this part of the development process and significantly save time and resources.
Moreover, not only does Moralis offer this already developed infrastructure, but there are other useful tools in the platform’s arsenal. Some examples are native support for MetaMask, IPFS, cross-chain compatibility, the Moralis NFT API, and much more.
Furthermore, contrary to the previous section, Moralis actually provides its own RPC nodes for the platform users. The name of the service is Speedy Nodes, and they are some of the fastest, most reliable nodes on the market. So, to be nuanced, we will take the following section to look at what Speedy Nodes are and when they are helpful.
However, using RPC nodes to set up a complicated infrastructure for our dApps is unnecessary, and the best alternative to avoid this process is to use Moralis. As a platform user, you will get access to all development tools of Moralis and significantly shorten the time to market for all your dApps.
Moralis RPC Nodes — Speedy Nodes
Moralis offers Speedy Nodes for four different networks: Ethereum, BSC (Binance Smart Chain), Polygon, and Arbitrum. These are some of the fastest and most reliable nodes on the market. All the Speedy Nodes are actually RPC nodes, but they are, unfortunately, being used for the wrong reasons on occasion.
However, when used correctly, these nodes can be quite beneficial. Developers must only make the distinction of when to use them and when to avoid them. As we talked about, we shouldn’t use RPC nodes as a base when developing dApps; however, they can be highly beneficial when we need to access very specific information on a blockchain. So, if we need to query certain information and nothing else from the blockchain, RPC nodes bring us value.
Furthermore, the Speedy nodes offered by the platform are fully integrated with Moralis, which means that it is easy to connect to them during development. If you want to use the Speedy Nodes, we have separate guides for connecting to Ethereum, Polygon, and BSC nodes.
Moreover, suppose you have an interest in learning more about Moralis’ Speedy Nodes. In that case, we recommend the following video from the Moralis YouTube channel where Ivan on Tech explains them in more detail:
Archive Nodes
All the RPC nodes of Moralis also feature something known as full archive nodes. These are nodes that contain all the historical states of a given blockchain. As such, these nodes have an archive of all the historical information of the chain, hence the name ”archive”.
In essence, what this means is that the nodes contain a snapshot of an entire blockchain and its infrastructure from the first to the current block. For this reason, we can use these nodes to query information for past states in a blockchain. As such, we can ask the node about, for example, how many tokes/coins existed on the chain at block number 100.
We can also fetch historical information from regular nodes, but this takes time and computational power. The reason for this is that we need to go from the current block all the way back to the one we want to query information about and make calculations. The archive nodes are much better since the data can be queried at a fraction of the time.
However, just like the regular Speedy Nodes, you shouldn’t use these nodes as a basis for building complex infrastructure for your dApps. Instead, the quickest and easiest way to get going is to simply join Moralis. You will not need to endure the hassle of setting up your infrastructure with an RPC node. Instead, the platform will take care of this for you without any trouble.
Furthermore, if you want to learn more about full archive nodes, we recommend the following article. Here you will find a full breakdown of full archive nodes.
Ethereum RPC Nodes — JSON-RPC
To enable an application or software to communicate with the Ethereum blockchain, it must connect to a node. By doing so, the program can read information and send transactions to the network. For that reason, every Ethereum client implements a JSON-RPC specification. However, what is JSON-RPC?
JSON on its own is a lightly data-interchange format based on JavaScript syntax. JSON enables us to map out data structures in a more straightforward procedure making the transfer of data much more accessible. If you are unfamiliar with JSON, and as this is only a short summary, we recommend this article, which is a full breakdown of JSON.
JSON-RPC, on the other hand, is a stateless, lightweight RPC that transports data over, for example, WebSockets or HTTP, which enables developers to interact with blockchain nodes. Furthermore, this is where smart contracts enter the picture. Smart contracts allow network users to execute agreements on a blockchain, and JSON-RPCs are crucial to enable this process. As such, JSON-RPC is essential to enable our dApps to communicate with any Ethereum RPC node.
This means that JSON-RPC is essential for blockchains to be able to interact with clients. However, there is much more to learn about JSON-RPC. For a clearer picture of the concept, check out the following Moralis blog post that explains JSON-RPC in more detail.
Ethereum RPC Nodes — Summary
RPC nodes are an essential piece of technology for all dApp development. These nodes make it possible for dApps and other projects to communicate with a blockchain. However, these nodes are unfortunately used poorly on occasions. As a result, it is not uncommon that these nodes serve as a productivity killer during the development of applications.
RPC nodes shouldn’t be used as a basis for dApp development. The reason for this is that they are not sufficient by themselves. You as a developer must then construct a complex infrastructure around them to, for example, be able to store information in a database. As such, developing in this way can be both time- and resource-intensive. However, there is an excellent solution to this problem.
Moralis allows developers to skip out on this process since the platform already provides a fully managed backend infrastructure. As such, we can abstain from using RPC nodes in this part of the development process since Moralis does all the heavy lifting. Therefore, users of Moralis can gain a tremendous competitive advantage in that the route to market becomes significantly shorter.
Furthermore, the platform offers a selection of great tools and guides that can further increase productivity. For example, the Moralis blog offers great guides for building Ethereum dApps, tutorial on Hardhat, a breakdown of Solidity, and much more.
So, if you are interested in becoming a dApp developer, you should definitely sign up with Moralis. As a platform user, you can significantly increase productivity and ensure a smooth and quick development process!