490 / 736FP

Wallet Fingerprint

Короткий відбиток головного ключа гаманця

Після відновлення гаманця хочеться знати, чи працюєте ви з тими самими ключами. Wallet Fingerprint — короткий ідентифікаційний відбиток, який допомагає це перевірити. Зазвичай він позначає головний публічний ключ гаманця за BIP32. Це орієнтир для порівняння, а не заміна резервної копії чи остаточний доказ збігу всього гаманця.

Fingerprint BIP32 складається з перших 4 байтів HASH160 стисненого публічного ключа. HASH160 означає SHA-256, а потім RIPEMD-160 — дві функції для обчислення числових відбитків даних. Отримані 32 біти зазвичай показують як 8 шістнадцяткових символів, тобто цифр і літер. Chain code, додаткові дані для виведення наступних ключів, до цього короткого відбитка не входить.

Уявіть, що маєте записи про кілька гаманців і хочете їх розрізнити. Fingerprint — коротка мітка, обчислена з публічного ключа в точно визначеному кодуванні. Це не прямий хеш резервних слів або приватного ключа. Сама мітка не є адресою для отримання, не може підписати платіж і не дозволяє відновити ключі. Тому її збереження не замінює копії, з якої гаманець справді можна відновити. [1]

BIP32 створює дерево ключів: від головного ключа виводяться інші, як гілки від спільного стовбура. Запис розширеного публічного ключа xpub або приватного xprv містить fingerprint батьківського ключа, розташованого на рівень вище. Головний ключ не має батьківського, тому в цьому полі стоїть 00000000. Але це не його власний fingerprint. Програма може показувати саме власний відбиток головного ключа; перед порівнянням з’ясуйте, яке значення читаєте. [1]

Головний ключ із публічного тестового вектора BIP32 номер 1 має власний fingerprint 3442193e. Водночас батьківське поле його головного xpub містить 00000000. Суперечності немає: одне значення описує сам ключ, інше — його відсутнього батька. Тестовий вектор — це оприлюднений набір входів та очікуваних результатів для перевірки програми. Ніколи не використовуйте ці загальновідомі дані як основу гаманця для власних грошей. [1]

PSBT — пакет даних транзакції, який можна передати пристрою для підпису. За BIP174 він пов’язує головний fingerprint зі шляхом виведення, тобто послідовністю кроків до конкретного публічного ключа. Походження ключа може містити й Output Descriptor — текстовий опис ключів та правил витрачання. Коли підписувальний пристрій перевіряє решту від платежу, самого збігу відбитків недостатньо. Він має вивести й порівняти справжній ключ та відповідні правила, щоб не прийняти чужий вихід за власний. [2] [3]

Короткий відбиток економить місце, але має обмежений діапазон: 32 біти дозволяють лише 4294967296 значень. Тому різні ключі можуть мати однаковий fingerprint. Це називається колізією, і BIP32 прямо вимагає, щоб програми її враховували. Збіг не перевіряє всіх рахунків, шляхів виведення чи типів скриптів, тобто правил витрачання. Він також не доводить, що ви маєте потрібні приватні ключі. [1] [3]

Спершу переконайтеся, що порівнюєте однаковий тип відбитка на однаковому рівні дерева. Різниця може вказувати на інший seed, таємну основу ключів, або іншу passphrase, додатковий пароль. Перш ніж робити висновок, виключіть плутанину між головним і батьківським полями. Доповніть збіг перевіркою відомих адрес, шляхів виведення та правил витрачання. Fingerprint — корисна часткова перевірка, але не заміна належно збереженої копії та перевіреної процедури відновлення. [1] [3]

Для повної картини прочитайте також HD Wallet, PSBT, BIP39 passphrase, Output Descriptor. На цю статтю також посилаються SeedQR.

DOC · 001BIP32 — Key identifiers and serializationСпецифікація DOC · 002BIP174 — Key origins and change detectionСпецифікація DOC · 003BIP380 — Output Script DescriptorsСпецифікація
Переглянуто: Спочатку джерела · Не інвестиційна порада