Nano Stress Tests - Measuring BPS, CPS, & TPS in the real world

Here is a dedicated forum post for keeping track of Nano stress tests, measured primarily in CPS.

Date Peak Avg Env Other
2020 Oct 7 1726 ~1200 Beta v22db6, ~1200 saturation, 18 nodes. Four tests, at 1000, 1200, 1300 & 1500 BPS (1, 2)
2020 Sep 3 1468 ~1000 Beta v21.2rc1, ~1200 saturation, 33 nodes, avg drops to ~900 post-saturation (1, 2, 3, 4)
2020 Sep 1 1066 ~950 Beta v21.2db1 but w/ more nodes; ~1100 saturation (1, 2, 3)
2020 Aug 31 1465 1220 Beta v21.2db1, 99% conf-time <1 sec, not saturated (but few nodes) (1, 2, 3, 4)
2020 Aug 25-27 21 5-7 Prod v21.1, epoch distribution, ~250 ms median conf time (1, 2)
2020 Aug 18 161 100 Prod v21.1, $10/mo PR (4 cpu, 8GB, ssd) stayed in sync (1, 2, 3)
2020 July 3 93 90 Prod Half v21 and half v20 nodes. 330 bps peak (1, 2, 3, 4, 5)
2020 May 18 1853 150 Beta v21db13, The goal of this test was to saturate the nodes and then sustain high throughput, rather than trying to reach the peak limit of CPS (1, 2, 3, 4, 5)
2020 Apr 13 1,295 734+ Beta v21db12 (1, 2, 3)
2020 Mar 13 1,197 734? Beta 6 PRs, some PRs dropped (1, 2, 3)
2020 Mar 13 95 95 Beta 96 bps pre-test; flat avg & 47ms median conf time (1)
2020 Jan 24 744 740 Beta v21db4, just above saturation (1, 2, 3)
2020 Jan 18 600 600 Beta v21db2, below the saturation point (1, 2)
2019 Dec 30 87 55 Prod 8+ hours at 55+ (1, 2, 3, 4)
2019 Dec 21-29 8 7.4 Prod 8+ days at 7+ CPS, median conf time .3 seconds (1, 2, 3)
2019 Dec 19 493 ~200 Beta 700 BPS, hit saturation (1, 2, 3)
2019 Dec 19 498 498 Beta No saturation; <5 sec conf times (1, 2, 3, 4)
2019 Nov 26 48 40 Prod 0.4 avg conf time (1, 2,)
2019 Oct 28 400 89 Beta N/A (1, 2, 3)
2019 Sep 3 N/A 300 Beta 170ms median conf time (1, 2)
2019 Aug 1-5 N/A 8 Prod 4 day test (1, 2)
2019 Aug 3 25 N/A Prod 0.5-0.7 conf times (1)
2019 Jul 10 150 138 Beta 1st test measuring CPS instead of TPS (1)
2019 May 24 80* N/A Beta Last test measuring per-node TPS* (1)
2019 Apr 13 N/A 40* Prod N/A (1)
2018 Aug 23 919* N/A Beta Single node peak (1, 2)
2018 Aug 17 756* 75* Beta N/A (1)
2018 Feb 2 40* N/A Prod N/A (1, 2)
2018 Jan N/A 120* 35* Prod N/A (1)
2018 Jan N/A 306* 105* Prod N/A (1)
2017 N/A N/A 7000 7000 Paper/Lab Theoretical profile (1, 2)

BPS vs CPS vs TPS

*For earlier stress tests, the only numbers we have are perceived BPS numbers (not CPS). Perceived BPS was a per-node measurement that represented the perceived network-level transmission rate (BPS), but this measurement was found to be somewhat inaccurate due to peering and propagation differences between nodes. CPS is now the preferred term for describing overall Nano network scalability, and is what listed in the above table for all tests newer than May 24, 2019. The older stress tests listed in the table don't have CPS data, only the original TPS measurement (aka perceived BPS).

It is also important to note that the CPS measurement in Nano is not the exact same thing as the TPS measurement from other cryptocurrencies; CPS/2 is a closer comparison. While Nano transactions do not require a corresponding receive transaction to be considered confirmed (irreversible), there must be a corresponding receive transaction before received funds can be spent again. From the Nano glossary:

  • BPS - Blocks Per Second, the transmission rate of unconfirmed blocks (transactions) on the network
  • CPS - Confirmations Per Second, the rate of confirmed blocks (send or receive)
  • TPS - Transactions Per Second

Beta network saturation points

  • v19rc3: 83 CPS (1, 2)
  • v19: 200 CPS
  • v20: 350 CPS
  • v21db1: 500 CPS
  • v21db2: 700 CPS
  • v21db4: 740 CPS
  • v21db10: ~750 CPS
  • v21.2db1: 1465+ CPS, ~18-20 nodes
  • v21.2db1: ~1100 CPS, ~34 nodes
  • v21.2rc1: ~1200 CPS, ~33 nodes
  • v22db6: ~1200 CPS, 18 nodes

Additional information

While some of the weaker nodes dropped offline (as expected) during some of these stress tests, the Nano network itself stayed online and functional. One of the biggest issue with testing the production environment is typically generating enough blocks (PoW) to actually stress the network.

Remember that even just 50 TPS (100 CPS) is 4,320,000 transactions per day, and Nano can do that pretty comfortably:

Nano is doing really well imo, and I wouldn't be surprised to see a 1,000+ TPS stress test in the next few years.

Can Nano scale for the whole world?

It depends on your timescale and adoption rate. It's highly unlikely than any single payment system (cryptocurrency or otherwise) will displace ALL existing payment processors, and it doesn't need to - it takes a LONG time to obtain that many customers. In 2019, 185.5 billion purchases were made via Visa, 131 Billion via UnionPay, 108 billion MasterCard, ~16 billion for Amex/JCB/Discover, totaling ~14000 TPS average. It's highly unlikely that any existing cryptocurrency can (or should) handle that load. Achieving even just Discover-level adoption (~44 million users) would be a huge achievement for any cryptocurrency, and at Discover usage rates that's ~95 TPS average

It's better to start with more realistic targets: for example, achieving 100 million users for any one cryptocurrency. Even Bitcoin is only at ~8 million users per 2018 Chainalysis estimates. 2011 PayPal was doing ~57 TPS average with 100 million customers, 2018 PayPal did ~314 TPS with 267 million active accounts, and 2019 Discover is at ~95 TPS with ~44 million customers. Nano can handle similar loads now, and even without protocol improvements Nano automatically improves roughly in line with Moore's law

Tl;dr, Nano doesn't have to be able to scale for the entire world from day 1, but it's doing remarkably well for a decentralized network vs centralized for-profit systems

12 Likes

I'll link my other post to this.

1 Like

@Qwahzi Can you make an edit to the second citation link of 2019-11? It is currently scaled down and has lots of compression artifacts. The link below makes it more readable. Cheers.

https://i.imgur.com/e5sXH0a_d.jpg?maxwidth=2048&fidelity=high

3 Likes

Done, thank you for the better link!

2 Likes

Thank you for providing such a very useful summary with all the references!

3 Likes