Xpub: що розкриває публічний ключ вашого біткоїн-гаманця

Xpub дає змогу знайти всі адреси біткоїн-акаунта, а отже, всю його історію, але не дає змоги витрачати кошти. Що він розкриває, у чому ризик і кому його можна давати.

Xpub (розширений публічний ключ) є публічним ключем акаунта біткоїн-гаманця, з якого обчислюються всі його адреси: той, хто його має, бачить кожен платіж, отриманий і надісланий цим акаунтом, але нічого не може витратити.

Що містить xpub

Стандарт BIP32 описує ієрархічні детерміновані гаманці: один сид породжує ціле дерево ключів. Розширений ключ додає до ключа код ланцюжка (chain code), який слугує для обчислення його дочірніх ключів. Згідно з BIP32, знаючи розширений публічний ключ, можна відновити всі його непосилені (non-hardened) дочірні публічні ключі.

Гаманці впорядковують ці ключі за шляхом BIP44: m / purpose' / coin_type' / account' / change / address_index. Xpub, який показує гаманець, належить до рівня account'. Він охоплює два ланцюжки адрес: 0 для адрес отримання, 1 для адрес решти, на які повертається решта від ваших власних надсилань.

xpub, ypub чи zpub

Префікс показує, який тип адрес використовує акаунт:

ПрефіксСтандартШлях першого акаунтаАдреси
xpubBIP44m/44'/0'/0'Старі адреси, починаються з 1
ypubBIP49m/49'/0'/0'Вкладений SegWit, адреси починаються з 3
zpubBIP84m/84'/0'/0'Нативний SegWit, адреси починаються з bc1q

Усі три є ключами одного виду: змінюються лише їхні байти версії, а отже, і перші літери.

Що розкриває xpub

  • Усі адреси акаунта, минулі й майбутні: їх обчислюють одну за одною, без обмежень.
  • Уся історія: кожне надходження, кожне надсилання, кожна сума, адже блокчейн публічний.
  • Баланс акаунта, у будь-який момент.
  • Нічого, щоб витрачати: без приватного ключа не можна підписати жодної транзакції.

BIP32 сам наводить такий приклад: передавши розширений публічний ключ акаунта аудитору, ви даєте йому змогу бачити всі вхідні й вихідні платежі без доступу до будь-якого секретного ключа. Той, хто має ваш xpub, назавжди отримує погляд цього аудитора: xpub не можна відкликати.

Ризик, про який треба знати

Сам лише xpub не дає змоги витрачати кошти. Але BIP32 попереджає: знати розширений публічний ключ і будь-який непосилений приватний ключ, що походить від нього, рівнозначно тому, щоб знати батьківський розширений приватний ключ. Інакше кажучи, вашого xpub і приватного ключа однієї-єдиної вашої адреси достатньо, щоб витратити кошти всього акаунта.

Рівень account' посилений: такий витік обмежується цим акаунтом і не зачіпає інших акаунтів того самого сиду. Тож експортуйте xpub, але ніколи не приватний ключ адреси, і ніколи нікому не передавайте свою фразу відновлення.

Як програма знаходить адреси

Програма, яка читає xpub, обчислює адреси по черзі й зупиняється після серії жодного разу не використаних адрес: BIP44 встановлює цю межу (gap limit) на рівні 20. Якщо ви створили понад 20 адрес поспіль і не скористалися ними, програма, що дотримується цього правила, не побачить наступних.

Щоб дізнатися баланси, програма потім опитує сервер або вузол, адресу за адресою. Цей сервер дізнається всі ваші адреси й може пов’язати їх між собою: це другий витік, який виникає не через сам xpub, а через спосіб його зчитування.

Перш ніж передати свій xpub

  • Запитайте себе, хто його зберігатиме: застосунок, який зберігає ваш xpub на своїх серверах, знає ваш акаунт увесь час, поки зберігає його, а витік його даних розкриває акаунт.
  • Віддавайте перевагу локальному зчитуванню: гаманець, підключений до вашого власного вузла, або інструмент, який обчислює адреси на вашому пристрої, нікому не довіряє xpub.
  • Один акаунт на одну мету: інший акаунт (наступний account') має інший xpub, який нічого не розкриває про інші акаунти.

Як CentraFIN читає ваш xpub

CentraFIN читає ваш xpub на вашому пристрої: ваш браузер обчислює адреси, зчитує їхні баланси через наскрізно зашифроване з’єднання й зберігає все в сховищі, яке сам шифрує. Сервер CentraFIN ніколи не бачить ні вашого xpub, ні адреси, ні балансу. Кожну адресу завжди зчитує той самий вузол, вибраний випадково, щоб жоден вузол не бачив увесь акаунт. Докладніше на сторінці Біткоїн.

Джерела

Часті запитання

Чи можна вкрасти біткоїни за допомогою xpub?

З одним лише xpub ні: він не дає змоги підписувати. Якщо до нього додати приватний ключ однієї з адрес акаунта, то так: увесь акаунт.

Чи достатньо xpub, щоб бачити мій баланс?

Так. Він дає всі адреси акаунта, а блокчейн дає їхні баланси й транзакції.

Що робити, якщо мій xpub витік?

Його не можна відкликати: той, хто його має, завжди бачитиме цей акаунт. Надалі користуйтеся новим акаунтом, xpub якого ніколи нікому не передавали. Переказ зі старого акаунта при цьому залишиться видимим.

Чим відрізняються xpub, ypub і zpub?

Типом адрес акаунта: адреси починаються з 1 у xpub, з 3 у ypub (вкладений SegWit), з bc1q у zpub (нативний SegWit).

Візьміть свій капітал під контроль

Обліковий запис готовий за хвилину, без пароля.