Анатомія гаманця

[ GUIDE / WALLETS ]

Анатомія гаманця

14 хв читання · Гайд 2 з 7

Як криптовалютні гаманці працюють під капотом — від деривації ключів та генерації адрес до підписання та трансляції транзакцій.

Що таке криптогаманець і як він працює?

Що таке криптогаманець?

Криптовалютний гаманець — це інструмент, який зберігає ваші приватні ключі та дозволяє відправляти, отримувати та керувати цифровими активами. Незважаючи на назву, гаманці фактично не зберігають ваші монети чи токени — ті існують як записи в блокчейні. Ваш гаманець зберігає криптографічні ключі, які підтверджують ваше право власності та авторизують перекази.

Гаманець більше схожий на зв'язку ключів, ніж на гаманець. Він не зберігає гроші — він зберігає ключі, що відкривають ваші гроші в блокчейні.

Гаманці бувають різних форм, кожна розроблена для різних сценаріїв використання:

  • Мобільні додатки — зручні, завжди з вами, ідеальні для повсякденних транзакцій
  • Десктопне програмне забезпечення — більше контролю, більший екран, підходить для управління кількома обліковими записами
  • Розширення для браузера — безшовна взаємодія з DeFi-протоколами та dApps
  • Апаратні пристрої — максимальна безпека, ключі генеруються та зберігаються на спеціалізованому чіпі, який ніколи не підключається до інтернету
  • Паперові гаманці — надрукований приватний ключ або сід-фраза для довгострокового холодного зберігання (зараз здебільшого замінені апаратними гаманцями)

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

Яка різниця між публічним ключем і приватним ключем?

Публічні ключі vs. приватні ключі

Кожен гаманець побудований на асиметричній криптографії — системі, яка використовує два математично пов'язані, але функціонально різні ключі:

  • Приватний ключ — секретне 256-бітне число, яке авторизує витрати. Його ніколи не можна нікому показувати. Хто контролює приватний ключ — той контролює кошти.
  • Публічний ключ — математично виводиться з приватного ключа за допомогою множення на еліптичній кривій. Його можна вільно поширювати; він використовується для перевірки підписів та генерації адрес.

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

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

1
Приватний ключ
256-біт секрет
2
Публічний ключ
Еліптична крива
3
Адреса
Хеш + кодування
Критично Якщо хтось отримає ваш приватний ключ, він зможе негайно перевести всі кошти, пов'язані з цим ключем. На блокчейні немає механізму скасування. Захищайте свої приватні ключі з тією ж ретельністю, з якою ви захищали б ключ від сейфа.

Як генеруються криптовалютні адреси?

Адреси та отримання коштів

Адреса виводиться з вашого публічного ключа через послідовність кроків хешування та кодування. Це рядок, який ви надаєте іншим для отримання коштів — подібно до номера банківського рахунку, але псевдонімний і верифікований будь-ким у мережі.

Формати адрес у Bitcoin

  • Legacy (P2PKH) — починається з 1, оригінальний формат
  • Nested SegWit (P2SH) — починається з 3, зворотно сумісний SegWit
  • Native SegWit (Bech32) — починається з bc1q, нижчі комісії, краще виявлення помилок
  • Taproot (Bech32m) — починається з bc1p, найновіший формат з покращеною приватністю та можливостями скриптів

Для Ethereum та EVM-сумісних мереж адреси — це 40-символьні шістнадцяткові рядки з префіксом 0x, що виводяться з останніх 20 байтів хешу Keccak-256 публічного ключа.

Найкраща практика Використовуйте нову адресу для кожної транзакції для покращення приватності. HD-гаманці роблять це автоматично, генеруючи послідовні адреси з того самого сіда. Повторне використання адрес дозволяє спостерігачам блокчейну зв'язувати ваші транзакції між собою.

Як працює підписання транзакцій у крипто?

Відправлення коштів — підписання транзакцій

Коли ви відправляєте криптовалюту, ваш гаманець виконує точну послідовність кроків:

  1. Побудова транзакції — вказується адреса отримувача, сума та комісія
  2. Створення хешу — гаманець обчислює криптографічний хеш даних транзакції
  3. Підписання хешу — ваш приватний ключ створює цифровий підпис над хешем
  4. Трансляція — підписана транзакція надсилається в мережу
  5. Верифікація — вузли мережі перевіряють підпис за вашим публічним ключем для підтвердження авторизації

