Saltar al contenido
buybitcoinsmart

Glosario / Direcciones y claves

Billetera HD

También se conoce como Billetera determinista jerárquica o BIP32.

¿Qué es una billetera HD?
Una billetera HD genera todas las claves que llegará a necesitar a partir de una sola semilla aleatoria, ordenadas en el árbol de padres e hijos que BIP-32 especificó en 2012.

Se especifica en el BIP-32.

Una semilla produce una clave maestra, la clave maestra produce ramas y las ramas producen cada dirección que usted usa. BIP-32 se asignó el 11 de febrero de 2012, y prácticamente todas las billeteras de hardware, móviles y de escritorio que se distribuyen hoy lo siguen. Por eso doce palabras en una tarjeta pueden restaurar una billetera que usted lleva una década usando.

Cómo funciona

Una billetera HD convierte un número en una jerarquía mediante un hash con clave, ejecutado una y otra vez. La semilla entra en HMAC-SHA512 con la cadena de caracteres fija "Bitcoin seed" como clave y se obtienen 64 bytes: los 32 de la izquierda se convierten en la clave privada maestra y los 32 de la derecha, en el código de cadena maestro. Esos dos valores son la raíz de todo lo que hay por debajo.

Cada paso posterior toma una clave, su código de cadena y un número de índice, calcula su hash del mismo modo y produce una clave hija con su propio código de cadena. Cada nodo del árbol tiene 4.294.967.296 hijos posibles, divididos en dos mitades: los índices inferiores a 2.147.483.648 son normales y pueden calcularse solo desde el lado público, mientras que los índices iguales o superiores a esa línea son endurecidos y requieren la clave privada. Repetir el paso construye un árbol, y una posición en ese árbol se escribe como una ruta de derivación.

El determinismo es lo que hace que el diseño merezca la pena. La misma semilla, entregada a cualquier implementación correcta, produce exactamente las mismas claves en el mismo orden, para siempre. Ninguna clave se almacena nunca, solo se vuelve a calcular, y por eso el respaldo es una frase y no un archivo que crece cada vez que a usted le pagan.

Las palabras son una capa aparte, y confundir las dos capas causa la mayoría de los problemas de recuperación. BIP-39 define cómo una frase extraída de una lista de 2.048 palabras se convierte en la semilla, estirándola mediante PBKDF2 con HMAC-SHA512 durante 2.048 iteraciones, con la cadena de caracteres "mnemonic" más una frase de contraseña opcional como sal. BIP-32 no sabe nada de palabras y BIP-39 no sabe nada de árboles. Los une una convención, y así es como dos billeteras pueden coincidir en su frase y aun así discrepar sobre sus direcciones.

Bitcoin Core solo ha creado billeteras deterministas jerárquicas desde la versión 0.16.0. Antes, una billetera guardaba una reserva de claves aleatorias sin relación entre sí, y un respaldo quedaba obsoleto en cuanto la reserva avanzaba más allá de él.

Por qué importa cuando compra bitcoin

La frase que usted anota al configurar la billetera es lo único que se interpone entre usted y cada moneda que llegue a comprar, y la estructura de árbol es lo que hace cierta esa afirmación.

Respalde una vez y el respaldo seguirá completo. Cien retiros de un exchange a cien direcciones nuevas descienden todos de una misma raíz, así que nada de lo que haga después amplía lo que tiene que proteger. Es la mayor mejora práctica en la custodia de bitcoin desde que salió el primer cliente, y es igualmente la razón por la que una frase semilla fotografiada una vez queda comprometida para siempre: la fotografía abarca monedas que usted todavía no ha comprado.

La portabilidad es la segunda ventaja, y trae una trampa. Una frase anotada en un Trezor o un Ledger se restaura en Sparrow, Electrum o BlueWallet porque todos implementan el mismo estándar. La trampa está en la ruta. BIP-44 produce direcciones que empiezan por 1; BIP-49, por 3; BIP-84, por bc1q; y BIP-86, por bc1p, todas a partir de palabras idénticas. Si restaura en un software que usa por defecto un propósito distinto, el saldo marca cero mientras las monedas siguen intactas en otra rama. Anotar la ruta de derivación junto al respaldo, y nada más junto a él, evita ese pánico concreto.

