diff --git a/schnorr.asciidoc b/schnorr.asciidoc index 06433738..ed74efa6 100644 --- a/schnorr.asciidoc +++ b/schnorr.asciidoc @@ -29,13 +29,17 @@ In Bitcoin, Schnorr signatures are applied to the secp256k1 elliptic curve. This The BIP-340 document contains more than simply the final implementation of Bitcoin's Schnorr signatures: it describes the various design decisions and the rationale for the choices that were made. While we won't repeat those explanations here, we urge you to read BIP-340 for yourself, so that you may better understand the process and reasoning behind the specification. -Illustration footnote:[The Schnorr signature illustration is sourced from Stepan Snigirev's article "How Schnorr Signatures May Improve Bitcoin" (https://medium.com/cryptoadvance/how-schnorr-signatures-may-improve-bitcoin-91655bcb4744)] - [[schnorr_sigs_illustrated]] +==== Schnorr signatures illustrated + +One of the best ways to understand Schnorr signatures, is to visualize the signing and verification steps. In <> below you can see the Schnorr signature algorithm, visualized. The black curved line represents the +secp256k1+ elliptic curve, Bitcoin's default curve for key operations. The curve has a static, pre-defined starting point, called the _generator point_, shown on the curve as point +G+. Public keys are derived by scalar multiplication of a private key and the generator point. For example, the public key of the transaction signer +P+ is computed by the multiplication of their private key +pk+ with the generator point. You can see this operation highlighted as a red arrow "from" point +G+ to point +P+, with the formula +P = pk x G+ above the red arrow. + + +[[schnorr_sigs_illustrated_diag]] .Schnorr signatures illustrated image::images/schnorr_signatures.png["Schnorr signatures illustrated"] - +footnote:[The Schnorr signature illustration is sourced from Stepan Snigirev's article "How Schnorr Signatures May Improve Bitcoin" (https://medium.com/cryptoadvance/how-schnorr-signatures-may-improve-bitcoin-91655bcb4744)] ==== Creting a Schnorr signature The first part of a signature scheme is the formula used to create the digital signature, which is shown in <>: