Saltar al contenido
buybitcoinsmart

Glosario / Direcciones y claves

Derivación BIP-84

¿Qué es la derivación BIP-84?
La derivación BIP-84 es el esquema que establece en 84' el nivel de propósito de una ruta BIP-32, de modo que una sola frase semilla produce direcciones SegWit nativas bc1q con la encapsulación P2WPKH de BIP-141.

Se especifica en el BIP-84.

BIP-84 reutiliza la estructura de cinco niveles de BIP-44 y cambia solo el valor de propósito. Se asignó el 28 de diciembre de 2017 y empareja cada cuenta con una clave extendida zpub cuyos bytes de versión son 0x04b24746. Para usted, decide si una semilla restaurada encuentra su saldo en bc1q o muestra una billetera vacía.

Cómo funciona

BIP-84 hace dos cosas, y la primera es dejar fijo un número dentro de una ruta. Las claves cuelgan del esqueleto que introdujo BIP-44, escrito m / purpose' / coin_type' / account' / change / address_index, y el único nivel que esta especificación reclama como propio es el propósito, fijo en 84'. El tipo de moneda, la cuenta, el cambio y el índice de dirección conservan los significados que ya les dieron BIP-44 y BIP-49, y el autor, Pavol Rusnak, reutiliza expresamente la justificación de BIP-49 en lugar de repetirla.

La segunda es el formato de la salida. BIP-84 toma prestada la encapsulación de BIP-141: el campo scriptPubKey es 0x0014 seguido del hash de 20 bytes de la clave pública, el campo scriptSig queda vacío y el testigo lleva la firma y después la clave. Nada en esa salida registra qué valor de propósito la produjo.

Las claves extendidas de la rama reciben sus propios bytes de versión. Las claves públicas usan 0x04b24746, que se muestra como zpub; las privadas usan 0x04b2430c para zprv, y la testnet usa 0x045f1cf6 y 0x045f18bc para vpub y vprv. Esos valores no son exclusivos de bitcoin. SLIP-0132, el registro que los recopila, incluye Groestlcoin y Syscoin bajo el mismo 0x04b24746, porque el formato de serialización no tiene ningún campo para el tipo de moneda, así que una zpub le indica el tipo de script y nada sobre la cadena a la que pertenece.

La especificación se describe a sí misma como "not backwards compatible by design" y dice que una billetera incompatible "will not discover accounts at all". Es deliberado. Un valor de propósito aparte mantiene al software escrito antes de SegWit fuera de una cuenta que manejaría mal, y un saldo que marca cero es un fallo mejor que una billetera que se restaura a medias en silencio.

Dónde aparece

BIP-84 aparece en tres lugares que su billetera ya muestra: la ruta de la cuenta m/84'/0'/0', una clave extendida que empieza por zpub y direcciones de recepción que empiezan por bc1q. SLIP-0132 asocia esa fila de zpub para bitcoin con la ruta m/84'/0', que es la correspondencia que afirma una aplicación cuando le entrega una. Sparrow, calificada con 4,7 en nuestra reseña, admite billeteras de una sola firma y multisig en los tipos de script comunes, así que la cuenta que usted abre es la que eligió y no una opción predeterminada que le vino dada.

La parte del documento que vale la pena aprovechar es su apartado de vectores de prueba, que convierte la pregunta "¿implementa esta billetera BIP-84 igual que todas las demás?" en una comprobación de un minuto. El BIP publica resultados para el mnemónico "abandon" repetido once veces y luego "about":

  • m/84'/0'/0'/0/0 da bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
  • m/84'/0'/0'/0/1 da bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g
  • m/84'/0'/0'/1/0 da bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el

Cargue esa frase en un software que no conozca, en una máquina que no guarde monedas, elija SegWit nativo y compare la primera dirección de recepción y la primera dirección de cambio con esas cadenas de caracteres. Si coinciden las dos, la implementación también está de acuerdo con el estándar en la rama de cambio, que es la mitad que la gente olvida comprobar. Nunca envíe nada a esas direcciones: el BIP imprime las claves privadas correspondientes y SLIP-0132 imprime el mismo mnemónico, así que cualquiera que lea alguno de los dos documentos puede gastar lo que llegue ahí.

Derivación BIP-84 frente a P2WPKH

La derivación BIP-84 dice de dónde salió una clave, y P2WPKH dice cómo quedan bloqueadas las monedas. Solo lo segundo es consenso. Una billetera podría derivar una clave por una ruta que no contenga 84' en ninguna parte, bloquear la salida con el mismo patrón 0x0014, y la dirección bc1q resultante sería indistinguible on-chain de la suya. Por eso "una dirección BIP-84" es una forma abreviada y no una afirmación que un explorador de bloques pueda zanjar, y el valor de propósito es algo que usted anota en una nota de respaldo, porque más tarde no podrá volver a leerlo en la blockchain.

No confundir con

Preguntas frecuentes

¿Cuál es la diferencia entre BIP-84 y BIP-49?

El nivel de propósito y, con él, el formato de dirección. BIP-84 usa 84' y produce direcciones SegWit nativas bc1q bajo una clave extendida zpub, mientras que BIP-49, asignado el 19 de mayo de 2016, usa 49' y produce direcciones de P2WPKH anidado en P2SH bajo una ypub. Una misma frase semilla puede llevar ambas cuentas a la vez.

¿Un prefijo zpub demuestra que estoy ante una billetera de bitcoin?

No. SLIP-0132 registra los mismos bytes de versión, 0x04b24746, para Groestlcoin y Syscoin además de para bitcoin, porque el formato de clave extendida no tiene ningún campo para el tipo de moneda. El prefijo le indica que el tipo de script es P2WPKH, y nada sobre la cadena.

¿Necesito anotar m/84'/0'/0' junto con mi respaldo?

Sí, anótela junto al nombre de la billetera. La ruta no es secreta y por sí sola no revela nada, pero un software que restaura las mismas palabras en otro nivel de propósito deriva otro conjunto de direcciones y muestra una billetera vacía.

Para seguir leyendo

Términos relacionados

Más en la sección Direcciones y claves

Leer esta página en inglés