MotivationScalability of consensus protocol implementations is a well known and much debated issue, in which the capacity of a blockchain to handle a large number of transactions per second plays a central role. In this regard, to test the performance of the Graphene technology, on which Bitshares is built, a group of people from the community have expressed their willingness to conduct a collaborative performance test on Bitshares. The aim of the test is to get a measure of the platform's transaction throughput by trying to execute a heavy load of transactions on the blockchain.
DesignA script will be run by multiple participants to broadcast transactions. The participants will agree on a time to run the script, and flood the network at that time for a predetermined timespan. There is no upper limit to the load of transactions, which means that more participants and better testing environment will result in a higher load.
There will be multiple phases of the test, described as follows:
Phase I: The participants will broadcast transactions at the same time with the same delay between each transaction for 1 minute.
Phase II: The participants will broadcast transactions at random times with a random delay between transactions for 1 minute.
Phase III: The participants will broadcast as many transactions as possible for 10 minutes.
ImplementationThe testing will first be performed on the testnet, for which the conditions will be emulated to the mainnet environment. To this end, a total of 30 witness nodes will be installed and the necessary configurations will be made for them to get an active witness status on the testnet. Afterwards, the testing script will be written and tested by individual participants. The participants will then agree on a time to start the testing on the testnet.
As many statistically significant details as possible about the test results will be collected, compiled, visualized, interpreted, and published. A member or a group of members from the community will be chosen to execute the post-testing work.
The details of the mainnet testing will be determined later.
Roadmap- Installation & configuration of the necessary number of testnet witness nodes.- Writing the testing script & individual sanity checks.- Agreeing on a time & agreeing on the details of the post-testing work.- Performing the test on the testnet.- Collection, refinement, and presentation of the test results.- Deciding for the details of the mainnet testing.Call for ParticipantsPlease write under this thread to participate in the test for the swift communication and easy resource handling.
Relevant LinksBitshares Telegram group:
https://telegram.me/BitSharesDEXGraphene testnet repo:
https://github.com/BitSharesEurope/graphene-testnetDocumentation for producing witness nodes:
http://docs.bitshares.org/bitshares/tutorials/witness-howto.htmlResultThe test conducted on the testnet has successfully shown that the Bitshares network could process 3300 transactions per second. For more details, see the following post:
1h30 min BitShares Stress Test of the 15 March 2017 - 3300TXs 14000OPsConducting the stress test on the mainnet is canceled because of the conclusiveness of the test on the testnet.