2

I have seen different values mentioned but the 3.3--7 transactions/second appears to pop up a lot. In Section 2 of On Scaling Decentralized Blockchains (A Position Paper) it says the following:

There are two interesting scenarios: The first scenario is when the Bitcoin network is operating at maximum throughput, namely 3.3–7 transactions/sec. This maximum throughput is mainly constrained by Bitcoin’s 1MB maximum block size and the variable transaction size. The lower bound of the maximum throughput is inferred from the current average transaction size, about 500 bytes, while the upper bound is based on an oft-cited estimate from [1] which corresponds to unusually small (250 byte) transactions.

The maximum block size is 1,000,000 according to the source code. My calculations give me these values for average transactions sizes of 500 bytes for the lower bound and 250 bytes for the upper bound:

lower bound: 1,000,000 / 500 / 600 = 3.3333(3)
upper bound: 1,000,000 / 250 / 600 = 6.6666(6)

lower bound’: 1024*1024 / 500 / 600 = 3.4952533(3)
upper bound': 1024*1024 / 250 / 600 = 6.9905066(6)

According to my calculations, the correct rounded maximum throughput of the Bitcoin network is 3.3--6.7 for the transaction averages given above. I am wondering whether I got something wrong. The authors could have rounded only the upper bound but that doesn't make much sense though.

  • This might be a question to ask the authors of the paper, since apparently they didn't show their math. It's hard for anyone else to say how they came up with the numbers that they did. My guess is that it's rounding. – Jestin May 22 '17 at 19:40
  • I edited the title, as it's about the Bitcoin network, and not any specific implementation. – Pieter Wuille May 23 '17 at 18:35
2

The smallest transaction that would commonly occur in the wild is a P2PKH transaction with one input and two outputs (send amount and change output). A P2PKH input has 148 bytes, a P2PKH output has 34 bytes and the transaction overhead is 10 bytes, 148 bytes + 2*34 bytes + 10 bytes = 226 bytes, in the case when no change output is required, this could actually be 192 bytes.

The blocksize limit is a megabyte, not a mebibyte, so it's 1,000,000 bytes.

If all transactions were only P2PKH with one input and two outputs, the throughput would be 1,000,000 / 226 / 600 = 7.37 tps. However, the mix is very different with a lot more transactions on the network making use of multisignature inputs or sending to boatloads of different addresses at the same time, and the current average transaction size is around 520 bytes, making the 3 tps figure much more accurate.

I don't know why the authors would have only rounded the upper bound.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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