xpub, ypub, zpub: cuál es la diferencia y por qué importa
Parece un detalle de formato. No lo es: ese prefijo es el dato que decide si tu respaldo te devuelve la billetera o te devuelve una vacía.
El prefijo de la clave pública maestra codifica qué tipo de dirección va a derivar esa rama. No es la misma clave escrita distinto: es la misma clave más una instrucción sobre cómo usarla.
Qué significa cada uno
xpub— deriva direcciones Legacy, las que empiezan con1(BIP-44)ypub— deriva SegWit anidada, las que empiezan con3(BIP-49)zpub— deriva SegWit nativa, las que empiezan conbc1q(BIP-84)
Y hay un cuarto tipo, Taproot (bc1p, BIP-86), que en general no se identifica con un prefijo propio sino por el descriptor.
Fuente del punto central: la documentación de Electrum sobre los version bytes de la clave extendida.
Por qué esto arruina restauraciones
Acá está lo incómodo. La misma clave se puede escribir en más de un tipo de script, y cada uno produce una dirección distinta y perfectamente válida. En la sintaxis de descriptores de Bitcoin Core esos cuatro caminos se escriben pkh(), sh(wpkh()), wpkh() y tr().
O sea: de una sola clave salen cuatro direcciones que son todas «tuyas», y tres de ellas pueden estar en cero.
Nada falla y nada avisa. El programa hace exactamente la cuenta que le pediste, sobre la puerta equivocada, y te muestra el resultado sin un solo mensaje de error.
Por eso «restauré mi semilla y está vacía» casi nunca es plata perdida: es la rama equivocada. Y por eso anotar sólo las doce palabras no alcanza — te falta la línea que dice cuál de las cuatro.
Cómo saber cuál es el tuyo, sin arriesgar nada
Si tenés un nodo, la respuesta la da el propio Bitcoin Core sin exponer ningún secreto: getdescriptorinfo analiza el descriptor y devuelve su checksum y el campo hasprivatekeys, y deriveaddresses imprime exactamente las direcciones que ese descriptor va a producir. Si coinciden con las que tu billetera muestra, ésa es tu rama.
Si no tenés nodo, el mismo test se puede hacer en el navegador. La ceremonia deriva la dirección cero a partir de tu clave pública extendida y el tipo que elijas, y la coteja contra la primera dirección que tu billetera muestra. Menos de dos minutos, sin pedir la semilla, y la página declara connect-src 'none': no puede mandar un byte a ningún lado, y eso está en el encabezado.
Una advertencia que vale la pena
Una clave pública extendida no puede firmar, pero no es un dato inocuo: revela todas las direcciones de esa cuenta, o sea el historial completo y los saldos futuros. No la publiques. Compartirla con un servicio es entregarle tu contabilidad entera.
Y ojo con lo inverso: un descriptor puede traer material privado adentro — donde acepta un xpub, Bitcoin Core también acepta un xprv. Si lo que tenés empieza con xprv, eso sí firma: es la billetera, no un dato sobre la billetera.