Краса цієї системи полягає в тому, що приватний ключ використовується для створення підпису, але публічного ключа достатньо для його перевірки. Ваш приватний ключ ніколи не покидає гаманець під час транзакції — лише підпис.

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

Що таке HD-гаманець і чому він використовує один сід для багатьох ключів?

HD-гаманці — один сід, необмежена кількість ключів

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

Ця конструкція забезпечує потужні переваги:

  • Єдина резервна копія — одна сід-фраза захищає всі поточні та майбутні ключі
  • Підтримка кількох монет — той самий сід може виводити ключі для Bitcoin, Ethereum та десятків інших криптовалют одночасно
  • Автоматична генерація адрес — гаманці генерують нові адреси для отримання без втручання користувача
  • Ізоляція облікових записів — різні шляхи деривації створюють логічно окремі облікові записи під одним сідом
Ключовий висновок HD-гаманець може згенерувати мільярди унікальних адрес з однієї сід-фрази. Кожну з них можна відновити, імпортувавши той самий сід у будь-яке сумісне програмне забезпечення гаманця. Ваші кошти ніколи не знаходяться "в" додатку гаманця — вони в блокчейні, доступні за правильним ключем.

Як працює ієрархічна детерміністична деривація BIP32?

Ієрархічна детерміністична деривація BIP32

BIP32 визначає деревоподібну структуру для деривації ключів. Починаючи з майстер-ключа (виведеного з сіда BIP39 через HMAC-SHA512), дочірні ключі генеруються на кожному рівні, використовуючи батьківський ключ та 32-бітний індекс.

Звичайна vs. посилена деривація

