3

I read somewhere that there is a global limit of about 7 transactions that can get processed per second. However I was unable to find a clear explanation of what this exactly implies.

First thought: If I tell one or perhaps a few PCs to transfer some btc a few times per second, then the network is full.

Analysis: Presumably not, as 7 actions per second is not hard to orchestrate

Second thought: If I make a transaction, I need to wait up to 1/7 th of a second before it happens.

Analysis: Presumably also not as it would not matter enough for people to mention it

Other thoughts, without conclusion:

  • A transaction may actually be a number of transfers, so perhaps the network is capped at a high number,like 7 million transfers per second
  • Perhaps this limit is only for transactions that meet criteria (approved, paid) effectively prohibiting someone from just filling the system

A better understanding of the meaning and practical implications would be welcomed!

2 Answers 2

5

The Bitcoin network uses the blockchain to form consensus on the journal of transactions. The blocks commit the network to a specific order of events and guarantee propagation. Blocks are found roughly every ten minutes and are limited to 4,000,000 weight units (or 1,000,000 vbytes). Said blockweight limit and cadence of blocks are what limits network's transaction confirmation rate: with about 2,000 to 2,500 transactions per block every 600 seconds, the transaction rate is currently closer to 3.5 tps in practice. Note that a transaction may perform more than one payment.

Before transactions are organized into blocks by miners, the unconfirmed transactions are tracked in the memory pool (mempool) of each node. A node's mempool can hold about half a day's worth of transactions by default. Miners generally pick the transactions with the highest feerate first to build their block to optimize their revenue. When peak demand subsides, the network eventually chews through the backlog, also confirming transactions with lower feerates. Altogether, this forms a market for blockspace in which users can bid with transaction fees to signal the urgency of their payments.

Indeed, how many actual payments would it take a (good or bad) actor to fill the network (or would the payments simply get all grouped together infinitely), is the limit perhaps 3.5*4million per sec?

As described above, miners generally pick the transactions with the highest feerates to form their blocks. If the attacker wants to monopolize all blockspace, they'll have to continuously displace all other transactions from the top of the queue. However, other users are free to resubmit their transactions with an increased feerate to vie for the top of the queue. This would either break the attack or quickly drive up the cost, as all other users acting independently would outspend a low feerate spam attack.

In the 2017 bubble, we saw over a dozen organic blocks with more than 12 BTC in fees. Assuming that an attacker would need to pay a corresponding ~1,200 sat/vB to monopolize blockspace, their attack would cost about 72 BTC per hour.

5
  • 1
    May be worthwhile to point out that one on-chain transaction doesn't need to correspond to just one real-world payment. Dec 27, 2020 at 0:16
  • Indeed, how many actual payments would it take a (good or bad) actor to fill the network (or would the payments simply get all grouped together infinitely), is the limit perhaps 3.5*4million per sec? Dec 27, 2020 at 0:38
  • I've updated my answer to address the scenario of an attacker attempting to monopolize blockspace.
    – Murch
    Dec 27, 2020 at 2:38
  • 1
    @Dennis Jaheruddin There is no concrete number, it depends on the techniques used, and those are mostly not part of Bitcoin itself. As a very extreme example... If I just give you my wallet file, you now have my BTC, and the ability to spend it, without anything happening on chain at all. If an attacker wants to fill all on-chain transactions, they can, by just producing that many on-chain transactions - but they'll have to pay enormous fees to compete with others who want that block space. Dec 27, 2020 at 2:42
  • Thanks for the edit, at nearly 2 million USD per hour (against current prices) I now understand why this is not happening much. Dec 28, 2020 at 20:52
1

As mentioned by Murch in the answer: transaction may perform more than one payment and Sipa mentioned in the comments: one on-chain transaction doesn't need to correspond to one real world payment

So tps can be replaced with btps when considering Bitcoin because bitcoin transactions can have multiple transactions in one.

Example: If I want to withdraw BTC from an exchange it can be sent in a batch transaction by exchange with multiple outputs and lot of users getting BTC requested in withdrawal. And this is not rare example, it happens often.

Bitcoin transactions per block: https://bitcoinvisuals.com/chain-tx-block

Outputs per day: https://bitcoinvisuals.com/chain-output-count-day

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.