xpub — не Bitcoin-адреса і не ключ підпису. Він експортує вузол дерева BIP32, щоб watch-only гаманець або сервер приймання генерував нижчі публічні ключі й адреси. Власник зазвичай не може витрачати, але бачить похідну гілку; значення адрес залежить також від derivation path і script policy.
BIP32 подає розширений публічний ключ як публічну точку K разом із 32-байтовим chain code c. Серіалізація також містить version bytes, depth, parent fingerprint і child number. Отже, xpub — не окрема адреса, а вузол ієрархії з даними для продовження його публічної гілки.
CKDpub поєднує parent public key, chain code та індекс через HMAC-SHA512. Для індексів від 0 до 2³¹−1 утворюються child public key і новий chain code, тому онлайн-гаманець генерує receive і change адреси без секрету підпису. Виводяться лише нащадки експортованого вузла.
Hardened-індекси починаються з 2³¹ і позначаються апострофом або h. Їх обчислення потребує приватних даних, тому CKDpub із parent xpub не працює. Гаманці зазвичай хардять purpose, coin type і account, а потім експортують account xpub, відділяючи інші hardened-акаунти.
Серіалізація BIP32 має 78 байтів: версію, depth, parent fingerprint, child number, chain code і 33 байти key material. Base58Check дає 111 символів; mainnet public починається з xpub, testnet — з tpub. Префікс є наслідком version bytes, а не окремим типом криптографічного ключа.
xpub не повідомляє, чи ключі належать до P2PKH, wrapped SegWit, native SegWit, Taproot або multisig, а без key origin шлях може бути неоднозначним. SLIP-0132 запровадив ypub, zpub та інші версії як підказки; descriptor явно фіксує script, fingerprint, path, xpub, wildcard і checksum.
Той, хто має account xpub, може обчислити всі нехардовані receive і change public keys гілки та пов’язувати їхні транзакції й баланси. Передача сервісу обліку або вставлення у публічний block explorer створює тривалий огляд акаунта й може зв’язати мережеві чи особисті дані з on-chain історією.
Сам xpub зазвичай не підписує. Критичний виняток BIP32: parent xpub разом із private key одного нехардованого нащадка дозволяє відновити parent private key і решту гілки. Тому xpub захищають як чутливі дані, а межі account роблять hardened.
Watch-only гаманець стежить за xpub, створює непідписану транзакцію й передає її пристрою підпису. Магазин генерує унікальні адреси без зберігання xprv. Це обмежує пряме викрадення після зламу сервера, але не стеження; receive address слід перевіряти на довіреному дисплеї.
У multisig власний seed не описує весь гаманець: для точного відновлення потрібні public keys cosignerів, threshold, script type і derivation data. Descriptor зберігає policy точніше за набір xpubів. Восьмизначний master fingerprint допомагає зіставляти ключі, але не доводить особу й може мати колізію.
Перед імпортом визначте network, account, derivation path, очікуваний script type, receive/change гілки та діапазон індексів. Порівняйте xpub або descriptor на довіреному пристрої, виведіть кілька адрес і звірте їх із вихідним гаманцем; не надсилайте xpub сторонньому explorer без свідомої згоди на втрату приватності. Джерела: 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)?.
Для повної картини прочитайте також HD Wallet, Watch-only Wallet, Приватність у Bitcoin, Derivation Path, Bitcoin, Output Descriptor. На цю статтю також посилаються HD Wallet, Cold Storage, Watch-only Wallet, Output Descriptor.