OVERVIEW
OneLedger Technology Inc.1 as a company, is established to provide a universal protocol that enables interoperability across various blockchains. We aim to be the first truly interoperable blockchain, with a focus on scalability and fault tolerance.
We use Tendermint2 as our consensus engine. Tendermint provides us with a Byzantine Fault Tolerant State Machine that can withstand failure of 1/3rd of the machines in the network. Our unique approach helps us to easily facilitate both public permissionless and private permissioned blockchains.
We recently conducted Load Testing as part of the ongoing effort to test the effectiveness of our public blockchain. This paper aims to discuss the Load Testing methodology and metrics in detail for our public blockchain.
AIM
NEED FOR LOAD TESTING
OneLedger is built on top of the Tendermint consensus layer which uses a PBFT consensus model. OneLedger protocol benefits from it to build Delegated Proof of Stake (DPoS) model. Validators stake OLT in order to gain a chance to be a block proposer. This model is much faster than PoW3 model, where the participating nodes compete to solve a complex mathematical puzzle to become the block proposer. Tendermint goes through 4 stages4 (Propose, Pre-Vote, Pre-Commit and Commit) before each block is committed. There are many messages being exchanged among all the Validators in each of these stages. OneLedger is committed to providing the best possible experience for the community. In this regard, it is highly important for us to figure out how the network behaves under different load conditions. This helps us to be adequately prepared for future milestones such as the Mainnet.
LOAD TESTING METHODOLOGY
This load test is performed on the Google Cloud Platform. All the VM’s we used have 8 CPUs and 16 Gb RAM for the purpose of this load test. We have experimented with varying Number of Validators and the Mempool5.
The block size is set to 21 Mb, our transaction size is roughly 186 bytes for each transaction, which means a block could hold more than 110,000 transactions. As discussed above, Tendermint goes through 4 stages for each block, as part of its commit process. The time interval for each stage is set to the following values:
Figure 1: 4 stages of Tendermint (per block), as per OneLedger’s configuration
We started with 2 Validators and tested for Mempool with a number of transactions in the Mempool varying from 100, 1000, 5000, 10000, 50000 and 100000. We repeated the same test with 4, 8, 16, 32 and 64 Validators.
For each test, we have bombarded each Validator with 1000-4000 transactions per second simultaneously across all the Validators.
RESULTS
The number of validators is plotted on the X-axis and the Transactions per second (TPS) is plotted on the Y-axis. Each line represents Mempool configuration with a different value.
Inference
If you would like to learn more about OneLedger’s Load Testing results, feel free to contact us on our Telegram Dev Channel.
1 OneLedger Technology Inc. is referred to as “OneLedger” for all purposes moving forward in this paper
2 More info about Tendermint, click here
3 PoW means Proof of Work Consensus Model
4 Click here for more details
5 Mempool is the shared memory pool which acts as intermediate storage for all the transactions passed to the network