“Ten blocks per second” is a block rate, not a transaction rate. This page turns one into the other.
The arithmetic
A block is capped at 500,000 grams of compute mass, and the network produces ten blocks every second. Multiply:
5,000,000 grams per second of capacity An ordinary payment - one input, two outputs, one signature - runs a little over 2,000 grams. Divide:
5,000,000 / 2,000 ≈ 2,500 transactions per second The ceiling is in the low thousands, and it is a base-layer number. No rollup, no sidechain, no sequencer, no bridge. That figure is what the chain itself settles.
It also moves with what people are actually sending. Multi-signature spends carry more compute mass and land fewer per second; a covenant call carries more still. Capacity is measured in grams, so the transactions-per-second figure is a consequence of the traffic mix rather than a constant.
Three ceilings, not one
Compute is only the dimension that usually binds first. Every block is capped on all three at once:
| Dimension | Per-block limit | What it bounds in practice |
|---|---|---|
| Compute | 500,000 grams | Validation work. The binding constraint for ordinary payments. |
| Transient | 1,000,000 grams | Block body size - about 250 KB, since transient mass is serialized bytes × 4. |
| Storage | 500,000 grams | How fast the UTXO set can grow. |
A block fills up when any one of the three runs out. A block of dust-creating transactions exhausts storage long before compute; a block of large scripts exhausts compute long before size. Toccata doubled the transient limit specifically so that block bodies were not the thing standing in the way.
There is one further limit worth knowing: a block may carry transactions from at most fifty non-native subnetwork lanes, each with its own gas ceiling. That bounds how much of a block any single specialized workload can claim, so a busy lane cannot crowd out ordinary payments.
Duplicates are the tax
The DAG can carry more transactions than the ledger will count.
A transaction may legitimately appear in several parallel blocks. It is accepted once - the second copy tries to spend coins that are already gone - so every duplicate is capacity that produced nothing. Raw block throughput and useful throughput are not the same number, and the gap between them is entirely a question of how much parallel blocks overlap.
This is what the mempool’s weighted sampling exists to prevent. Miners building templates at the same instant draw different transactions rather than the same top-of-the-list ones, which keeps overlap low without any coordination between them.
The measure of how well that is working is effective TPS: a ratio of what the DAG delivered to what it could have delivered given the transactions available. One means capacity is going to distinct work. Zero means the DAG is busy carrying copies while unique transactions wait.
What the network actually does
Ceilings describe capacity, not demand. Real throughput tracks what people are sending, and mainnet has historically run far below its ceiling - which is the reason fees sit near the relay floor and inclusion takes about a second.
The live numbers are charted: average TPS, max TPS, and transaction count.
Why the ceiling is where it is
The limits above are not arbitrary. Each one is a bound on what a node must do to keep up in real time, and the binding constraint on all of them is that a Kaspa node has to run on ordinary hardware.
- Compute is bounded by validation speed. A node must fully validate ten blocks a second, forever, on consumer processors.
- Transient is bounded by bandwidth. Blocks have to reach the whole network within a fraction of a second, or GHOSTDAG starts coloring honest blocks red.
- Storage is bounded by memory. The UTXO set is the one thing pruning never discards, so its growth rate is a permanent commitment.
Raising any of them raises the cost of participating, and a chain nobody can afford to verify is not decentralized. The ceiling is a decentralization budget, spent deliberately.
See Also: Blocks, The Crescendo Hard Fork