In response to the post saying Cardano is only capable of doing 7TPS
I think this is important info as much misinformation is thrown around in the space. It’s a long read but explains exactly how Cardano TPS works
Answer/Explanation: This is a long answer, so my up-front TLDR is this: Cardano currently operates at about 7TPS, but this is only limited at the moment by a network setting ("parameter") that can be easily changed according to network need. Right now, 7 TPS is more than sufficient for all current traffic, but it should be easily adjustable up to ~50 TPS, perhaps slightly beyond. However, how the network is used (e.g. smart contracts, defi, etc.) will change TPS requirements and measurements, so don't put too much stock in the actual number.
Let's begin by talking about the main factors that can influence the number of transactions a modern blockchain network can process per second. In most blockchain protocols, transactions are written into the blockchain in bundles of transactions, known as "blocks." Thus, the first factor that influences transaction speed is the rate at which these bundles are written and approved by multiple network validators (people who help make sure all transactions on the network are legit – known as "stake pools"). In Cardano, we write blocks into the blockchain at an average rate of 1 block every 20 seconds. That said, transactions per second then also depends on how many transactions are included in those bundles. The more transactions in each of those bundles, the more transactions are being processed per second.
Things might seem simple up to this point, but this is actually where TPS gets really complicated. Why? Because the number of transactions in a block varies a ton.
To understand this complication, first recognize that most blockchains don't actually care about number of transactions when processing blocks, they care about the data size of those transactions. At the end of the day, a transaction in a blockchain is just a set of information describing what happened – who sent how much to where? Or in the case of smart contracts, who sent what to where, and what needs to happen as a result? So it's the case that some transactions take up a lot of data space, while others take up very little.
Most modern blockchains, including Cardano, then choose to set a cap on how much data each block being written can contain in terms of bytes, not in terms of number of transactions. In Cardano, we call this parameter the "maxBlockSize." This value is a delicate balance: setting the limit too high means that these huge blocks of data can be created every 20 seconds, and these big blocks need to be shared with every single person on the network – so bigger blocks can mean slower uptake, more vulnerability, and potentially more costly storage for transactions overall. Conversely, setting the limit too low means that each block can barely contain any information at all, and the network becomes incapable of handling higher loads of use – leading to network congestion and long transaction delays. So setting any one maxBlockSize comes with a number of trade-offs, and it's a constantly moving target as network usage changes, technology changes (i.e. cost of hard drive space, networking speeds, etc.), and the type of transactions being conducted changes.
Thus, transactions per second relies on how many blocks are being produced (which is easy), but also the average size of each transaction in bytes (which can and will change based on how the network is being used), and the maximum size of each block being produced (which can also change).
For now, know that the maxBlockSize of Cardano is set at 65536 bytes (per adapools). This is kind of an abstract number, so let's set some reference points. Looking at the Cardano Explorer, we can see that as of writing, most transactions are somewhere in the neighborhood of 450 bytes on average. Thus, we can fit about 146 average-sized transactions in a single block, for a rough present speed cap of about 7 TPS (146 average-sized transactions being processed every 20 seconds).
But wait, that sounds like absolutely nothing. I thought Cardano was supposed to be the network of the future? Yes, remember that I emphasized for now.
First, because maxBlockSize is a network parameter, that value can be changed very simply. The responsibility of setting or changing this parameter is currently in the hands of IOG, but once Voltaire and on-chain voting systems are fully developed, the community will be able to propose and vote on changes to this value at any time. This is absolutely critical, and is one of the strengths of Cardano as a network, because it means we can scale our potential TPS to current network utilization and current technology (remember from earlier that setting block size is a careful balance). If you look back at the blocks being produced on the Cardano Explorer, you'll notice that blocks are no where even close to the current maxBlockSize of 65536 – they're more in the neighborhood of 10000 bytes and below. What this means is that the current network utilization is not at all being capped by the network's current transaction speed. We simply aren't even close to hitting the low cap of ~7TPS on a regular basis, and thus setting the maxBlockSize higher right now will just lead to a lot of empty blocks and an unnecessarily data-heavy blockchain overall. But if we do start to get to a bottleneck, changing this parameter and increasing the network speed up into the neighborhood of ~50 TPS can happen almost immediately without an issue (as reported by IOG engineers running stress tests). It is unclear how much higher we can set the maxBlockSize at present without introducing more latency issues, but 50 is a very reasonable estimate by my figuring, the video linked, and the in-depth technical paper by IOG (see Table 6 on pg 42).
Second, the average transaction size in bytes is likely to change substantially over time. With the recent release of the Mary update introducing native tokens to the network, transactions may contain more data than before. Once smart contracts are fully deployed on the network via the final Goguen update, a single smart contract transaction may end up being bigger than what we see today for regular transactions. At the same time, Charles and IOG folks have consistently alluded to optimizing how the data in transactions are stored similar to what Ethereum has been and is doing. The thinking goes, if you can communicate the same transaction with less data, you can fit more transactions in the same block and increase the TPS of the network almost "for free." All said, the current average transaction size of 450 bytes is unlikely to hold much longer, and the network will be ready to change and adapt as necessary given the ability to vote on parameters like the maxBlockSize.
Third, there are a variety of future updates to the Cardano protocol that can really change things up and speed the network up even further. The big one to keep an eye on is Hydra, which can radically increase the TPS of the Cardano network theoretically well above 1000 TPS. Even my old skeptical bones has calculated a conservative bottom-end for TPS in Hydra at around 2500 TPS at the absolute worst (i.e. in a world where protocol optimizations cap us out at 50 TPS). Thus, once we can't scale the network to adapt to high usage past adjusting maxBlockSize and optimizing transactions themselves, Hydra can get us well beyond what would likely ever be necessary. That also ignores any future developments to the protocol that introduce other solutions for scaling (e.g. "rollups" like what Ethereum is developing) – and we have plenty of time between now and then.
So, long as hell post, but hopefully that tells you what you need to know about TPS, Cardano's network speed, and the potential future for network usage. Have questions, comments, suggestions, etc.? Write a reply to this comment and I'll get back to you ASAP!
Most Recent Edit Date: 2021-03-06
Sources and Further Reading:
• This paper from IOG on the exact topic of network speed and the trade-offs of higher block sizes • This video from IOG engineers on testing network speeds and running TPS benchmarks • Me in another post trying to grapple with these stats • Current network parameters from adapools.io
Additional Contributors: Answered provided by u/cleisthenes-alpha