Blockchain/Nivel IV · El protocolo a fondo/4.3 Custodia y privacidad/Lección 1
Monederos HD (BIP32, BIP44, BIP84, BIP86)
Derivar un árbol de claves a partir de una semilla
MaterialesUna billetera en modo de prueba (testnet o signet), nunca una semilla realUna billetera o herramienta HD que muestre rutas de derivaciónUn cuaderno
Curiosidad
- ¿Cómo puede una sola semilla generar un número efectivamente ilimitado de claves privadas únicas y recuperables?
- ¿Por qué puede una sola clave privada hija filtrada, junto con la clave pública extendida del padre, exponer todas las claves de una rama no endurecida?
- ¿Qué diferencia estructural separa una dirección P2PKH tradicional de una dirección nativa SegWit o Taproot en términos de eficiencia en las comisiones?
Explorar
- Antes de BIP32, introducido por Pieter Wuille en 2012, las billeteras generaban pares de claves aleatorias para cada nueva dirección. Hacer una copia de seguridad de la billetera significaba almacenar cada clave privada individualmente; perder un archivo de respaldo hacía que esos fondos específicos fueran irrecuperables. BIP32 cambió este modelo al derivar un árbol determinista de claves a partir de una única semilla maestra. Ahora, todo el historial financiero está anclado en esa sola semilla, que suele crearse a partir de 128 o 256 bits de entropía y se escribe como 12 o 24 palabras.
- La ruta de derivación sigue la estructura definida en BIP44 (2014): `m / purpose' / coin_type' / account' / change / index`. El apóstrofo denota una derivación endurecida. Este es un mecanismo de seguridad crítico. En la derivación no endurecida, si un atacante obtiene tanto la clave pública extendida del padre (xpub) como cualquier clave privada hija, puede calcular matemáticamente la clave privada del padre. La derivación endurecida rompe este vínculo; una clave privada hija filtrada, combinada con el xpub, no revela nada sobre el secreto del padre.
- BIP44 estandarizó los tres primeros niveles para permitir el soporte de múltiples monedas dentro de una misma jerarquía. El nivel `purpose'` identifica la norma (por ejemplo, 44 para BIP44, 84 para BIP84). El nivel `coin_type'` distingue los activos; Bitcoin tiene como índice 0. Esto permite que una semilla gestione diferentes criptomonedas sin mezclar sus claves. El nivel `account'` organiza los fondos en cuentas separadas, cada una con su propia cadena de cambio. Las claves públicas extendidas (xpubs) se derivan típicamente a esta profundidad.
- BIP84 actualizó el estándar para las direcciones nativas SegWit que comienzan con `bc1q`. Establece el propósito como 84. Estas direcciones son más eficientes que los formatos heredados, ya que sus datos de testigo se descuentan en el cálculo del peso de la transacción, reduciendo las tarifas. La ruta de derivación es `m / 84' / 0' / account' / change / index`. Por ejemplo, la primera dirección externa de la Cuenta 0 se deriva en `m/84'/0'/0'/0/0`. Esta estructura permite a los servidores generar direcciones de recepción a partir de un xpub sin tener que tocar nunca una clave privada.
- BIP86, un estándar de derivación independiente escrito por Ava Chow en 2021 para Taproot, establece el propósito como 86 y deriva direcciones Taproot de una sola clave que comienzan con `bc1p`. BIP86 abarca salidas Taproot de una sola clave sin árbol de scripts. Dado que una ruta de clave Taproot también puede contener una clave agregada, como una clave MuSig2, las salidas de una billetera multiparte pueden parecerse exactamente a estas de una sola clave en la cadena.
- Las billeteras escanean hacia adelante para detectar direcciones ya utilizadas, deteniéndose típicamente después de un “límite de intervalo” (gap limit) de 20 direcciones consecutivas no utilizadas en una cadena. Si no se encuentran transacciones en ese rango, la billetera asume que ha descubierto todas las claves existentes para esa cuenta. Para verificar este mecanismo, abra cualquier billetera HD moderna y localice sus configuraciones de ruta de derivación. Identifique cada nivel: propósito (purpose), tipo de moneda (coin type), cuenta (account), cambio (change) e índice (index). Derive dos rutas diferentes a partir de la misma semilla para confirmar que generan claves distintas, al tiempo que siguen siendo completamente recuperables a partir del mnemónico original.
Datos clave
- BIP32 deriva un árbol determinista de claves hijas a partir de una única semilla maestra.
- La derivación endurecida (marcada con `'`) evita la fuga de la clave padre si se comprometen una clave privada hija y un xpub.
- La estructura de rutas BIP44 es `m / purpose' / coin_type' / account' / change / index`.
- El propósito 84 corresponde a las direcciones nativas SegWit (`bc1q`), que son más eficientes en cuanto a tarifas que los formatos heredados.
- El propósito 86 corresponde a las direcciones Taproot de una sola clave (`bc1p`).
- Las billeteras suelen dejar de escanear después de 20 direcciones consecutivas sin usar (el límite de intervalo).
Ejercicio nueve, seis, tres, uno
9ReunirEnumera 9 rutas de derivación desde diferentes billeteras o estándares. Indica el propósito, el tipo de moneda y el formato de la dirección para cada una.
6AgruparAgrupa los 9 en 6 categorías según su tipo de script: P2PKH heredado, SegWit anidado, SegWit nativo, Taproot, multimoneda u otro.
3DestilarReduce las 6 razones a 3 por las cuales un desarrollador de billeteras elegiría una ruta de derivación sobre otra.
1CristalizarEscribe una oración que explique cómo la derivación endurecida protege a la clave maestra de ser expuesta a través de las claves hijas.
Verificación de hechos
Fechas, cifras y afirmaciones verificadas con las fuentes publicadas que se enumeran a continuación.
- P. Wuille, BIP32: Hierarchical Deterministic Wallets (2012)
- M. Palatinus & P. Rusnak, BIP44: Multi-Account Hierarchy for Deterministic Wallets (2014)
- P. Rusnak, BIP84: Derivation scheme for P2WPKH based accounts (2017)
- A. Chow, BIP86: Key Derivation for Single Key P2TR Outputs (2021)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 5