8
1
Just given all the news about this topic lately (Android security flaw), I'm curious about WHERE and WHY the random number is used during the signing of a transaction.
I always thought a transaction was signed by just hashing the prev_out** and then encrypting that hash with the private key, so when it is published along side the public key it can be verified by other nodes.
**(maybe I need more clarity here too: is the ENTIRE previous transaction hashed at this point, or just one the input being used in the prev_out?)
Huh been long enough for this answer to change! Follow-up: If the R value is now deterministic, does that actually save space in the transaction? Or is there something else in its place? – pinhead – 2018-09-12T16:37:44.617
@pinhead It does not have any advantages other than preventing signing the same thing and creating different signatures. Optionally, there are ways to force the length of the signatures to be lower than 72 while keeping the process deterministic: https://github.com/bitcoin/bitcoin/pull/13666
– MCCCS – 2018-09-12T16:58:28.953Just because k (and by effect R) is computed by a deterministic process doesn't mean it's predictable by anyone else, if it were it would be insecure. – G. Maxwell – 2018-09-12T17:03:47.870