EC Private Key Example - secp256k1

This section describes the elliptic curve, E(0,7), also named as secp256k1, and the subgroup parameters, which are used in Bitcoin, Ethereum, and many other cryptocurrency apps.

Now let's look at a good example of using EC (Elliptic Curve) private and public key pairs in real software applications as mentioned in "What is the math behind elliptic curve cryptography?" by Hans Knutson at hackernoon.com/what-is-the-math-behind-elliptic-curve-cryptography-f61b25253da3.

Bitcoin, Ethereum, and many other cryptocurrency apps use an elliptic curve called secp256k1:

```Named elliptic curve: secp256k1
y2 = x3 + 7
```

The diagram below shows the elliptic curve, secp256k1, in the real number space:

Bitcoin, Ethereum, and many other cryptocurrency apps actually use the subgroup defined by the following parameters in hexadecimal format. See "Elliptic Curve Cryptography: ECDH and ECDSA" by Andrea Corbellini at andrea.corbellini.name/2015/05/30/elliptic-curve-cryptography-ecdh-and-ecdsa/.

```p =  0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
a =    0
b =    7
G = (0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,
n =  0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
h =    1
```

Andrea Corbellini also shared Python script, ecdhe.py, to generate a private and public key pair for Alice:

```herong> python ecdhe.py

Curve: secp256k1
Alice's private key:
0xc2cdf0a8b0a83b35ace53f097b5e6e6a0a1f2d40535eff1cf434f52a43d59d8f
Alice's public key:
(0x6fcc37ea5e9e09fec6c83e5fbd7a745e3eee81d16ebd861c9e66f55518c19798,
0x4e9f113c07f875691df8afc1029496fc4cb9509b39dcd38f251a83359cc8b4f7)
```

By the way, the named curve, secp256k1, refers to the elliptic curve, E(0,7), and those subgroup parameters together as EC domain parameters.