xpub není bitcoinová adresa ani klíč k podpisu. Je to export určitého uzlu BIP32 stromu, který umožňuje watch-only peněžence či přijímacímu serveru vytvářet veřejné klíče a adresy pod tímto uzlem. Držitel obvykle nemůže utrácet, ale může sledovat historii a zůstatky odvozené větve; význam adres navíc závisí na derivation path a script policy, které samotný xpub úplně nepopisuje.
BIP32 zapisuje rozšířený veřejný klíč jako dvojici veřejného bodu K a 32bytového chain code c. Serializace navíc nese version bytes, depth, parent fingerprint a child number. Xpub proto není jednotlivá adresa ani obyčejný public key: identifikuje uzel hierarchického stromu a data potřebná k pokračování jeho veřejné větve.
Funkce CKDpub kombinuje parent public key, chain code a index přes HMAC-SHA512. Pro index 0 až 2³¹−1 vypočte child public key a nový chain code, takže online wallet může generovat nové receive a change adresy bez podpisového tajemství. Z xpubu lze odvozovat jen potomky pod exportovaným uzlem, nikoli sourozence nebo předky.
Hardened indexy začínají na 2³¹ a zapisují se apostrofem nebo h. Jejich odvození používá privátní data, takže CKDpub z parent xpubu selže. Peněženky proto běžně hardenují purpose, coin type a account a exportují až account xpub; kompromitace jedné účtové veřejné větve pak sama neotevře jiné hardened účty.
BIP32 serializace má 78 bytů: čtyřbytovou verzi, depth, parent fingerprint, child number, chain code a 33bytový key material. Base58Check z ní vytvoří 111 znaků; mainnet public verze začíná xpub a testnet tpub. Prefix je výsledkem version bytes, nikoli samostatný kryptografický druh klíče.
BIP32 xpub neříká, zda mají odvozené klíče tvořit P2PKH, wrapped SegWit, native SegWit, Taproot nebo multisig skript, a bez key origin nemusí být jasná cesta k exportovanému uzlu. SLIP-0132 zavedl ypub/zpub a další verze jako nápovědu typu adres, ale descriptory řeší problém přesněji: zapisují script, fingerprint, path, xpub, wildcard i checksum.
Kdo získá account xpub, může dopočítat všechny nehardenované receive a change public keys v dané větvi a spojovat jejich transakce a zůstatky. Odeslání xpubu účetní službě nebo vložení do veřejného block exploreru proto vytváří trvalý pohled na účet a může spojit síťová či identifikační data s on-chain historií.
Samotný xpub běžně nestačí k podpisu. Kritická výjimka BIP32 však říká, že parent xpub spolu s jedním privátním klíčem jeho nehardenovaného potomka umožní dopočítat parent private key, a tím i ostatní potomky této větve. Proto se xpub chrání jako citlivá informace a account hranice se hardenují.
Watch-only wallet může z xpubu sledovat adresy, sestavit unsigned transakci a předat ji podpisovému zařízení. E-shop může na serveru generovat jedinečné příjmové adresy bez xprv. To omezuje přímé riziko krádeže při průniku serveru, nikoli sledování plateb; receive adresu je stále vhodné ověřit na důvěryhodném displeji podpisového zařízení.
U multisigu nestačí znát jen vlastní seed: pro přesnou rekonstrukci wallet policy jsou potřeba veřejné klíče cosignerů, threshold, script type a derivation informace. Descriptor ukládá tuto konfiguraci jednoznačněji než sada holých xpubů. Osmiznakový master fingerprint je identifikátor pro párování, nikoli důkaz identity, a software musí počítat s kolizí.
Před importem určete network, account a derivation path, očekávaný script type, receive/change větev a rozsah indexů. Porovnejte xpub nebo descriptor na důvěryhodném zařízení, z descriptoru odvoďte několik adres a shodu ověřte ve zdrojové peněžence; xpub nikdy nevkládejte do cizího exploreru bez vědomého přijetí ztráty soukromí. Prameny: BIP 32 — Hierarchical Deterministic Wallets; BIP 380 — Output Script Descriptors General Operation; SLIP-0132 — Registered HD Version Bytes; Bitcoin Core — Output Descriptors; Trezor — What Is a Public Key (XPUB)?.
Pro nejúplnější obraz čtěte toto heslo společně s HD Wallet, Watch-only Wallet, Soukromí v Bitcoinu, Derivation Path, Bitcoin, Output Descriptor. Opačným směrem na něj odkazují také HD Wallet, Cold Storage, Watch-only Wallet, Output Descriptor.