On the 1st of November 2018, the Bitcoin Cash Professional Stress Test Team conducted a brief test of the utility that we have assembled for the large scale test we are planning for the 17th of November.
For this test, we advertised the service and received just over 1BCH in test payments from members of the public to use in the test.
The Satoshi Shotgun
To prepare for the test, the team configured our tool “THE Satoshi Shotgun” with 7 full nodes, using the three most popular Bitcoin clients and geographically dispersed as follows:
- 3 x Bitcoin Unlimited (2 x USA, 1 x Belgium)
- 2 x Bitcoin SV (1 x USA, 1 x Finland)
- 3 x Bitcoin ABC (2 x USA, 1 x Hong Kong)
Starting at 12:00 UTC precisely, around 0.4 BCH was fed into the shotgun’s UTXO management framework and split into multiple UTXOs, ranging in value from 15,000 to 15,000,000 Satoshis. Once created, each UTXO was held in an array to be given to a ‘Walker’ process which used it to pregenerate as many transactions as possible, before joining the queue to be allocated a node.
Once connected to a client, each walker begins by sending a ‘Fan Out’ transaction, which takes its UTXO and splits it into anywhere from 20 to 2900 new UTXOs. After this step, each walker waits for the fan out transaction to be confirmed on the Blockchain.
Once confirmed, the IMP begins generating chains of transactions using each of the UTXOs in its set, creating a further 24 transactions per UTXO generated in the fan out. These transactions are submitted to each node via the RPC (Remote Procedure Call – A common way of handing instructions to and retrieving information from computers) interface using standard commands and the node is then left to manage the entry of each transaction into its mempool, and the broadcast onto the Bitcoin P2P network.
The test began at 12:00 UTC and generated the following activity on the Bitcoin Cash network:
The timezone this shot is from is UTC+10h so the test started at exactly 10PM on the axis. A nonstress test related transaction burst is visible at around 9.40PM, and you can see that as soon as the next block was mined, the test began.
Loading UTXOs into the IMP-Walkers is currently a manual process however an automated loader is being prepared which will allow the team to manage much larger volumes of money in such a way that it is optimised for the 10-minute block times. The time-consuming nature of this task led to a delay in activation of all walkers and nodes were prevented from operating together. This is why at approximately 12:12 UTC the transactions stopped as more UTXOs were awaiting confirmation.
The next block confirmed all the remaining UTXOs and the test was allowed to operate at full speed from there. From the period between 12:40 and 12:48, approximately 50,000 transactions were seen on the P2P network, indicating a successful rate of broadcast of around 100 transactions per second sustained.
During this time, we experienced numerous walker failures which we have attributed to the random delay that is assigned to transactions when they are being prepared for entry to the mempool. Nodes running Bitcoin Unlimited did not experience failures of this kind, while the Bitcoin SV (which still has the delay in place) and Bitcoin ABC nodes all failed to varying degrees.
After the first 140,000 transactions were sent, the team spent some time making an analysis of what the issues were, and re-gathering UTXOs from failed walkers, and re-started the test.
Post First Break
The second time the test was started we were successful in getting walker processes onto all nodes simultaneously and at one point (between 4:12pm and 4:14pm) were able to send over 15,000 transactions onto the network in 2 minutes which is a rate of 125 per second.
Failures were still encountered so the team stopped to re-configure some of the nodes (ABC and SV) to operate at a lower transaction rate to mitigate the issues being seen.
At this point, a further test was begun with a large number of small UTXOs resulting in the following:
As can be seen, from 5.44pm to 5.53PM approximately 66,000 transactions were sent onto the network, or a rate of approximately 122 per minute. This culminated in a 10MB block which emptied the Mempool.
The final test was done after gathering the remaining funds from the failed tests into the shotgun’s main wallet and sending them to the manager. This test was the most optimised in terms of success rate and was able to achieve similar transaction broadcast rates to the previous tests, but with a much lower failure rate (less than 0.2% transaction failure).
Outcomes and next steps
The team are very satisfied with the performance of the shotgun and look forward to conducting our internal testing on testnet. When we come back on the 10th we expect to be ready to demonstrate a Commented : Clarify which wallet capacity to send from 250 to 300 transactions per second onto the network for well over an hour. This rate will need to be sustained indefinitely (24 hours at least) to achieve the goals laid out in the Professional Stress Test roadmap, and we look forward to delivering on this promise.