By: Eyal Marchovich, COO
Over the last two months bloXroute has been running a Bitcoin Cash (BCH) Mining Test live on the BCH testnet. bloXroute allows miners to hear about and send large blocks faster, allowing miners to mine more efficiently. The purpose of this test was to measure performance with and without bloXroute under circumstances that more closely mirror the real world.
We are excited to share with you our results (expanded below):
- The BDN propagates large blocks (32MB) between 2–18 seconds compared to up to 193 seconds without bloXroute. (Propagation times include block validation, which we have seen take between 1–5 seconds on large blocks).
- China saw the largest improvement in propagation times. For example, a node in Beijing processed large blocks between 17–151 seconds without bloXroute and 3–7 seconds with.
- Block compression technology, such as Compact blocks, improved with the BDN as transaction propagation allowed mempools to be more in sync.
- The BDN sped up fork recoveries (e.g. recover missed transactions included in compact blocks).
These results are extremely promising and continue to prove that the networking layer is a bottleneck to scalability. We plan on running our Ethereum Mining Test later this month and launching the BDN on the bitcoin (BTC and BCH) mainnets (GitHub and directions to come). Any miners or node operators interested in participating in the ETH Mining Test can send an email to firstname.lastname@example.org.
Why did we decide to test with BCH and on the testnet?
We chose to test first with the bitcoin protocol because, quite simply, it has the highest market share. We picked Bitcoin Cash and not Bitcoin core because we wanted to measure large block propagation and bitcoin core only supports 1MB blocks. Finally, we used the testnet because we needed to create millions of transactions and it would have been very expensive to do on the mainnet.
We partnered with the largest miners and mining pools from around the globe, including BTC.com, F2Pool, Rawpool, and Great North Data, to mine on the BCH testnet. By partnering with real miners we were able to test the BDN in that closest real world settings and account for characteristics such as connectivity, geographic dispersion, and peer selection.
Miners provisioned a Bitcoin Cash full node connected to the testnet, an ASIC mining rig to use for mining, and the appropriate stratum software to connect the mining rig to their full node. It was important for us that participating miners run the bitcoind process the same way they run it in production (i.e. we didn’t want to run bitcoind with additional debug level). Thus, we installed a logger process on each miner’s machine that reported statistics from the bitcoind process.
Miners downloaded the bloXroute Gateway and added this open-source program as a peer node. Some miners ran the gateway using docker and some installed it from the gitHub repo. The architecture was as follows:
The test consisted of two phases:
- Phase 1: Miners mine without the bloXroute Gateway to establish a baseline
- Phase 2: Miners mine with the bloXroute Gateway to measure performance
Miners turned off their bloXroute Gateway so we could establish the performance baseline without bloXroute. We then generated a large amount of transactions to encourage large blocks on the testnet network. We continued to generate transactions until we received sufficient data for our test.
Miners restarted the Gateway software and ensured that it was connected to the Bitcoin Cash Full Node. The Bitcoin Cash Full Node was in turn connected to a bloXroute Gateway and then to the bloXroute BDN.
Again, bloXroute generated a large amount of transactions to encourage larger blocks on the testnet network. Miners mined blocks as normal, sending blocks to the bloXroute Gateway as if it was a peer node, and to its other peers. Any mined blocks were propagated from the Full Node through the bloXroute Gateway and through the BDN, in addition to being propagated through the Bitcoin Cash peer-to-peer network. The Bitcoin Cash full node remained active while the Blockchain-Logger continued to track the activity and report back to bloXroute.
The miners used the same node for both phases with the same version and configuration of bitcoind. We actually ran into a few weeks delay since between the two phases, the BCH had the May 15th planned upgrade. The upgrade caused the testnet to split to two networks (all the nodes that were not upgraded were on a different chain), so we redid phase 1 again after the May 15th upgrade.
The installed logger collected several data points that allowed us to measure just how much bloXroute sped up block propagation. One item reported was when a new block was added to the chain (by looking for the UpdateTip message in debug.log file). This message is written when a node completes validation of a block, so the propagation times reported included both block propagation and block validation time. We saw validation times range between 1–5 seconds on large blocks and propagation times (including validation) ranging between 2–18 seconds on large blocks with bloXroute, compared to 9–193 seconds without bloXroute.
We saw the largest improvement in propagation times in China. For example, a node in Beijing heard and validated large blocks (32MB) between 17–151 seconds (blocks 1–6 in the diagram below) from its peers. Once the BDN was turned on, the same node received and validated large blocks in 3.4–7 seconds (blocks 7–13).
Similarly, a node in Hangzhou saw large blocks propagated without the BDN in 33–193 seconds compared to 4–10 seconds with the BDN.
The following graph presents the propagation and verification time for the slowest five nodes for 32 MB blocks. The information on each block is detailed in the appendix.
Two other encouraging results:
- Block compression technology, such as Compact Blocks, worked better when the BDN was used. This can be explained by the fact that the BDN helps the P2P network better propagate transactions, resulting in Mempools being more in sync across nodes. When the Mempools are in sync, Compact Block works faster and less transactions need to be recovered.
- With the BDN the network can recover from forks faster. When a node receives a new compact block after a fork, it will need to recover many transactions which is a time consuming task. The BDN was able to dramatically speed up fork recoveries.
Thank you to our partners, including BTC.com, F2Pool, Rawpool, and Great North Data, for participating in the test, and thank you to our talented Development Team who has worked tirelessly across time zones. Our project is grateful to have already achieved so much progress in 2019 and we are excited for what the remainder of the year has in store.
The best way to stay up to date regarding our V1 launch and other company information is by following us on Twitter @bloxroutelabs.
— — -
We are a team of computer scientists, engineers and passionate entrepreneurs. If you want to join us on our mission to scale all blockchains, please check out our available positions to work with the bloXroute team in our Chicago offices.