El límite de brecha (gap limit) es lo tercero que conviene saber. Una billetera restaurada escanea hacia delante a lo largo de 20 direcciones sin usar según BIP-44 y luego deja de buscar. Pulsar un botón de recibir cuarenta veces en una billetera que nunca respaldó y luego usar la última dirección es una forma fiable de producir una restauración que muestra un saldo vacío.

Leer m/84'/0'/0'/0/0 nivel por nivel

Una ruta de derivación funciona como una dirección postal, que se va acotando en cada nivel. Lea de izquierda a derecha la ruta estándar de SegWit nativo.

  • m es la clave maestra derivada de su semilla.
  • 84' selecciona el propósito BIP-84, que produce direcciones SegWit nativas que empiezan por bc1q. El apóstrofo marca el nivel como endurecido.
  • 0' es el tipo de moneda, y 0 significa la mainnet de bitcoin. La testnet sería 1'.
  • 0' es la cuenta, así que una cuenta separada para una empresa sería 1'.
  • 0 es la cadena: 0 para las direcciones que usted entrega, 1 para el cambio.
  • 0 es el índice de dirección, que aumenta con cada pago recibido.

Los tres primeros niveles son endurecidos y los dos últimos no, de forma deliberada. Esa separación es lo que permite exportar una clave pública extendida de nivel de cuenta a una billetera de solo lectura, que puede entonces generar direcciones de recepción y de cambio sin poder llegar nunca a una cuenta hermana ni volver a subir hacia la clave maestra.

Billetera HD frente a frase semilla

Una billetera HD es un esquema de derivación; una frase semilla es una forma de anotar el número del que parte. BIP-32 define el árbol y acepta cualquier semilla de 128 a 512 bits, y recomienda 256. BIP-39 define las palabras. Electrum distribuye su propio formato de frase incompatible y aun así es una billetera completamente determinista jerárquica, lo que demuestra que las dos capas son realmente independientes. La distinción importa cuando un software afirma admitir la recuperación BIP-39: es una promesa sobre leer sus palabras, no sobre en qué rama buscará después.

Billetera HD frente a ruta de derivación

Una billetera HD es el árbol; una ruta de derivación es una ruta que lo atraviesa. La gente describe una billetera como "una billetera BIP-84" como si fuera una categoría de producto, pero cualquier billetera BIP-32 puede recorrer cualquier ruta, y la mayoría del software actual mostrará sin problemas varias cuentas con propósitos distintos a partir de una sola semilla. Trate la ruta como una coordenada que anota junto al respaldo, no como una propiedad de la aplicación que casualmente haya instalado.

No confundir con

Preguntas frecuentes

¿Necesito respaldar cada dirección que crea mi billetera HD?

No. Cada dirección procede de la misma semilla mediante un cálculo fijo, así que la frase semilla ya abarca las direcciones que aún no ha usado. Anote la ruta de derivación junto con la frase y el respaldo estará completo.

Restauré mi semilla y el saldo es cero. ¿Qué salió mal?

Casi siempre, la ruta de derivación o el límite de brecha. Las mismas palabras producen direcciones distintas según BIP-44, BIP-49, BIP-84 y BIP-86, y una billetera restaurada deja de escanear tras 20 direcciones sin usar. Pruebe los otros propósitos y aumente el límite de brecha antes de dar nada por perdido.

¿Es una billetera HD menos segura que generar las claves de una en una?

No, y suele ser más segura. Cada clave sigue procediendo de 128 a 256 bits de entropía, y un solo respaldo elimina el fallo más común, que es un respaldo obsoleto que no contiene una clave que usted usó después.

¿Pueden dos aplicaciones de billetera compartir la misma billetera HD?

Sí. Importe la misma frase en ambas y configure la misma ruta de derivación, y derivarán direcciones idénticas y verán saldos idénticos. Firmar desde las dos a la vez puede producir transacciones en conflicto, así que trate una como la principal.

Para seguir leyendo

Términos relacionados

Más en la sección Direcciones y claves

Leer esta página en inglés