Skip to content

Commit 950a01e

Browse files
author
Jonathan Serra
authored
Update README.md
1 parent e298ac2 commit 950a01e

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

README.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Génération d'adresses de Bitcoin
2+
3+
- Comprendre la [cryptographie sur courbe elliptique](https://arstechnica.com/information-technology/2013/10/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/).
4+
- [Modèle Sepc256k1](https://en.bitcoin.it/wiki/Secp256k1)
5+
6+
[Example](https://cdn.rawgit.com/andreacorbellini/ecc/920b29a/interactive/modk-add.html)
7+
8+
## Etape 1
9+
10+
Obtenir un nombre aléatoire sur 256 bits (32 bytes), nommé `k`.
11+
12+
## Etape 2
13+
14+
Obtenir la clé publique tel que Q = kG où `G` est le générateur de Secp256k1 et `k` la clé privée.
15+
16+
La clé publique correspond aux coordonnés (x,y) concaténés et sérialisés en hexadémical pour donner : hex(x).hex(y).
17+
18+
## Etape 3
19+
20+
Hasher la clé publique sérialisée avec SHA256 et hasher le résultat avec Ripemd160.
21+
22+
## Etape 4
23+
24+
Ajouter un byte (network ID) au résultat de l'étape 3 tel que :
25+
- 0x00 pour le mainnet
26+
- 0x6f pour le testnet
27+
28+
## Etape 5
29+
30+
SHA256d sur le résultat de l'étape 4 : double hash. Récupérer les 4 premiers bytes du résultat. Ce sera le `checksum`.
31+
32+
## Etape 6
33+
34+
Ajouter le `checksum` à la fin du résultat de l'étape 4. C'est la proto adresse.
35+
36+
## Etape 7
37+
38+
Encoder la proto adresse avec Base58. C'est l'adresse publique résultante.
39+
40+
# Wallet Import Format
41+
42+
Le Wallet Import Format ou WIF est une méthode simple pour compacter une valeur codée en 256 bits, typiquement la clé privée `k` et la rendre utilisable plus facilement.
43+
44+
Note : il existe plusieurs formats WIP, ici un seul est évoqué et c'est le plus courant.
45+
46+
# Etape 1
47+
48+
Récupérer la clé privée `k`.
49+
50+
# Etape 2
51+
52+
Ajouter un byte (network ID) au début de la clé privée :
53+
- 0x80 pour le mainnet
54+
- 0xef pour le testnet
55+
56+
# Etape 3
57+
58+
Hasher le résultat de l'étape 2 avec SHA256d (double SHA256). Récupérer les 4 premiers bytes, c'est le `checksum`.
59+
60+
# Etape 4
61+
62+
Ajouter le `checksum` à la fin du résultat de l'étape 2.
63+
64+
# Etape 5
65+
66+
Encoder le résultat de l'étape 4 avec Base58.

0 commit comments

Comments
 (0)