Nov 2018 Stress Test, Pre Test Report
Starting at 12:00UTC on the 10th of November 2018, the Bitcoin Cash Professional Stress Test Team conducted a pre-test of the systems developed for the Bitcoin Cash Network Stress Test currently planned to take place on the 17th of November.
The test took place over 4 hours and generated over 1.5 million transactions. During the test five full 32MB blocks were generated by SV Pool (1) and BMG Group (4) miners demonstrating that there are mining systems on the network today that are ready to mine blocks larger than 32MB, which bodes well for the upcoming main test on the 17 th of November.
To prepare, the Satoshi Shotgun was upgraded to a 48 Core machine with over 180GB of RAM to manage the workload. The Shotgun is built on top of a Bitcoin Unlimited node and uses custom software created by the Stress Test team. We also deployed a network of 38 transaction processing nodes in a variety of geographically dispersed locations and using Bitcoin SV, Bitcoin ABC and Bitcoin Unlimited client implementations. Each node was a 2-core machine with 7.5GB of RAM.
Our automated deployment system ensured that when nodes are created, they are automatically interconnected with all other nodes in our cluster. This ensures that our transactions are rapidly propagated within our own network and are injected into the Bitcoin Cash Peer to Peer network.
The nodes were distributed as shown in the following table:
The following software versions were used for all nodes of each client type:
- Bitcoin ABC: Version 0.18.2(EB32.0)
- Bitcoin Unlimited: Version 18.104.22.168(EB32; AD12)
- Bitcoin SV: Version 0.1.0(EB128.0)
At the allotted starting time, a single UTXO containing 4BCH was split into 80 packages of 0.05BCH each and sent into the Satoshi Shotgun to be split and queued for transmission.
Throughout the test we maintained an average transaction throughput rate of just over 100 transactions per second however at the peak of the test over 80 transactions per second were being sent onto the network. Interestingly, this maximum throughput coincides with the generation of the string of consecutive large blocks mined by BMG group during the test.
The significant upgrades made to the Satoshi Shotgun were shown to be extremely effective, allowing the test to achieve a peak transaction rate of over 800 transactions per second, around 2 hours into the test.
The feedback generated by the test has allowed the stress test team to plan further modifications to the Satoshi Shotgun that will ensure our main test on the 17th of November will generate and maintain a sustained transaction throughput and giving us the ability to manage and control the throughput.
Nodes are picked out of an ‘available’ pool in a random manner once transaction packets have been created. At no point did we reach a situation where our 36 nodes were all being used simultaneously, with the peak being 32 nodes at once.
Some issues arose during the test including one manual handling error that resulted in a 50,000- transaction blast being sent to one single process rather than being split across many. This led to a delay in the queueing of the transaction block due to the excessive time needed to generate the transaction IDs. This appears as a lull in traffic from around 20 minutes into the test, lasting almost 20 minutes.
Another issue arose from our choice to use a cloud computing service that is very low cost, but variable availability. At one point during the test 5 of our nodes were taken offline by the service provider. This did not impact the performance of the system as the number of nodes available was never exceeded by the number of available transaction packets ready to send onto the network.
The stress test was a great success and we sent over 1.5 million transactions onto the network.
The below chart shows the transaction throughput in tx/sec throughout the test, showing a peak rate of 828 transactions per second approximately 2.5 hours into the test. This peak coincides with a string of 32MB blocks mined by BMG group.
Figure 1: Transaction rate in Tx/Sec throughout the test
Results on the blockchain
At 12:06, the block containing the first of the packages was confirmed (https://blockchair.com/bitcoin-cash/block/556031) which began the process of generating large quantities of chained transactions and handing them to Walker processes to transport them to each of the nodes. This process began very quickly leading to a rapid build-up in the mempool. SVpool found a 3.5MB just 8 minutes later, mining over 17,000 transactions. In this same block, further packages were confirmed allowing more walker processes to be created, eventually allowing all 54 nodes in the shotgun to begin blasting transactions simultaneously.
Two blocks later, at 12:45UTC, the first ever full 32MB block was mined onto the Bitcoin Cash blockchain (https://blockchair.com/bitcoin-cash/block/556032) by SV pool. The block included 166,739 transaction and earned the miner 0.33415816BCH in addition to their 12.5BCH block reward. While this represents just 2.6% of the total amount in the block’s Coinbase transaction, it’s easy to see that when Bitcoin scales beyond Gigabytes and into Terabytes that these fees will eclipse any rewards created by the generation of new coins.
Subsequently there were a rash of quick blocks found, which kept the mempool low for a while, but then from about 13:45 onwards, we saw a series of small blocks in a row which each left an increasing transaction pot in the mempool. Blocks 556040 through 556044 all appeared to be mined using nodes configured for small blocks, coming in at 3.0, 2.0, 2.5, 2.0 and 2.0 MB respectively, for a combined total of just 11.5MB. These blocks were mined by a variety of miners and pools including ViaBTC and GMO and led to a situation where the number of transactions flowing into the network was far in excess of the number being mined for over an hour.
This set up the next run which led to an astounding 4 full 32MB blocks within less than 1 hour.
These 4 blocks were all mined by BMG pool in rapid succession showing that their infrastructure is ready for blocks larger than 32MB.
All in all, the test Bitcoin Cash Professional Stress Test team are extremely satisfied with the performance of both the Satoshi Shotgun and the network itself. During the test we created and sent 1,578,504 transactions over a period of around 4 hours, or around 400,000 transactions per hour. This was achieved with zero failures and almost complete automation of the process.
The team have every confidence in being able to set up and maintain the blaster at a run-rate exceeding 1 million transactions per hour on the 17th of November and look forward to the results of this test.