16

I am trying to figure out how many Bitcoin transactions could be verified per second. Am I correct that signature verification is more expensive than computing Merkletrees and hashes and therefore constitutes the bottleneck of the verification process?

Having read this paper it seems to me that tens of thousands of signatures per second could be verified. Have I misunderstood the results?

As I am only interested in signature verification, let parameters like internet bandwidth and storage requirements to handle the stream of incoming data be outside of the scope of this question.

4
  • I suspect the answer would depend on whether you are using an Attiny85 or Summit at Oak Ridge. Apr 18, 2020 at 10:58
  • changed the title of the question to include commodity hardware in the year 2020 Apr 18, 2020 at 11:07
  • 3
    You can't measure verification speed with tx/sec because it would depend on the transaction a lot. One tx could be verified in nanoseconds while another could take a couple of minutes to verify. Apr 19, 2020 at 16:19
  • I could edit the question once more and just make assumption of P2PKH. I understand that any answer would be an estimate anyway Apr 26, 2020 at 9:00

1 Answer 1

7

As others have pointed out, this largely depends on what kind of transaction you're verifying. More inputs and more signatures means longer verification, and for pre-SegWit inputs the computational effort actually grows quadratically (see this answer).

However, we can get a helpful estimate by measuring how long it takes to verify the entire Bitcoin blockchain, and divide the total number of transactions by that. The first part has already been done for us by Jameson Lopp in his article Bitcoin Core Performance Evolution.

For his testing, Lopp changes a few configuration parameters:

  • assumevalid=0: This removes the performance optimization of skipping verifications of old signatures.
  • disablewallet=1: This avoids any wallet related data processing.
  • He also uses the connect parameter to connect to a single local peer, which removes the unpredictability of public nodes.

As a result, his node is essentially bottlenecked by how fast it can verify transactions, so that should make it a good estimate on transaction verification speed.

These are the hardware specifications of his benchmark PC from 2018:

  • Core i7 8700 3.2GHz 6 core CPU
  • 32 GB DDR4-2666
  • Samsung 960 EVO 1TB M.2 SSD

Bitcoin Core 23.0, the latest version as of now, took 387 minutes to reach block 720,000. The total number of transactions up to that block is 704,935,293. On average, then, it verified about 30,359 transactions per second.

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.