Saltar al contenido

¿Qué es la codificación de claves? xpub, ypub, zpub…

En las carteras jerárquico deterministas (HD) el esquema de derivación que codifica las claves públicas y privadas se le conoce como xpub Master Extended Public Keys o lo que es lo mismo, de xpub, ypub y zpub.

Este estándar permite no solo ser usado dentro de carteras para Bitcoin, sino en general en todas aquellas «criptomonedas» que siguen este patrón y en este artículo nos centraremos en Bitcoin.

Una única semilla mnemónica genera Claves Master Extended Private Key y Claves Master Extended Public Key, las cuales pueden ser usadas para derivar nuevas claves dentro de la cartera.

Cada Master Extended Private Key, a su vez, da lugar a un número casi infinito de Claves «hijo», llamados Child Private Keys, los cuales tienen su contraparte publica llamadas Child Public Keys. y sus direcciones asociadas.

Por lo tanto, puedes tener una única Master Extended Private Key, y utilizarla como fuente para todas las claves privadas y públicas hijas de tu cartera. Además, una Master Extended Public Key correspondiente generará las mismas claves públicas hijas (Child Public Keys).

De lo anterior, debemos entender que la Master Extended Public Key es útil para la creación de carteras de vigilancia o watch-only wallet, ya que nos permite tener acceso a las direcciones de la cartera sin que a su vez se tenga acceso a las claves privadas, y por ende sin poder operar sobre ellas, solo «verlas».

Entonces, ¿qué es xpub, ypub, zpub y demás?.

Pues habiendo repasado lo anterior, son el nombre que se le da a la codificación de las claves Públicas Extendidas en diferentes tipos de scripts a saber:

xpub

Es como se denomina a una Clave Pública Extendida – eXtended Public.

Nace en el estándar de bitcoin BIP32 y sirve para dar acceso de solo lectura a una cartera. La xpub permite tener una visión completa de todas las transacciones, direcciones y saldos de una cartera en específico, pero no permite ningún tipo de gasto. Para gastar, se requieren claves privadas, y el xpub no tiene ninguna clave privada. Son las claves de nomenclatura inicial y se usan en las carteras tipo Legacy, las cuales tienen direcciones que empiezan por 1.

ypub

Es exactamente lo mismo que un xpub, excepto que la «y» nos indica que la clave pública extendida pertenece a una cartera que sigue el estándar de bitcoin BIP49,  el cual detalla un esquema de direccionamiento compatible con versiones anteriores a SegWit. Una clave ypub tiene un tipo de dirección P2SH-P2WPKH.

zpub

Y resulta que zpub es exactamente igual que ypub en el sentido de que nos indica que la clave pública extendida es la de una cartera que sigue el BIP49, sin embargo también nos indica que esa cartera en particular no sigue el esquema de direccionamiento compatible hacia atrás, en su lugar sigue el tipo de dirección P2WPKH, es decir zpub es para carteras nativas compatibles con SegWit.

En esta tabla queda más clara la relación de las claves privadas / Públicas

Tipo de direcciónTipo de scriptPublic KeyPrivate KeyBIP32 Derivation Path
LegacyP2PKH o P2SH0x0488b21e – xpub0x0488ade4 – xprvm/44’/0′
Segwit compatibleP2WPKH en P2SH0x049d7cb2 – ypub0x049d7878 – yprvm/49’/0′
Segwit nativeP2WPKH0x04b24746 – zpub0x04b2430c – zprvm/84’/0′
Multifirma
segwit compatible
P2WSH en P2SH0x0295b43f – Ypub0x0295b005 – Yprv
Multifirma segwit nativeP2WSH0x02aa7ed3 – Zpub0x02aa7a99 – Zprv
Testnet
Legacy
P2PKH o P2SH0x043587cf – tpub0x04358394 – tprvm/44’/1′
Testnet
Segwit compatible
P2WPKH in P2SH0x044a5262 – upub0x044a4e28 – uprvm/49’/1′
Testnet
Segwit native
P2WPKH0x045f1cf6 – vpub0x045f18bc – vprvm/84’/1′
Testnet
Multifirma
segwit compatible
Multi-signature P2WSH in P2SH0x024289ef – Upub0x024285b5 – Uprv
Testnet
Multifirma segwit native
Multi-signature P2WSH0x02575483 – Vpub0x02575048 – Vprv

NOTA 1: Todas las master public keys pueden llegar a codificarse como xpub. La codificación es la misma que se describe para xpub en el BIP 32 pero con un byte de prefijo diferente.

Las rutas para derivar ypub, zpub, etc han sido implementaciones creadas por Electrum y SatoshiLabs. Estas rutas tienen una codificación específica, la cual esta descrita en el SLIP 132 y se complementan con el SLIP 032

NOTA 2: Con TapRoot se implementará un nuevo tipo de script para direcciones en Bitcoin (P2TR), y supongo que va a suponer la adopción de nuevo tipos de Claves Públicas Extendidas, sin embargo, al momento de escribir este artículo no encontré información que me ayudara a conocer claramente que clave de codificación va a usarse para identificar las claves públicas y privadas de Taproot.

Consideraciones de privacidad

Como podrás entender después de leer el artículo, con tu clave pública maestra es posible acceder a tus direcciones y con ello obtener el balance total de los mismos, por eso, no es recomendable ni seguro compartirlas. Este es el principal motivo por el que recomiendo tener un nodo de Bitcoin propio, ya que con ello eliminas de raíz qué se pueda tener acceso a esa información.

Recuerda que con Bitcoin, ahora tú eres el responsable de cuidar tus finanzas y de la misma forma que en el mundo Fiat tradicional no vas mostrando ni publicando el saldo y los movimientos de tus cuentas, debes cuidar de no hacerlo, evitando compartir las claves.

Sobre el autor de este artículo