¿Cómo funciona la restauración de una billetera HD?

Estaba tratando de aprender a trabajar con bitcoin y tratando de entender el funcionamiento de la billetera bitcoin.

Puedo ver el comportamiento de cómo una billetera HD comienza con una dirección y luego agrega direcciones adicionales para recibir bitcoin.

Leí bip-0032, pero todavía estoy confundido. Si regenero una billetera desde la semilla (en otro teléfono móvil), ¿cómo llenará el sistema la billetera con todas las direcciones anteriores que contienen un saldo? ¿Intentará descargar la cadena de bloques anterior y buscarla, o hay otra forma?

¿Cómo localizamos una lista de todas las direcciones que creamos con la billetera HD? ¿Cómo podemos verificar el saldo de esas direcciones?

Sé que esta pregunta va a recibir votos negativos, por favor denme algunas ideas.

También sería útil si alguien puede compartir algunos enlaces donde podría obtener ayuda para aclarar dudas (no programación, trabajo general).

Respuestas (3)

La derivación semilla funciona aumentando un "nonce" y derivando una dirección de eso. Entonces, por ejemplo, si pretendemos que tenemos 1234 como nuestra semilla, entonces podríamos aumentar esa semilla en 1 para cada derivación de dirección. Si usamos un hash sha256 simple de eso como nuestra clave privada, obtenemos las siguientes direcciones:

NonceFinal SeedAddress
0 12341B3PHXB6g5YGLvzTkxrrPEdLbpvfEoC5Qi
1 12351NxaF9cYPL53fNTHMN6wtmq1w8bmHEe3gp
2 12361DPF9wFiuFowUK4NwJdbd2W9L59bPPnWNM
3 123713ehhpMndUoh5E4QcHJ7QSWwuKC7ySpxrL
4 123817CF5qesU9KXBHAsa9tEz1126kqSDy56tC
5 12391MfTGTiszztzzjzKajvS1Wc3TznqpfyPh7
6 124016t3QqxUVssdTAYUibdY8K4aCFYsP6pUWE

Obviamente, esto está demasiado simplificado y no es la derivación que se usa en la mayoría de las implementaciones de BIP32. En cuanto a cómo se restauran, simplemente sigue derivando direcciones hasta que encuentras un montón seguido que no se usa. Esto se denomina intervalo de búsqueda y normalmente se puede configurar.

No relacionado, pero esa tabla es increíble, no sabía que podías hacer eso en SE.
Esta es una gran respuesta, gracias. Pero para cerrar el ciclo, parece que el protocolo bip44 requiere una búsqueda en la cadena de bloques de la clave pública para los pares de claves generados de manera determinista hasta que se alcanza el umbral de brecha de búsqueda configurado.

Las billeteras en realidad no tienen bitcoins, lo que almacenan son claves públicas y privadas. Este enlace explica los conceptos básicos.

Cualquiera que conozca esta información puede usar los bitcoins almacenados en esa dirección. ¡Ni siquiera necesitas una billetera!

Las billeteras brindan una forma de generar nuevas direcciones para cada transacción y recordar las claves privadas asociadas. También pueden proporcionar funciones para que, si necesita volver a crear la billetera, pueda recrear para usted las mismas direcciones y claves privadas asociadas que tenía antes para que pueda gastar cualquier bitcoin almacenado en una dirección que creó con la billetera.

Esto solo es cierto si considera que una billetera representa solo un saldo único. No es cierto cuando se quiere mantener información contable (tiempo de transacción, de/a quién, mensajes,...), por ejemplo. En algunos entornos, mantener la información contable en realidad puede ser más importante que simplemente mantener el saldo gastable correcto, por razones legales o administrativas.

De ninguna manera soy un experto, pero actualmente estoy leyendo Mastering Bitcoin de Andreas M. Antonopoulos y también tenía esta pregunta. El Capítulo 5 analiza en profundidad cómo funcionan las billeteras HD y cómo pueden restaurar direcciones a partir de una frase inicial y una contraseña/sal. El libro menciona que hay miles de millones de direcciones posibles, pero no cómo su nueva billetera determina cuál de estas direcciones se usó realmente en el pasado.

Esta pregunta me ayudó a aclararme la cabeza: ¿Cómo encontrar el saldo de la billetera?

El software de la billetera generará una cantidad determinada de direcciones y verificará el saldo al inicializar la billetera (¿quizás 50? Esto variará y se puede configurar en algunos programas). La billetera probablemente incluirá alguna lógica como "buscar 50 direcciones más allá de la última dirección utilizada encontrada". Puede diseñar esto para que se ajuste a sus necesidades, por ejemplo, si fuera un comerciante que acepta pagos en un sitio web ocupado, es posible que necesite un límite más alto, en caso de que 50 clientes seguidos generen una dirección de pago pero luego no completen el pago.