4

Assuming:

  • An average modern computer
  • Using a single thread, as the current Satoshi client does
  • Using the OpenSSL library, as the Satoshi Bitcoin client does
  • The signature is not in the signature cache

I speculate that the time may be between 1 and 10 msec.

4

It depends a lot on the hardware, and on the architecture. OpenSSL use some assembly-optimized routines, which result in a speed factor of +- x2 between 32 bit and 64 bit (the latter is faster). That said, I've seen verifications taking around 0.47 ms on an Intel Xeon E5-1650 @ 3.20GHz, using 64-bit code.

Also, version 0.8 will actually do signature verification in parallel. There is also a patch with an optimized ECDSA verifier for the specific curve we're using, which should give a 20% speedup (discovered by Hal Finney). This patch will probably not make it into v0.8, though.

4

I instrumented the Satoshi client to see hwo long a transaction verification takes. This includes the signature verification, but is probably more of an upper bound as it also includes several disk seeks.

Transaction verification time

4500 Transactions. With the following percentiles:

  • 50 percentile 5.0
  • 75 percentile 10.0
  • 85 percentile 15.0
  • 95 percentile 36.0
  • 99 percentile 207.27

While not at all representative it would point towards your estimate being correct.

Note: this was taken on a Lenovo T420 with spinning disks.

  • Just testing the digital signature verification using the OpenSSL code on a single core of a Core 2 Q9550, I get 725 microseconds per verification, a shade under 1 millisecond. This may be a bit unrealistic because all the ECDSA code is hot in the cache and the branch prediction is primed. (Test was doing verifications in a tight loop.) – David Schwartz Jan 31 '13 at 21:21
  • 2
    The 0.8 code (unreleased currently) has a -benchmark function which measures block connection and signature verifications. You are certainly not just measuring signature validation. – Pieter Wuille Jan 31 '13 at 22:23
  • Yep, I needed the benchmark for something else, where the whole processing time of transactions was more relevant. – cdecker Feb 1 '13 at 8:56

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.