Algoritmo para pasar de semilla a 20 (o más) direcciones

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.

  1. Tome una semilla s(pueden ser 12 palabras del diccionario de 2048 palabras pero no es necesario)

  2. Supongamos que ses 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í.

  3. Para nuestro objetivo (obtener direcciones), ¿deberíamos crear primero la clave privada a partir de s? ¿Cómo?

o

  1. ¿Deberíamos crear una clave pública maestra a partir de s? ¿Cómo?

  2. 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
...
¿Quieres decir así, pero Python? bitcoin.stackexchange.com/questions/63715/…
No exactamente @fredsben, la salida debe ser direcciones (públicas), no claves privadas. ¿O tal vez estas direcciones se pueden deducir fácilmente de las claves pvt?
Creo que esa herramienta muestra claves privadas, claves públicas y direcciones. Las claves privadas se generan a partir de la semilla. Las claves públicas se generan a partir de las claves privadas. Las direcciones se generan a partir de las claves públicas. Entonces sí, las direcciones se pueden deducir de las claves privadas.

Respuestas (1)

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í .