Public Blockchain | CMC Ranking | Program Language | Consensus Algorithm | Official Released TPS | Tested Avg. TPS | Tested Peak TPS |
EOS | 6 | C++ | DPoS | 3000 | 2200 | 2400 |
NEO | 17 | C# | dBFT | 1000 | 62.3 | 73.6 |
TRON | 11 | Java | DPoS | 2000 | 441 | 694 |
Ontology | 24 | Go | VBFT | 3000 | 2800 | 3679 |
WaykiChain | 99 | C++ | DPoS | 3000 | 3200 | 5500 |
VeChain | 28 | Go | PoA | 10000 | 1000 | 1000 |
IOST | 60 | Go | PoB | 8000 | 854 | 1714 |
Comparison Chart
TPS Background Introduction
Transaction Per Second (TPS) is the number of transactions executed per second. This means, for a duration of one second, we can test how executions can be performed in that time frame. However, due to the uniqueness of different consensus mechanisms, many public blockchains will have different TPS results. Are the TPS results made by public blockchains reliable or trustworthy? In order to discover the actual performance of well-known public chains, we invited senior software developers to write some test scripts.
TPS Test Method
In reference to the top blockchain test methods, the following is the method used for the first test:
1) Unified test environment, including hardware and operating system;
2) Considering the characteristics of the smart contract transactions, the type of transactions tested is just ordinary transfer transactions;
3) In order to avoid the influence of network factors, a single node (with multiple miners) will be used for this test.
Consensus Mechanisms | DPOS |
BP# | 21 |
Block Production Speed | 0.5 BPS |
TPS | 2200 |
Test Environment
AWS Cloud server, model: c5d.xlarge , 4 cores 8G , 100G nvmeSSD, CentOS 7.4
OS: Ubuntu 18
Built with source code, checkout specifies the tag: 45bfc94
Since EOS generates 2 blocks per second, the TPS is around 2200.
Consensus Mechanisms | DBFT |
BP# | 4 |
Block Production Speed | 15 BPS |
TPS | 62.3 |
Test Environment
AWS Cloud server, model: c5d.xlarge, 4 core 8G, 100G nvmeSSD, CentOS 7.4
CPU: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
Docker version 1.13.1, build 774336d/1.13.1
Docker-compose version 1.24.0, build 0aa59064
Node mirroring: docker.io/cityofzion/neo-privatenet (2019-01-20 12:01:18)
Built with CityOfZion/neo-scan-docker
Test script based on netcore2.1
Test Result
The three rounds of peaks through the browser:
The first round:
The second round:
The third round:
The highest peak: 1104 /block 73.6 TPS
Mean ≈62.3 TPS
Consensus Mechanisms | DPOS |
BP# | 27 |
Block Production Speed | 1/3 BPS |
TPS | 441 |
Test Environment
The node program runs on the local MAC pro
CPU: 4 cores (2.7 GHz Intel Core i7)
Memory: 16 G
SSD: 512 G
Test based on the private test network.
Test Result
After peaking at 700 TPS, The average = 694 (peak)
Consensus Mechanism | VBFT |
BP# | 5 |
Block Production Speed | 1/6 BPS |
TPS | Stable TPS: 2800; Peak TPS: 3679 |
Test environment
i7-8700cpu, 32G RAM, 500G mechanical hard disk, Windows 10
Test-based on regtest network.
Test Result
CurrentBlockHeight = 13, solo actor receives block complete event. block height=14 txnum=15628 TPS=2604
CurrentBlockHeight = 55, solo actor receives block complete event. block height=56 txnum=13700 TPS=2283
CurrentBlockHeight = 70, solo actor receives block complete event. block height=71 txnum=17945 TPS=2990
CurrentBlockHeight = 74, solo actor receives block complete event. block height=75 txnum=20000 TPS=3333
CurrentBlockHeight = 97, solo actor receives block complete event. block height=98 txnum=18898 TPS=3150
CurrentBlockHeight = 120, solo actor receives block complete event. block height=122 txnum=22074 TPS=3679
CurrentBlockHeight = 179, solo actor receives block complete event. block height=180 txnum=13310 TPS=2218
CurrentBlockHeight = 180, solo actor receives block complete event. block height=181 txnum=16660 TPS=2777
CurrentBlockHeight = 601, solo actor receives block complete event. block height=602 txnum=19116 TPS=3186
CurrentBlockHeight = 621, solo actor receives block complete event. block height=622 txnum=12269 TPS=2048
CurrentBlockHeight = 635, solo actor receives block complete event. block height=636 txnum=16830 TPS=2805
CurrentBlockHeight = 656, solo actor receives block complete event. block height=657 txnum=17428 TPS=2905
CurrentBlockHeight = 1234, solo actor receives block complete event. block height=1235 txnum=13427 TPS=2238
CurrentBlockHeight = 1236, solo actor receives block complete event. block height=1236 txnum=15936 TPS=2656
CurrentBlockHeight = 1280, solo actor receives block complete event. block height=1281 txnum=20682 TPS=3447
CurrentBlockHeight = 1308, solo actor receives block complete event. block height=1309 txnum=17691 TPS=2949
CurrentBlockHeight = 1404, solo actor receives block complete event. block height=1405 txnum=13278 TPS=2213
The peak reaches 3679 TPS, the lowest is 2048 TPS, and the TPS is stable at around 2800.
Consensus Mechanism | DPOS |
BP# | 11 |
Block Production Speed | 10 BPS |
TPS | Stable TPS: 3.2k; Peak TPS: 5.5k |
Test Environment
Node program version: https://github.com/WaykiChain/WaykiChain
Node program runs under Alibaba Cloud ECS Docker
CPU:8 cores(Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz)
Memory:32 G
SSD:40 G
Host machine OS: Ubuntu 14.04.5 LTS
Docker:version 18.06.1-ce
Docker OS:Ubuntu 14.04.3 LTS
Test based on regtest network.
Test Result
Start common TPS test parameter | estimated TPS | actual TPS |
20 65 | 3250 | 3238 (stable) |
20 100 | 5000 | 5589 (unstable, peak) |
Use “./coind -datadir=. getblock <height> | grep txnumber” to query the number of transactions included in the specified block.
Using the starting block 10 and the terminating block 20 in TPS press measurement as shown below.
Calculated the mean of the transactions for each block of 10 consecutive blocks:
Because the interval of block production is 10 seconds, TPS = 29639.3/ 10 ≈ 2963
Consensus Mechanism | POA |
BP# | |
Block Production Speed | 10 BPS |
TPS | 1000 |
Test Environment
Node program runs on Alibaba Cloud ECS Docker
CPU:8 cores(Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz)
Memory:32 G
SSD:40 G
Host machine OS:Ubuntu 14.04.5 LTS
Docker:version 18.06.1-ce
Docker OS:Ubuntu 14.04.6 LTS
Test Result
Stable TPS:1000; Peak TPS: 1000
Each block contains a maximum of 10,000 transactions. The time interval of each block is 10s, so the calculated TPS=1000.
Consensus Mechanism | POB |
BP# | 17 |
Block Production Speed | 2 BPS |
TPS | 854 |
Test Environment
Docker version 18.06.1-ce, build e68fc7a
root@298e90390d9a:/# cat /proc/version
Linux version 4.4.0-93-generic (buildd@lcy01-28) (gcc version 4.8.4 (Ubuntu 4.8.4- 2ubuntu1~14.04.3) ) #116~14.04.1-Ubuntu SMP Mon Aug 14 16:07:05 UTC 2017
The test was based on private test networks.
Test Result
Conducted multiple sets of tests. After the test program runs for 5 mins, through the interface getBlockByNumber scanning, the number of transactions included in each test block is divided by the block production interval time to obtain TPS.
The partial log record selected in a stable test period of about 100s follows, the average TPS is 854.
Peak =1714.
Though these mainstream public blockchains have their own program language and consensus mechanism, by using different test methods, we can get the tested average TPS and peak TPS. Among these, Ontology and WaykiChain have the higher tested TPS than their officially released TPS.
The competition between public chains is the competition of stability, security, usability, and efficiency, so strengthening the technical security and stability of the entire public chain is vital. High-performance transaction processing capabilities and efficient consensus mechanisms are the essential parts of creating a stable and secure ecosystem environment for blockchain developers and users.
About the Author: Joanna Chow is a prolific writer in the blockchain industry