9
2
I understand that Schnorr signatures provide an improvement on ECDSA in that they are a fixed 64 bytes instead of the longer ECDSA sig format, however, I don't see how this is an advantage over ECDSA in any situation except multisig.
With ECDSA, transactions can be signed & verified without needing to include the signer's pubkey in the message. However Schnorr (as described in the recent BIP) doesn't have that advantage, which means that for any transaction not from a multisig address, the necessary space to store all data necessary for verification would be 26 bytes cheaper under ECDSA (assuming a 64 byte Schnorr sig with a 33 byte compressed pubkey vs a ~71 byte ECDSA sig without a pubkey).
With regards to that, why is Schnorr receiving such focus? Do multisig transactions make up enough of Bitcoin's load that Schnorr would be that significant? And why has there been little to no focus on implementing transactions without storing pubkeys (which ethereum has been doing all along)?
@PieterWuille Do you happen to know how fast is Schnorr vs ECDSA in terms of verifications per second? Albert Casademont says (https://blog.cloudflare.com/ecdsa-the-digital-signature-algorithm-of-a-better-internet/#comment-1279759097) that: rsa 2048 bits 34423.4 verify/s and 256 bit ecdsa (nistp256) 4500.6 verify/s. What can we expect from Schnorr here (roughly)?
– Martin Vseticka – 2019-06-05T13:38:09.0971@Martin Single (non batch) Schnorr verification is very close in performance to ECDSA. On reasonably recent hardware libsecp256k1 can verify over 10000 sigs/s. – Pieter Wuille – 2019-06-05T14:32:49.300
Could you explain what linearity means in the context of ECDSA? – Lev Knoblock – 2018-07-16T15:39:14.853
2ECDSA is not linear. Schnorr is: the signature verification equation is sG = R + H(R,P,m)P. Two people can come up with their own R1 and R2, and if they then produce signatures s1 and s2 that satisfy the equation s1G = R1 + H(R1+R2,P,m)P1, and then add up s = s1 + s2, the result satisfies sG = R + H(R,P,M)(P1+P2); i.e. it's a valid signature for the sum of the keys. Such a construction is only possible due to the equation being linear in all signer variables: s = k + H(R,P,m)x (with k = nonce, x = private key). For ECDSA it is sk = m + rx. The multiplication s*k breaks linearity. – Pieter Wuille – 2018-07-16T17:25:16.683