Una billetera de software utiliza un número aleatorio para generar una clave privada maestra.
Luego, a través de un algoritmo determinista e irreversible, puede derivar un número ilimitado de claves privadas secundarias de esa clave privada maestra.
¿Por qué necesitamos un algoritmo determinista e irreversible?
Porque determinista significa que todas las claves privadas secundarias siempre se pueden generar a partir de la misma clave privada maestra, mientras que irreversible significa que la clave privada maestra no se puede reconstruir a partir de ninguna clave privada secundaria.
Es por eso que se llama billetera determinista jerárquica (HD). La estructura de derivación de claves privadas se asemeja a un árbol: una clave principal puede derivar múltiples claves secundarias, cada clave secundaria puede derivar múltiples claves secundarias y este proceso puede continuar indefinidamente.
Cuando se crea por primera vez una billetera HD, o cuando se realiza una copia de seguridad de una billetera, se genera una frase mnemotécnica. Una frase mnemotécnica es una secuencia de palabras en inglés. Esta secuencia se usa para generar la semilla, y luego la semilla se usa para generar todas las claves privadas en la billetera. En otras palabras, la frase mnemotécnica sirve como respaldo de la billetera, porque puede usarse para restaurar la billetera. La semilla, a su vez, corresponde al número aleatorio original detrás de la billetera determinista.
Una ventaja importante de una billetera HD es que solo se requiere la clave pública maestra para generar cualquier cantidad de claves públicas secundarias. En otras palabras, se pueden crear nuevas direcciones públicas a partir de la clave pública maestra sin requerir acceso a las claves privadas, ya sea la clave privada maestra o las claves privadas secundarias. Sin embargo, todas estas direcciones generadas aún pueden controlarse en última instancia mediante la clave privada maestra.
Por supuesto, este diseño también conlleva riesgos. Si se expone la frase mnemotécnica, es esencialmente equivalente a exponer todas las claves privadas. Una vez que eso sucede, la seguridad de los activos digitales en la billetera se pierde efectivamente.
¿Por qué se necesitan tantas claves privadas?
La razón por la que los usuarios necesitan tantas claves privadas se puede entender a través del mecanismo de cambio en las transacciones de Bitcoin.
Una transacción de Bitcoin es una estructura de datos que contiene entradas y salidas. También incluye la información de secuencias de comandos necesaria que transfiere valor desde su origen (la entrada) a su destino (la salida).
Para comprender las entradas y salidas de Bitcoin, es importante conocer el concepto de UTXO (Salida de transacciones no gastadas). Un UTXO es la unidad básica de una transacción de Bitcoin y representa un resultado de transacción no gastado. En realidad, un solo bitcoin se distribuye en muchas transacciones y muchos bloques en forma de UTXO. En realidad, no existe un registro centralizado que almacene un saldo de cuenta simple; en cambio, solo hay UTXO descentralizados bloqueados para sus respectivos propietarios.
Un UTXO puede representar cualquier cantidad de valor, pero una vez creado, es indivisible de la misma manera que una moneda física no se puede dividir por la mitad. Si el valor de un UTXO es mayor que la cantidad necesaria para una transacción, aún se debe gastar todo el UTXO y el exceso se devolverá como cambio.
Por ejemplo, imagina que tienes un UTXO que vale 20 unidades y quieres pagar 1 unidad. La transacción debe consumir el UTXO completo de 20 unidades y crear dos salidas: una salida envía 1 unidad al destinatario, mientras que la otra envía 19 unidades a su billetera como cambio. En este sentido, la mayoría de las transacciones de Bitcoin generan cambios.
Esto lleva a otra pregunta: ¿debería enviarse el cambio a la dirección original o a una dirección recién generada?
Cuando Satoshi Nakamoto diseñó Bitcoin, se utilizó un mecanismo de cambio de dirección, lo que significa que a menudo se crea una nueva dirección para recibir el cambio de cada transacción. El beneficio de este diseño es que ayuda a proteger la privacidad del usuario y reduce ciertos riesgos de seguridad.
En la vida real, esto se puede comparar con abrir varias cuentas bancarias con diferentes nombres e identidades en diferentes bancos. Incluso si alguien puede observar el flujo de dinero en cada cuenta, le resultará mucho más difícil rastrear todo hasta el verdadero propietario de los activos digitales. Esto es parte de lo que le da a Bitcoin su relativo anonimato.
Es por eso que los usuarios de billeteras necesitan tantas claves privadas. Dado que las claves públicas y privadas siempre existen en pares, y cada transacción puede generar una nueva dirección de cambio, almacenar y realizar copias de seguridad de las claves privadas correspondientes a todas estas direcciones se convertiría en un desafío técnico importante. La billetera HD resuelve este problema al permitir que una única raíz genere cualquier cantidad de claves públicas secundarias y claves privadas secundarias, lo que mejora en gran medida la usabilidad de las billeteras digitales.
