With the focus on payments modernization , M10’s ledger addresses the problem of high speed - low latency transaction processing from end to end. To achieve this, a ledger platform needs to achieve high performance that can handle peak/spike volumes while also providing end to end security from a user’s device to the ledger core.
Considerations for the high performance end to end system:
- Ledger Core
- Ledger API
- Identity Management
M10’s ledger is a custom pBFT ledger, capable of processing 1M+ payment transactions per sec. This article will focus on the testing methodology for the ledger core. Other pieces of the system will be discussed in future articles to provide a complete end to end view of the performance for the overall platform.
Setup - test environment
To be consistent with other performance tests and frameworks, we modeled the tests to be similar to other environments so that the results would be comparable. Our test environment consists of four nodes which represents a single currency ledger. The four nodes consist of a proposer and three voters which form a committee that finalizes endorsed blocks of transactions. At this phase, the load generator multicasts already “endorsed” transactions to the committee. In the next version of the test tool, endorsement will be part of the evaluation.
Figure 1: Test system with Proposer introducing new blocks (payment transfers) and Committee nodes voting on the blocks.
Figure 2: Test system with Proposer introducing new blocks (payment transfers) and Committee nodes voting on the blocks.
Every transfer executed in our test environment is an M1 transfer, which consists of 3 debits and 3 credits. M1 transfers use M0 currency as the medium of exchange. For more information on how M1 and M0 money are represented in the M10 platform, you can visit our website at https://m10.io/
Figure 3: Payment from Alice to Charlie using M1 and M0 money.
To simulate a high volume payment scenario, the ledger core was tested for sustained throughput both for performance and endurance. An example of the scenario with parameters is shown below.
1B transfers were needed to create a sustained load to reach 1M+ payment TPS.
In our initial tests, the system was able to handle short bursts of load and also longer sustained loads. We were able to achieve a promising 1M+ payment transactions per second at the ledger core with a sustained load of 1B transactions created by the load generator. This sustained performance is proof that the ledger system is more than capable to handle all existing payment volumes today.