Since more and more businesses depend on cross-platform services and applications, the need for APIs has grown exponentially in the last 15 years, particularly in disruptive technologies, including blockchain, Artificial Intelligence, and data analytics.
In this article, our focus is to explore the connectivity to the Bitcoin and Ethereum blockchain networks with RPCs and establish how you can outsource the node management to a third-party to reduce your workload.
If you want to read more about RPCs and REST APIs in terms of differences and applications, check out our article: What is a Blockchain RPC Node API and How to Choose the Right RPC Provider?
Connecting to Bitcoin or Ethereum Network with RPC
In this section, we will discuss the feasibility of connecting to Bitcoin’s RPC API with the help of Python. However, several other languages support this functionality as well and you can find them in the Bitcoin Wiki API reference for JSON-RPC.
It must be noted that to run bitcoind on versions below 0.3.14, you should call the HTTP JSON-RPC server, however, the basic authentication must be used while establishing the connection. In case your library or protocol demands the realm, use ‘jsonrpc‘.
If you are using Python, they have a dedicated implementation for JSON-RPCs, called python-jsonrpc, which automatically creates the native methods for API calls. But since it was designed for older versions of bitcoind, it is most likely to be inefficient for your present use cases. Therefore, jgarzik has produced a fork, known as Python-BitcoinRPC that is aimed at the latest versions, thus making it more secure and efficient at the same time.
Please use the following code snippet for installing your python-rpc of choice:
from jsonrpc import ServiceProxy // if you want to use python-jsonrpc from bitcoinrpc.authproxy import AuthServiceProxy // if you want to use python-bitcoinrpc access = ServiceProxy("http://user:email@example.com:8332") access.getblockchaininfo() access.listreceivedbyaddress(6) #access.sendtoaddress("11yEmxiMso2RsFVfBcCa616npBvGgxiBX", 10)
The steps above give you an example of how to connect to the Bitcoin network and below you will find that the process is more or less the same for Ethereum.
Just for your reference, Anyblock Analytics offers a solution in this regard where you do not have to create and deploy Ethereum nodes from scratch. They provide a SaaS-based API service so you just have to connect with them via APIs and can then monitor their health as well. It is more like a node in the cloud!
Now that we have explored the process of establishing the connection with Bitcoin and Ethereum, let’s discuss the pros and cons of running a node yourself in contrast to outsourcing its operations to a third-party.
The Potential Pains of Running a Self-Hosted RPC Node
Ambitious businesses tend to pursue self-hosted RPC nodes. Although it has some advantages, for example, having more control over operations, lower initial cash costs, and the ability to add more features on the go without upgrading subscriptions, there are some disadvantages of running a self-hosted node as well.
Consumes Plenty of Time
As a developer, you would need to spend a significant amount of time deploying the node yourself, thus reducing your capacity to focus on quality coding.
Moreover, since you will be responsible for node operations, you must keep the node updated to the latest software version, which can consume a major chunk of your time if you are not using an automation tool like Ansible.
Unreliable Synchronization and Missing Optimization
Efficient and accurate node synchronization keeps the blockchain network running at its best. However, if you handle node initialization, deployment, and maintenance by yourself the probability that your node would bear higher latency and bandwidth would be less than when outsourcing this operation to a specialized service provider.
Additionally while building a scalable application, it is important to consider the importance of load balancing, which can be an entirely different domain if you do not know much about the cloud and networks.
Deploying a node and the infrastructure around it can be quite expensive if you do it yourself and you would also need a dedicated DevOps team to handle the operations. Thus, accumulating the cost. Please note that whether it is a cloud-based or self-hosted node, the cost would certainly be higher than using Node as a Service.
The Benefits of Outsourcing Node Management and Operations
Since you have realized the troubles with deploying and managing a self-hosted node, it will be easier to discuss the benefits of availing the services of a third-party provider, for instance, Infura and Anyblock Analytics.
Concisely, all of the disadvantages mentioned in the previous section are addressed by node infrastructure providers and they charge you a predictable subscription fee for their services.
At Anyblock Analytics, our clients have the liberty to select dedicated or shared nodes, as per your requirements. The following table summarizes the salient features of each service:
|Dedicated node||Shared node|
|Limited to private enterprises and consortium chains||Available for public networks in the cloud|
|More privacy||Relatively less privacy depending on the jurisdiction (i.e. GDPR or Patriot Act)|
|Clients need to commit to long-term contracts due to the operational costs||Flexible contracts that are usually cheaper in the short run|
|Developers can leverage the entire resource-set offered on our cloud||Limited/shared resources|
Selecting the Best API Node Provider
If you have decided to outsource your operations to a third-party, it is important to explore the following aspects, as these will have a direct impact on the reliability, latency, and performance of your node.
It is important to ensure that your node provider offers you testnet deployments so you can simulate all functions and costs before spending actual currency on the mainnet. Apart from this, you should also consider whether the potential provider is offering extra services, for instance, notifications, data archiving, and node health indicators.
Moreover, since blockchain networks are based on P2P architecture, the nodes must have low latency to ensure the communication is swift and there are minimal delays. To address this concern while using Node as a Service, you should select a provider that offers infrastructure close to your location, because when the physical distance increases, it usually takes more time to ping the node. You can also read this article to understand the factors resulting in higher pings.
The primary thing is to find out the jurisdiction that your provider operates from as each jurisdiction has its data protection and security laws. For instance, in the USA and EU, there is the Patriot Act and GDPR, respectively. As a business, you need to hold the highest standards of data protection and security as well as to ensure who is the data controller and processor. Therefore, finding out the jurisdictions that your node provider reports to, determines the level of security and privacy they can provide you and your customers.
Secondly, you should have a fair idea about their commercials. Some node providers prefer charging on demand and others have a flat fee. Therefore, you should consider your use cases before selecting a platform to ensure your business stays profitable in the long run when all costs add up.
Finally, pay attention to the support hours offered and the experience of the team, especially if you are looking to run a node for the first time and expect to need help during setup.
As a business or developer, you need to determine the demands of your software and how it would connect to the Bitcoin or Ethereum network. Once you have finalized that, you can make a better choice as to whether a shared or a dedicated node suits your case.
It is worth noticing that Anyblock Analytics provides JSON-RPC APIs that you can use to connect with either of these networks. Moreover, you can even outsource the entire DevOps work to reduce your bottleneck and save time for the development of your own product that you would otherwise spend in network configurations.