Actualmente estoy leyendo el código fuente de Electrum para averiguar cómo pasar de la semilla (12 palabras) a las direcciones (en el formato habitual). ¿Alguien tiene en mente el panorama general de este proceso?
Más precisamente, estoy buscando código Python (independiente, ejecutable desde Electrum) que pueda producir esto.
Tome una semilla s
(pueden ser 12 palabras del diccionario de 2048 palabras pero no es necesario)
Supongamos que s
es una semilla válida (es decir , is_new_seed(s)
es True
, esto significa que bh2u(hmac_sha_512(b"Seed version", s.encode('utf8')))
tiene el prefijo '01'
); código para is_new_seed aquí.
Para nuestro objetivo (obtener direcciones), ¿deberíamos crear primero la clave privada a partir de s
? ¿Cómo?
o
¿Deberíamos crear una clave pública maestra a partir de s
? ¿Cómo?
Dado 3. o 4., ¿cómo crear las 20 primeras direcciones públicas?
Ejemplo de entrada: s = 'x8'
(sí, esta es una semilla válida (no segura porque es demasiado simple), puede probarla en Electrum: cree una billetera a partir de una semilla existente )
Ejemplo de salida:
1LNvv5h6QHoYv1nJcqrp13T2TBkD2sUGn1
1P6rnf6VUfSUUWES6wTyjfx9dTFqXdrjLM
1AQ6TNtD2eEdQjwpVpkPSdcvJiiLKziKZz
...
Electrum usa BIP 32 para pasar de un valor inicial a claves privadas y públicas. Luego, las direcciones se derivan de esas claves. Las claves públicas también se derivan de las claves privadas, excepto en el caso de las billeteras de solo reloj.
La especificación completa de BIP 32 está disponible aquí .
fredsbend
bajo
fredsbend