Glosario / Direcciones y claves
Ruta de derivación
- ¿Qué es una ruta de derivación?
- Una ruta de derivación es la ruta por el árbol de claves de una billetera HD, escrita como m/84h/0h/0h/0/0, que indica al software exactamente qué clave, entre miles de millones, reconstruir desde su semilla.
Se especifica en el BIP-44.
Una ruta es una coordenada, no un secreto. Dos números cerca del principio deciden si sus palabras reconstruyen direcciones que empiezan por 1, 3, bc1q o bc1p, porque BIP-44, BIP-49, BIP-84 y BIP-86 leen cada uno la misma frase de manera distinta. Anotar la ruta junto a su respaldo marca la diferencia entre una restauración que encuentra sus monedas y otra que muestra cero.
Cómo funciona
Una ruta se lee de izquierda a derecha, un nivel por cada barra, y cada nivel acota la búsqueda. La m del principio es la clave maestra generada a partir de su semilla. Todo lo que va después es un índice, y un apóstrofo o una h marca ese índice como endurecido.
El primer nivel es el propósito, y es el nivel que decide qué aspecto tienen sus direcciones.
| Estándar | Ruta de la cuenta | Direcciones que produce |
|---|---|---|
| BIP-44 | m/44h/0h/0h | heredadas (legacy), que empiezan por 1 |
| BIP-49 | m/49h/0h/0h | SegWit anidadas, que empiezan por 3 |
| BIP-84 | m/84h/0h/0h | SegWit nativas, que empiezan por bc1q |
| BIP-86 | m/86h/0h/0h | Taproot, que empiezan por bc1p |
El segundo nivel es el tipo de moneda, tomado del registro SLIP-0044, en el que bitcoin es 0 y toda testnet es 1. El tercero es el número de cuenta, que es lo que permite que una misma semilla contenga una billetera personal en 0h y una billetera de empresa en 1h sin historial compartido. A partir de ahí se acaba el endurecimiento: el cuarto nivel es la cadena, 0 para las direcciones que usted entrega y 1 para el cambio, y el quinto es el índice de dirección, que aumenta a medida que usted recibe pagos.
Esa división entre niveles endurecidos y normales es deliberada. Como el nivel de cuenta está endurecido, la clave pública extendida de m/84h/0h/0h puede exportarse a un teléfono o a un contador, que luego puede derivar todas las direcciones de recepción y de cambio que hay debajo, pero no puede desplazarse lateralmente a otra cuenta ni subir hacia la clave maestra.
El multisig usa su propia rama. BIP-48 coloca las claves de los cofirmantes en m/48h/0h/0h/2h para SegWit nativo, donde el último nivel endurecido indica el tipo de script, así que un dispositivo puede distinguir una cuenta de una sola firma de una cuenta multisig antes de firmar nada.
Por qué importa cuando compra bitcoin
La ruta nunca afecta a su seguridad. No cambia nada de lo difícil que es robar sus monedas, y lo cambia todo respecto a si el software que tiene delante puede encontrarlas.
El fallo que esto provoca es común e invariablemente aterrador. Usted compra en un exchange, retira a un dispositivo, y las monedas llegan a direcciones bc1q bajo m/84h/0h/0h. Un año después restaura las mismas 24 palabras en otra aplicación que usa direcciones heredadas de forma predeterminada, y el saldo marca 0,00000000 mientras un explorador de bloques sigue mostrando su dinero intacto en la dirección antigua. No se perdió nada. La aplicación está buscando en la rama equivocada de un árbol con cuatro mil millones de nodos hijos por nivel.
Los valores predeterminados difieren entre las billeteras reseñadas en este sitio. Trezor Suite y Ledger Live presentan cada una las cuentas por tipo de dirección y eligen en silencio un propósito por usted. Electrum pregunta qué tipo de script quiere al restaurar y esconde un campo de ruta de texto libre detrás de una opción avanzada. Sparrow escanea varias rutas estándar a la vez y le muestra cuál tiene historial. Ninguna de ellas se equivoca, y ninguna puede adivinar lo que hizo la otra.
Dos hábitos eliminan el problema por completo. Anote la ruta de la cuenta y el tipo de dirección en la misma nota que el nombre de la billetera, y guarde esa nota en algún lugar al que pueda acceder sin la semilla, como un gestor de contraseñas, ya que por sí sola no revela nada. Después, antes de confiar en una restauración, compare la primera dirección de recepción que muestra con la que muestra su dispositivo original. Si esas dos cadenas de caracteres coinciden, todas las direcciones que hay debajo también coincidirán.
Restaurar 24 palabras en Electrum y ver cero
Una restauración en la ruta equivocada se desarrolla así. Un Trezor Model T se configuró con 24 palabras, un retiro desde un exchange fue a su primera dirección SegWit nativa y el dispositivo está ahora en un cajón. Meses después, la frase se escribe en Electrum en una computadora portátil.
Electrum pide el tipo de script antes de escanear. Elija el tipo heredado, p2pkh, y Electrum deriva m/44h/0h/0h, muestra direcciones que empiezan por 1, no encuentra nada e indica que la billetera está vacía. Las monedas siguen en la dirección bc1q, siguen confirmadas y siguen siendo visibles para cualquiera que tenga el txid.
La solución lleva un minuto. Restaure de nuevo y elija SegWit nativo, o abra el campo avanzado de derivación e introduzca m/84'/0'/0' a mano. Electrum vuelve a escanear, aparece el saldo y la lista de direcciones empieza por la misma cadena de caracteres que el Trezor muestra en su pestaña de recepción. Si sigue marcando cero y usted sabe que hubo pagos más adelante en la rama, suba el límite de brecha (gap limit) desde el valor predeterminado de 20 antes de dar por hecho que falta algo.
Nada en esa secuencia puso en riesgo las monedas, porque una restauración es una operación de lectura. Puede probar cada propósito por turnos, uno tras otro, y el único costo es el tiempo que tarda cada nuevo escaneo.
Ruta de derivación frente a descriptor de salida
Una ruta dice dónde; un descriptor dice dónde, qué y a partir de qué clave. El descriptor wpkh([fingerprint/84h/0h/0h]xpub/0/*) contiene la misma ruta, más el tipo de script como función envolvente, más la propia clave extendida, más una suma de comprobación que detecta un carácter mal escrito. Darle a alguien una ruta no le dice nada sobre su billetera. Darle un descriptor le entrega todo su historial de direcciones y cada dirección futura de esa rama, y por eso la ruta se puede enviar por correo electrónico sin riesgo y el descriptor no.