Made changes to ch04.asciidoc

pull/161/head
myarbrough@oreilly.com 10 years ago
parent 2edb6c690a
commit 4a5d549ee2

@ -107,6 +107,10 @@ $ sx newkey
<<ecc-curve>> is an example of an elliptic curve, similar to that used by bitcoin.
[[ecc-curve]]
.An elliptic curve
image::images/msbt_0402.png["ecc-curve"]
Bitcoin uses a specific elliptic curve and set of mathematical constants, as defined in a standard called((("secp256k1 curve standard"))) +secp256k1+, established by the((("National Institute of Standards and Technology (NIST)"))) National Institute of Standards and Technology (NIST). The +secp256k1+ curve is defined by the following function, which produces an elliptic curve:
[latexmath]
@ -125,10 +129,6 @@ or
\end{equation}
++++
[[ecc-curve]]
.An elliptic curve
image::images/msbt_0402.png["ecc-curve"]
The _mod p_ (modulo prime number p) indicates that this curve is over a finite field of prime order _p_, also written as latexmath:[\(\mathbb{F}_p\)], where p = 2^256^ 2^32^ 2^9^ 2^8^ 2^7^ 2^6^ 2^4^ 1, a very large prime number.
Because this curve is defined over a finite field of prime order instead of over the real numbers, it looks like a pattern of dots scattered in two dimensions, which makes it difficult to visualize. However, the math is identical as that of an elliptic curve over the real numbers. As an example, <<ecc-over-F17-math>> shows the same elliptic curve over a much smaller finite field of prime order 17, showing a pattern of dots on a grid. The +secp256k1+ bitcoin elliptic curve can be thought of as a much more complex pattern of dots on a unfathomably large grid.
@ -214,15 +214,15 @@ To visualize multiplication of a point with an integer, we will use the simpler
<<ecc_illustrated>> shows the process for deriving G, 2G, 4G, as a geometric operation on the curve.
[[ecc_illustrated]]
.Elliptic curve cryptography: Visualizing the multiplication of a point G by an integer k on an elliptic curve
image::images/msbt_0404.png["ecc_illustrated"]
[TIP]
====
Most bitcoin implementations use the((("OpenSSL cryptographic library"))) http://bit.ly/1ql7bn8[OpenSSL cryptographic library] to do the elliptic curve math. For example, to derive the public key, the function +EC_POINT_mul()+ is used.(((range="endofrange", startref="ix_ch04-asciidoc7")))(((range="endofrange", startref="ix_ch04-asciidoc6")))(((range="endofrange", startref="ix_ch04-asciidoc0")))
====
[[ecc_illustrated]]
.Elliptic curve cryptography: Visualizing the multiplication of a point G by an integer k on an elliptic curve
image::images/msbt_0404.png["ecc_illustrated"]
=== Bitcoin Addresses
((("addresses, bitcoin", id="ix_ch04-asciidoc8", range="startofrange")))((("addresses, bitcoin","generally", id="ix_ch04-asciidoc9", range="startofrange")))A bitcoin address is a string of digits and characters that can be shared with anyone who wants to send you money. Addresses produced from public keys consist of a string of numbers and letters, beginning with the digit "1". Here's an example of a bitcoin address:

Loading…
Cancel
Save