Кожен рівень дерева може створити 231 звичайних дочірніх ключів (індекси від 0 до 231-1) та 231 посилених дочірніх ключів (індекси від 231 до 232-1, позначаються ').

  • Звичайна деривація — використовує батьківський публічний ключ + код ланцюга. Дозволяє виводити дочірні публічні ключі з xpub без приватного ключа.
  • Посилена деривація — використовує батьківський приватний ключ + код ланцюга. Запобігає поширенню компрометації дочірнього ключа вгору до батьківського.

Посилена деривація (позначається апострофом, напр., m/44') створює криптографічний бар'єр між рівнями дерева. Якщо дочірній приватний ключ та його код ланцюга обидва витекли, посилена деривація запобігає обчисленню зловмисником батьківського приватного ключа. Це критично для ізоляції безпеки кількох облікових записів.

Функція деривації

Деривація дочірнього ключа BIP32
// Для посиленого дочірнього ключа (index >= 2^31): I = HMAC-SHA512(Key=parent_chain_code, Data=0x00 || parent_private_key || index) // Для звичайного дочірнього ключа (index < 2^31): I = HMAC-SHA512(Key=parent_chain_code, Data=parent_public_key || index) child_key = parse256(I_L) + parent_key (mod n) child_chain = I_R

Як підписи ECDSA та Schnorr захищають транзакції?

Підписи ECDSA та Schnorr

Bitcoin історично використовує еліптичну криву secp256k1 з ECDSA (алгоритм цифрового підпису на еліптичних кривих) для підписання транзакцій. Оновлення Taproot (BIP340) впровадило підписи Schnorr як альтернативу.

Процес підписання ECDSA

  1. Згенерувати випадковий nonce k (використовуючи детерміністичну генерацію nonce за RFC 6979)
  2. Обчислити точку R = k × G (множення точки на еліптичній кривій)
  3. Обчислити r = R.x mod n
  4. Обчислити s = k-1(hash + r × privateKey) mod n
  5. Підпис — це пара (r, s)

Фундаментальний примітив безпеки — це задача дискретного логарифму на еліптичних кривих (ECDLP) — маючи P = k × G, обчислити k з P та G є обчислювально нездійсненним.

Підписи Schnorr (BIP340)

Підписи Schnorr мають кілька переваг над ECDSA:

  • Лінійність — підписи можна агрегувати (агрегація ключів для мультипідпису виглядає як єдиний підпис у блокчейні)
  • Доведена безпека — зведення безпеки безпосередньо до задачі дискретного логарифму
  • Менший розмір і швидші — 64-байтні підписи vs. підписи ECDSA змінної довжини в DER-кодуванні
  • Пакетна верифікація — кілька підписів можуть бути перевірені швидше, ніж окремо
Безпека nonce Повторно використаний або передбачуваний nonce k в ECDSA негайно розкриває приватний ключ. RFC 6979 усуває цей ризик, детерміністично виводячи k з приватного ключа та хешу повідомлення, гарантуючи, що однакові вхідні дані завжди дають однаковий (безпечний) nonce.

Що таке розширені публічні ключі (xpub) та гаманці в режимі спостереження?

Розширені публічні ключі (xpub) та режим спостереження

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

  • Гаманці в режимі спостереження — моніторинг балансів та генерація адрес для отримання без можливості витрат
  • Платіжні сервери — бекенд інтернет-магазину може генерувати унікальну адресу для кожного клієнта, використовуючи xpub, тоді як приватний ключ залишається офлайн на апаратному гаманці
  • Аудит — надайте свій xpub бухгалтеру для податкової звітності без надання доступу до витрат
  • Багатопристрійні схеми — телефон спостерігає за балансами, тоді як апаратний гаманець виконує підписання

Префікси версій

Різні стандарти BIP використовують різні префікси версій для розширених ключів:

ПублічнийПриватнийСтандартТип адреси
xpubxprvBIP44Legacy P2PKH
ypubyprvBIP49Nested SegWit P2SH-P2WPKH
zpubzprvBIP84Native SegWit P2WPKH
Попередження про приватність Ніколи не публікуйте свій xpub. Хоча він не може витрачати кошти, він розкриває всю історію транзакцій, усі минулі та майбутні адреси, а також загальний баланс для цієї гілки облікового запису. Витік xpub — це повна компрометація приватності.

Яка різниця між моделлю UTXO та моделлю облікових записів?

Модель UTXO vs. модель облікових записів

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

Модель UTXO (Bitcoin, Litecoin, Cardano)

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

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

Модель облікових записів (Ethereum, Solana, BNB Chain)

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

  • Простіша ментальна модель — просто "баланс мінус сума"
  • Не потрібні виходи решти
  • Nonce запобігає атакам повторного відтворення (кожна транзакція повинна мати унікальний, послідовний nonce)
Наслідки для гаманця UTXO-гаманці повинні виконувати вибір монет (обирати, які UTXO витрачати) та управляти адресами решти. Гаманці на основі облікових записів просто зменшують баланс. Саме тому реалізації Bitcoin-гаманців є значно складнішими, ніж реалізації Ethereum-гаманців.

Які існують типи адрес Bitcoin та формати скриптів?

Типи адрес та формати скриптів

Bitcoin підтримує кілька типів адрес, кожен з яких відповідає різному шаблону скрипта, що визначає умови витрат:

P2PKH (Pay-to-Public-Key-Hash)

Оригінальний формат адрес Bitcoin. Скрипт блокування вимагає підпис та публічний ключ, хеш якого відповідає вказаному значенню. Адреси починаються з 1.

P2SH (Pay-to-Script-Hash)

Дозволяє довільні умови витрат, закодовані у скрипті. Відправнику потрібен лише хеш скрипта — повний скрипт розкривається при витрачанні. Це дозволяє реалізувати мультипідпис, часові блокування та інші складні умови. Адреси починаються з 3.

P2WPKH (Native SegWit)

Segregated Witness версії 0. Переміщує дані підпису в окрему структуру "свідка" за межами базової транзакції, зменшуючи ефективний розмір і, відповідно, комісію. Адреси використовують кодування Bech32 і починаються з bc1q.

P2TR (Taproot)

Найновіший тип адрес (SegWit v1), що поєднує підписи Schnorr з MAST (Merkelized Abstract Syntax Trees). Вихід P2TR може бути витрачений або через key path (простий підпис Schnorr), або через script path (розкриває лише виконану гілку дерева скриптів). Адреси використовують кодування Bech32m і починаються з bc1p.

Рекомендація Для нових гаманців використовуйте адреси Native SegWit (bc1q) або Taproot (bc1p). Вони пропонують найнижчі комісії, найкраще виявлення помилок і підтримуються всіма сучасними програмами гаманців та біржами.

[ ЧАСТІ ЗАПИТАННЯ ]

FAQ

Перевірте свої знання

Пройдіть короткий квіз, щоб перевірити розуміння цього гайду.

Пройти квіз