diff --git a/ch04_keys.adoc b/ch04_keys.adoc index b831a802..9639df59 100644 --- a/ch04_keys.adoc +++ b/ch04_keys.adoc @@ -88,7 +88,7 @@ signatures. ==== Private Keys A -private ((("public key cryptography", "private keys", "generating", id="pub-key-private-generate")))((("private keys", "generating", id="private-key-generate")))key is simply a number, picked at random. Control +private ((("private keys", "generating", id="private-key-generate")))key is simply a number, picked at random. Control over the private key is the root of user control over all funds associated with the corresponding Bitcoin public key. The private key is used to create signatures that are used to spend bitcoins by proving @@ -152,7 +152,7 @@ bits): ==== The size of Bitcoin's private key space, (2^256^) is an unfathomably large number. It is approximately 10^77^ in decimal. For comparison, the -visible universe is estimated to((("public key cryptography", "private keys", "generating", startref="pub-key-private-generate")))((("private keys", "generating", startref="private-key-generate"))) contain 10^80^ atoms. +visible universe is estimated to((("private keys", "generating", startref="private-key-generate"))) contain 10^80^ atoms. ==== [[elliptic_curve]] @@ -286,7 +286,7 @@ that k is sometimes confusingly called an "exponent" in ((("public key cryptogra [[public_key_derivation]] ==== Public Keys -The ((("public key cryptography", "public keys", "generating", id="pub-key-public-generate")))((("public keys", "generating", id="public-key-generate")))((("elliptic curve multiplication", id="elliptic-multiply")))public key is calculated from +The ((("public keys", "generating", id="public-key-generate")))((("elliptic curve multiplication", id="elliptic-multiply")))public key is calculated from the private key using elliptic curve multiplication, which is irreversible: _K_ = _k_ * _G_, where _k_ is the private key, _G_ is a constant point called the _generator point_, and _K_ is the resulting @@ -373,7 +373,7 @@ geometric operation on the curve. ==== Many Bitcoin implementations use the https://oreil.ly/wD60m[libsecp256k1 crytographic -library] to do the elliptic curve((("public key cryptography", "public keys", "generating", startref="pub-key-public-generate")))((("public keys", "generating", startref="public-key-generate")))((("elliptic curve multiplication", startref="elliptic-multiply"))) math. +library] to do the elliptic curve((("public keys", "generating", startref="public-key-generate")))((("elliptic curve multiplication", startref="elliptic-multiply"))) math. ==== [[ecc_illustrated]] @@ -1423,7 +1423,7 @@ support for new Bitcoin features as soon as they become ((("public key cryptogra [[priv_formats]] ==== Private Key Formats -The ((("private keys", "formats", id="private-key-format")))((("public key cryptography", "private keys", "formats", id="pub-key-private-format")))private key +The ((("private keys", "formats", id="private-key-format")))private key can be represented in a number of different formats, all of which correspond to the same 256-bit number. <> shows several common formats used to represent private keys. Different formats are used in @@ -1517,12 +1517,12 @@ See <> for more information. All of these representations are different ways of showing the same number, the same private key. They look different, but any one format -can easily be converted to any other((("private keys", "formats", startref="private-key-format")))((("public key cryptography", "private keys", "formats", startref="pub-key-private-format"))) format. +can easily be converted to any other((("private keys", "formats", startref="private-key-format"))) format. [[comp_priv]] ==== Compressed Private Keys -The commonly((("private keys", "compressed", id="private-key-compress")))((("public key cryptography", "private keys", "compressed", id="pub-key-private-compress")))((("compressed private keys", id="compress-private-key"))) used term "compressed private key" is a misnomer, because when a private +The commonly((("private keys", "compressed", id="private-key-compress")))((("compressed private keys", id="compress-private-key"))) used term "compressed private key" is a misnomer, because when a private key is exported as WIF-compressed it is actually one byte _longer_ than an "uncompressed" private key. That is because the private key has an added one-byte suffix (shown as 01 in hex in <>), which @@ -1598,7 +1598,7 @@ is modified, with the addition of a one-byte suffix +01+ to the private key. The resulting base58check-encoded private key is called a "compressed WIF" and starts with the letter _K_ or _L_, instead of starting with "5" as is the case with WIF-encoded (uncompressed) keys -from((("private keys", "compressed", startref="private-key-compress")))((("public key cryptography", "private keys", "compressed", startref="pub-key-private-compress")))((("compressed private keys", startref="compress-private-key"))) older wallets. +from((("private keys", "compressed", startref="private-key-compress")))((("compressed private keys", startref="compress-private-key"))) older wallets. === Advanced Keys and Addresses