By Professor Aleksandar Kuzmanovic, Co-Founder and Chief Architect
At bloXroute, our mission is to support and be open to every blockchain project that wants to scale. While the first version of the Blockchain Distribution Network (BDN) will support Bitcoin, Bitcoin Cash, and Ethereum, in this blog post we explain, at a high level, how any blockchain project can integrate with bloXroute.
Things are speeding up at bloXroute — we will soon deploy Version 1 of our system which is just the initial step in making bloXroute available to all blockchain communities. bloXroute is a neutral platform open to all blockchains and we aim to continuously add support for new blockchain projects. We realize that every project wants to scale and we are unlikely to be able to keep up with the demand for a scalable blockchain. Thus, we have designed our integration API to be as simple as possible so that any community can implement our gateway logic and ensure that the BDN is provably neutral.
Before diving into the details, let’s first briefly revisit the bloXroute architecture. bloXroute deploys a Blockchain Distribution Network (BDN) that helps blockchain nodes propagate transactions and blocks quickier and more efficiently, and most importantly, scale, i.e. achieve thousands of transactions per second (TPS). The BDN’s architecture, neutrality, and performance were discussed in previous Medium posts.
The BDN consists of two types of nodes: Relays and Gateways. Relays are high-end servers connected to each other to form the global bloXroute backbone that quickly transmits blockchain messages (transactions and blocks) in an efficient manner. A Gateway is a small piece of open-source software which is deployed side-by-side to a blockchain node, so both run on the same machine. On one end, a Gateway speaks the blockchain “language” with a blockchain node, and on the other end it speaks the bloXroute “language” with a Relay. It has numerous functions; most notably, it compresses and encrypts blocks from the nodes to the Relays, and decrypts and decompresses blocks from Relays to blockchain nodes.
Implementing Your Own Gateway
bloXroute Gateways will be open sourced, hence you can adjust the Gateway code so that it supports any blockchain protocol. At a high level, this involves three tasks:
- Implement blockchain messages (namely transactions and blocks) so that a bloXroute Gateway can understand them
- Implement message conversion (i.e., write the code that takes native blockchain messages and converts them to bloXroute messages and vice versa).
- Define the protocol specific to your blockchain (i.e., write protocol handlers. For example, the common handlers for Bitcoin and Ethereum are (a) handshake, (b) ping and pong, © inv, (d) transaction message, (e) block message, etc.)
Integrating Your Gateway with bloXroute
While anyone can implement a bloXroute Gateway, moving forward requires coordination with the bloXroute team. The coordination is needed for the following reasons.
First, we need to know if the types of messages required by your protocol are currently supported within bloXroute. For example, generic messages, such as transactions and blocks, are already supported by bloXroute. However, if you need to support other message types, we would have to implement that within bloXroute first. Next, are all the messages sent by your blockchain node broadcast in nature, (i.e., need to reach all other blockchain nodes)? If so, the broadcast primitive is already deployed in bloXroute. But if you need to support some other communication types, e.g., unicast or multicast, we’d have to understand and implement that part on our end first. As our BDN matures and we get better at dealing with various message types and communication patterns, this kind of discussion will occur less infrequently.
Second, for purely operational reasons, we need to understand the expected statistics of your blockchain network so that we can properly prepare for the deployment. For example, how long do transactions remain valid in your network? How large are blocks? What is the expected TPS rate? How many miners or verifiers do you currently have? How many nodes (not necessarily miners or verifiers) do you expect your network to have? What is the geographic distribution of your nodes? All this information will help us adjust our system, e.g., add a BDN node (Relay) in a new region, to best serve the project.
Third, we will assign your project a unique Network ID, which will be deployed on both Gateways and Relays. All messages generated by your Gateways will include this Network ID which helps our BDN recognize and route messages optimally to other Gateways that belong to your network.
Finally, before moving to production mode, it is necessary to test the functionality of the entire system. For this purpose, we will configure a testing environment to support your assigned Network ID. We will further provide very powerful debugging support, making it possible to understand where potential problems reside and how to remove them.
Alternatively, you may choose to implement your own Gateway into your blockchain code and connect to our relay network directly. Choosing to have your node natively speak the bloXroute protocol will be more performant since you skip the Gateway’s “translation” of the blockchain protocol to bloXroute protocol. The Gateway protocol will most likely undergo changes initially, so make sure your code takes that into account.
What is the best way to start?
Before starting any of the above steps, it is helpful to know the maximum TPS rate that your single blockchain node can sustain in isolation. If you don’t know, you should test it as this is the upper bound of the performance your system can reach. This can be tested in Bitcoin by looking at how many transactions a network consisting of only one miner can process. bloXroute is a great asset that will help boost any project, but bloXroute can not improve potential endpoint bottlenecks that your blockchain node might experience. We can provide guidance based on our experience fixing such bottlenecks.
In this blog post, we outlined the high-level process to integrate your blockchain project with bloXroute to achieve scale. In the same way bloXroute is neutral to all entities in a single blockchain network, it is equally neutral to different blockchain projects. It is never too early to ask us about integrating your blockchain project with bloXroute. Please drop us a line at firstname.lastname@example.org for more information. We look forward to working with you!
— — —
We’re always looking for good people!
If you’re equally excited to solve the scalability bottleneck for all blockchains, consider joining our team! We are always looking for passionate partners to help us on this important journey. Check out our available positions to work with us in our Chicago offices.