Saltar al contenido principal

Rutas de Derivación BIP-44: Cómo las Carteras Generan Direcciones

Cuando configuras una cartera de criptomonedas y genera una frase semilla, esa única semilla debe producir miles de direcciones en decenas de blockchains diferentes, cada una con su propia clave privada, clave pública y formato de dirección. BIP-44 define la estructura organizativa que hace esto posible: un árbol jerárquico de claves derivadas de una sola raíz, con una notación de ruta estandarizada que garantiza que las carteras sigan siendo interoperables.

Entender las rutas de derivación es esencial para cualquiera que necesite recuperar fondos en una cartera diferente, gestionar portafolios multimoneda o diagnosticar saldos "faltantes" después de restaurar una frase semilla.

La Jerarquía de Derivación de Claves

BIP-32: La Base

BIP-44 se basa en BIP-32 (Hierarchical Deterministic Wallets), que define un método para derivar un árbol ilimitado de pares de claves a partir de una sola clave maestra. BIP-32 introdujo dos conceptos fundamentales:

Derivación de claves hijas — Desde cualquier clave extendida (una clave privada o pública combinada con un código de cadena), puedes derivar claves hijas en varios índices. Cada hija puede a su vez derivar sus propias hijas, creando un árbol.

Derivación hardened vs. normal — La derivación normal permite derivar claves públicas hijas desde una clave pública padre (útil para carteras solo de lectura). La derivación hardened requiere la clave privada padre y proporciona un aislamiento de seguridad más fuerte entre ramas. Los índices hardened se escriben convencionalmente con apóstrofo (por ejemplo, 44').

BIP-43: Campo Purpose

BIP-43 estableció la convención de usar el primer nivel del árbol de derivación para indicar el "purpose" (propósito), esencialmente el estándar BIP que se está siguiendo. BIP-44 usa purpose 44', BIP-49 usa 49' (para direcciones P2SH compatibles con SegWit), BIP-84 usa 84' (para SegWit nativo) y BIP-86 usa 86' (para Taproot).

BIP-44: La Ruta Completa

BIP-44 define una ruta de derivación de cinco niveles:

m / purpose' / coin_type' / account' / change / address_index

Cada nivel tiene un significado específico:

NivelCampoHardenedDescripción
1PurposeSí (44')Identifica el estándar de derivación
2Coin TypeIdentifica la criptomoneda
3AccountSepara fondos en cuentas lógicas
4ChangeNo (0 o 1)Externa (0) o cambio interno (1)
5Address IndexNo (0, 1, 2...)Número secuencial de dirección

Purpose (44')

El campo purpose siempre es 44' para la derivación estándar BIP-44. Otros valores comunes:

  • 49' — BIP-49 (SegWit envuelto en P2SH)
  • 84' — BIP-84 (SegWit nativo / Bech32)
  • 86' — BIP-86 (Taproot / P2TR)

Estos definen diferentes tipos de dirección y se explican en sus respectivos BIP.

Coin Type

El coin type identifica a qué criptomoneda pertenecen las claves derivadas. Los coin types registrados incluyen:

MonedaCoin TypePrefijo de Ruta
Bitcoin0'm/44'/0'
Bitcoin Testnet1'm/44'/1'
Litecoin2'm/44'/2'
Dogecoin3'm/44'/3'
Ethereum60'm/44'/60'
Ethereum Classic61'm/44'/61'
Cosmos118'm/44'/118'
Solana501'm/44'/501'
Cardano1815'm/44'/1815'
Polkadot354'm/44'/354'

El registro completo de coin types se mantiene en SLIP-44 y contiene más de 1,000 entradas.

Account

El nivel account permite a los usuarios crear cuentas lógicas separadas dentro de la misma cartera, similar a tener múltiples cuentas bancarias. La cuenta 0' es la predeterminada:

  • m/44'/0'/0' — Cuenta Bitcoin 0
  • m/44'/0'/1' — Cuenta Bitcoin 1
  • m/44'/60'/0' — Cuenta Ethereum 0

Las cuentas usan derivación hardened, lo que significa que conocer la clave pública extendida de una cuenta no revela las claves de otra cuenta. Esto proporciona aislamiento de privacidad entre cuentas.

Change

El nivel change distingue entre:

  • 0 (Cadena externa) — Direcciones dadas a otros para recibir pagos.
  • 1 (Cadena interna) — Direcciones usadas internamente por la cartera para devolverte cambio.

En el modelo UTXO de Bitcoin, cuando gastas una salida de transacción, la salida completa debe consumirse. Si envías 0.5 BTC desde una salida de 1 BTC, los 0.5 BTC restantes se envían a una dirección de cambio controlada por tu cartera. La cadena de cambio mantiene estas direcciones separadas de las direcciones de recepción con fines organizativos y de privacidad.

Ethereum y otras blockchains basadas en cuentas no usan la cadena de cambio de la misma forma, ya que no tienen un modelo UTXO. Las carteras de Ethereum normalmente usan solo la cadena externa (change = 0).

Address Index

El address index es el número secuencial de la dirección dentro de una cadena. Las carteras incrementan este contador cada vez que se genera una dirección nueva:

  • m/44'/0'/0'/0/0 — Primera dirección de recepción
  • m/44'/0'/0'/0/1 — Segunda dirección de recepción
  • m/44'/0'/0'/0/2 — Tercera dirección de recepción
  • m/44'/0'/0'/1/0 — Primera dirección de cambio
  • m/44'/0'/0'/1/1 — Segunda dirección de cambio

Rutas de Derivación para Criptomonedas Principales

Bitcoin

Bitcoin usa múltiples rutas de derivación correspondientes a distintos tipos de dirección:

EstándarRutaTipo de DirecciónPrefijoEjemplo
BIP-44m/44'/0'/0'Legacy (P2PKH)1...1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
BIP-49m/49'/0'/0'SegWit-compat (P2SH-P2WPKH)3...3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
BIP-84m/84'/0'/0'Native SegWit (P2WPKH)bc1q...bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
BIP-86m/86'/0'/0'Taproot (P2TR)bc1p...bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297

Importante para recuperación: Si restauras una frase semilla en una cartera nueva y no ves tu saldo, puede que la cartera esté escaneando una ruta de derivación distinta de la que usó tu cartera original. Prueba cambiar entre tipos de dirección Legacy, SegWit y Taproot, o especifica manualmente la ruta de derivación.

Ethereum

Ethereum normalmente usa una sola ruta de derivación:

m/44'/60'/0'/0/0   — Primera cuenta
m/44'/60'/0'/0/1 — Segunda cuenta (algunas carteras)

Sin embargo, algunas carteras (como Ledger Live) derivan múltiples cuentas en el nivel account:

m/44'/60'/0'/0/0   — Cuenta 0
m/44'/60'/1'/0/0 — Cuenta 1
m/44'/60'/2'/0/0 — Cuenta 2

Mientras que otras (como MetaMask) incrementan el address index:

m/44'/60'/0'/0/0   — Cuenta 1
m/44'/60'/0'/0/1 — Cuenta 2
m/44'/60'/0'/0/2 — Cuenta 3

Esta inconsistencia puede causar confusión durante la recuperación. Anota siempre qué software de cartera creó tu frase semilla.

Solana

Solana usa Ed25519 (una curva elíptica diferente de secp256k1) con la ruta:

m/44'/501'/0'      — Phantom, Solflare
m/44'/501'/0'/0' — Algunas implementaciones

Cardano

Cardano usa un esquema de derivación de claves diferente (Ed25519-BIP32 / CIP-1852) con la ruta:

m/1852'/1815'/0'/0/0  — Primera dirección de pago
m/1852'/1815'/0'/2/0 — Primera clave de staking

Observa el campo purpose 1852' (CIP-1852, llamado así por el año de nacimiento de Ada Lovelace) en lugar de 44'.

Derivación Hardened vs. Normal

Entender la diferencia entre derivación hardened y normal es crucial para la seguridad.

Derivación Normal (No Hardened)

  • Usa índices 0 a 2^31 - 1.
  • Las claves públicas hijas pueden derivarse desde la clave pública extendida padre sin la clave privada padre.
  • Ventaja: Permite carteras solo de lectura (por ejemplo, un servidor puede generar nuevas direcciones de recepción usando solo el xpub, sin tener nunca claves privadas).
  • Riesgo: Si un atacante obtiene tanto una clave privada hija COMO la clave pública extendida padre, puede calcular la clave privada padre y todas las claves privadas hermanas.

Derivación Hardened

  • Usa índices 2^31 a 2^32 - 1 (escrito como 0' a 2^31 - 1').
  • Requiere la clave privada extendida padre para derivar claves hijas.
  • Ventaja: Comprometer una clave hija no compromete al padre ni a las hermanas.
  • Riesgo: No se pueden derivar claves públicas hijas solo desde la clave pública extendida padre (sin funcionalidad solo de lectura en este nivel).

Por Qué BIP-44 Usa Derivación Hardened en los Primeros Tres Niveles

Purpose, coin type y account son todos hardened (44'/0'/0') porque:

  1. Comprometer una clave privada de dirección (en el nivel no hardened 5) no debe comprometer la cuenta.
  2. Las cuentas deben estar aisladas entre sí.
  3. Las diferentes monedas deben estar aisladas entre sí.

Los niveles change y address index son no hardened (0/0) para permitir que las carteras solo de lectura generen direcciones de recepción sin la clave privada maestra.

El Gap Limit

Las carteras no escanean un número infinito de direcciones. La especificación BIP-44 introduce el concepto de "gap limit": la cantidad de direcciones consecutivas sin uso que una cartera escaneará antes de detenerse. El gap limit estándar es 20.

Si has generado direcciones 0 a 25, pero solo las direcciones 0, 5, 10 y 25 han recibido fondos, la cartera:

  1. Escanea la dirección 0 — tiene transacciones, continúa.
  2. Escanea direcciones 1–4 — sin uso, pero dentro del gap limit.
  3. Escanea la dirección 5 — tiene transacciones, reinicia el contador de gap.
  4. Continúa hasta encontrar 20 direcciones consecutivas sin transacciones.

Problema: Si generaste muchas direcciones más allá del gap limit (común con procesadores de pago para comercios), una restauración de cartera podría no encontrar todos tus fondos. Puede que necesites aumentar el gap limit en la configuración de la cartera durante la recuperación.

Herramienta de SafeSeed

Usa la Herramienta de Derivación de Claves de SafeSeed para explorar rutas de derivación BIP-44 de forma interactiva. Introduce una frase semilla (usa una frase de prueba, no la real) y observa cómo diferentes rutas de derivación producen direcciones distintas para diferentes monedas. Todo el procesamiento ocurre en tu navegador.

Claves Extendidas: xpub, ypub, zpub

Las claves extendidas codifican el material de clave junto con metadatos sobre la ruta de derivación:

PrefijoEstándarTipo de DirecciónRed
xpub / xprvBIP-44Legacy (P2PKH)Mainnet
ypub / yprvBIP-49SegWit-compat (P2SH-P2WPKH)Mainnet
zpub / zprvBIP-84Native SegWit (P2WPKH)Mainnet
tpub / tprvBIP-44Legacy (P2PKH)Testnet

El prefijo le indica al software de cartera qué tipo de dirección derivar. Si exportas un xpub y lo importas en una cartera que espera un zpub, verás direcciones diferentes (incorrectas).

Advertencia de Privacidad sobre Claves Públicas Extendidas

Compartir un xpub (o ypub/zpub) permite al receptor:

  • Derivar todas las direcciones de recepción pasadas y futuras.
  • Rastrear tu historial completo de transacciones y saldo.
  • Vincular tus direcciones entre sí, destruyendo los beneficios de privacidad de usar una dirección nueva por transacción.

Nunca compartas claves públicas extendidas excepto con partes en las que confíes plenamente para tu privacidad financiera (por ejemplo, tu contador o una cartera solo de lectura en tu propio servidor).

Problemas Comunes de Rutas de Derivación

"Restauré mi frase semilla pero mi saldo aparece en cero"

Este es el problema más común de rutas de derivación. Posibles causas:

  1. Tipo de dirección incorrecto — Usaste direcciones SegWit (BIP-84, m/84'/0'/0') pero la cartera nueva está escaneando rutas Legacy (BIP-44, m/44'/0'/0'). Cambia el tipo de dirección.
  2. Coin type incorrecto — Algunas carteras usaron coin type 0 para todas las monedas en implementaciones tempranas.
  3. Cuenta incorrecta — Puede que hayas usado la cuenta 1 o superior.
  4. Gap limit — Tus direcciones usadas estaban más allá del gap limit predeterminado de 20.
  5. Ruta de derivación personalizada — Algunas carteras usan rutas no estándar.

"Mis dos carteras muestran direcciones diferentes con la misma frase semilla"

Si dos carteras generan direcciones diferentes desde la misma frase semilla, están usando rutas de derivación o tipos de dirección diferentes. Revisa la configuración de derivación en ambas carteras.

Checklist de Recuperación

Al restaurar una cartera desde una frase semilla:

  1. Verifica que la cartera soporte BIP-39.
  2. Selecciona el tipo de dirección correcto (Legacy, SegWit o Taproot).
  3. Verifica que la ruta de derivación coincida con la cartera original.
  4. Aumenta el gap limit si usaste muchas direcciones.
  5. Revisa todas las cuentas (no solo la cuenta 0) si creaste múltiples cuentas.

Avanzado: Rutas de Derivación Personalizadas

Algunos casos de uso avanzados requieren rutas de derivación personalizadas:

  • Configuraciones multifirma — BIP-48 define rutas de derivación para carteras multisig: m/48'/0'/0'/2' (para multisig SegWit nativo).
  • Lightning Network — Algunas implementaciones de Lightning usan rutas de derivación personalizadas para claves de canal.
  • Carteras de privacidad — Wasabi y otras carteras centradas en privacidad pueden usar rutas específicas.

Documenta siempre las rutas de derivación que usas. Si no puedes reconstruir la ruta exacta, no puedes recuperar los fondos.

FAQ

¿Qué es una ruta de derivación en criptomonedas?

Una ruta de derivación es una notación estructurada que especifica cómo derivar una clave o dirección particular desde una semilla maestra en una cartera determinística jerárquica (HD Wallet). Sigue el formato m/purpose'/coin_type'/account'/change/address_index, donde cada nivel acota hasta una clave específica en el árbol de derivación.

¿Por qué diferentes criptomonedas usan diferentes coin types?

Diferentes coin types garantizan que la misma frase semilla produzca claves separadas y no relacionadas para cada blockchain. Esto evita interferencias accidentales entre cadenas y garantiza que comprometer claves en una cadena no afecte claves en otra.

¿Puedo usar la misma frase semilla para Bitcoin y Ethereum?

Sí. La misma frase semilla BIP-39 puede derivar claves tanto para Bitcoin como para Ethereum (y muchas otras criptomonedas). Usan rutas de derivación distintas — Bitcoin en m/44'/0'/0' y Ethereum en m/44'/60'/0' — por lo que las claves y direcciones derivadas son completamente independientes.

¿Qué significa el apóstrofo (') en las rutas de derivación?

El apóstrofo indica derivación hardened. La derivación hardened requiere la clave privada padre y proporciona un aislamiento de seguridad más fuerte: comprometer una clave hija no revela las claves padre ni hermanas. Los niveles no hardened (sin apóstrofo) permiten derivar claves públicas hijas desde una clave pública padre.

¿Por qué mi cartera muestra saldo cero después de restaurar una frase semilla?

La causa más común es una discrepancia de ruta de derivación. Tu cartera original puede haber usado un tipo de dirección distinto (Legacy vs. SegWit vs. Taproot), y cada uno usa una ruta de derivación diferente. Intenta cambiar el tipo de dirección en la cartera de recuperación o especifica manualmente la ruta de derivación usada por tu cartera original.

¿Qué es el gap limit y por qué importa?

El gap limit es la cantidad de direcciones consecutivas sin uso que una cartera escanea antes de asumir que no se usaron más direcciones. El estándar BIP-44 lo fija en 20. Si generaste muchas direcciones (por ejemplo, para un comercio que acepta pagos), algunas direcciones con fondos podrían quedar más allá del gap limit e invisibles durante la recuperación. Aumenta el gap limit en la configuración de la cartera para encontrarlas.

¿Todas las carteras usan BIP-44?

La mayoría de las carteras modernas soportan BIP-44 o sus sucesores (BIP-49, BIP-84, BIP-86). Sin embargo, algunas carteras usan rutas de derivación propietarias. Electrum, por ejemplo, usa su propio esquema mnemónico y de derivación. Documenta siempre qué cartera creó tu frase semilla y qué rutas de derivación usa.

Guías Relacionadas