HD-кошельки и пути деривации (BIP44)
Содержание
Настраивая криптокошелёк и получая 12-словную seed-фразу, вы с помощью одного бэкапа получаете доступ ко всем аккаунтам, которые кошелёк когда-либо создаст --- на Bitcoin, Ethereum, Solana и любой другой поддерживаемой сети. Механизм, делающий это возможным, называется HD-кошелёк, а адресная система управляется путями деривации.
Это руководство объясняет, как HD-кошельки превращают один seed в неограниченное число ключей, что означает путь деривации вроде m/44'/60'/0'/0/0 и почему правильный путь важен при переходе между кошельками и блокчейнами.
Что такое HD-кошелёк?¶
HD означает Hierarchical Deterministic (иерархический детерминистический). Термин из BIP32 --- спецификации 2012 года, определяющей деривацию дерева криптографических ключей из единого корня.
Иерархический означает организацию ключей в древовидную структуру --- родительский ключ порождает дочерние, те --- внучатые.
Детерминистический означает воспроизводимость. При одном и том же корне (мастер-seed) каждый раз получается одно и то же дерево ключей в любом кошельке, следующем стандарту.
До HD-кошельков каждый новый адрес требовал генерации и резервного копирования отдельного приватного ключа. HD-кошельки устранили эту проблему. Вы делаете бэкап seed один раз, и каждый ключ, который кошелёк выведет в будущем, уже защищён этим бэкапом.
Корень дерева берётся из BIP39 seed-фразы. Мнемоника преобразуется в 512-битный seed через PBKDF2 (как описано в BIP39 простым языком). Этот seed делится на мастер-приватный ключ (256 бит) и мастер-chain-код (256 бит).
Анатомия m/44'/60'/0'/0/0¶
Путь деривации --- адрес в дереве, идентифицирующий конкретный ключ. Он выглядит как файловый путь; каждый сегмент указывает, какой ветке следовать.
m / 44' / 60' / 0' / 0 / 0
│ │ │ │ │ │
│ │ │ │ │ └── Индекс адреса (0 = первый адрес)
│ │ │ │ └────── Сдача (0 = внешний/получение, 1 = внутренний/сдача)
│ │ │ └─────────── Аккаунт (0 = первый аккаунт)
│ │ └───────────────── Тип монеты (60 = Ethereum)
│ └──────────────────────── Назначение (44 = стандарт BIP44)
└──────────────────────────── Мастер-ключ (корень дерева)
Разбор каждого уровня:¶
m --- Мастер-ключ. Каждый путь начинается здесь --- корень, полученный из seed.
44' --- Назначение. Число 44 указывает на стандарт BIP44 для мультиаккаунтных, мультивалютных кошельков. Апостроф --- «усиленная» (hardened) деривация.
60' --- Тип монеты. Каждой криптовалюте SLIP-44 присваивает номер. Ethereum = 60, Bitcoin = 0, Solana = 501.
0' --- Индекс аккаунта. Отдельные кошельки внутри вашего кошелька.
0 --- Уровень сдачи. В UTXO-модели Bitcoin: 0 = внешние (приёмные) адреса, 1 = внутренние (сдача).
0 --- Индекс адреса. Инкрементируется для новых адресов.
BIP44 и типы монет SLIP-44¶
BIP44 стандартизировал структуру пути. SLIP-44 ведёт реестр номеров типов монет. Распространённые назначения:
| Тип монеты | Блокчейн | Стандартный путь |
|---|---|---|
| 0 | Bitcoin | m/44'/0'/0'/0/0 |
| 2 | Litecoin | m/44'/2'/0'/0/0 |
| 60 | Ethereum (и EVM-сети) | m/44'/60'/0'/0/0 |
| 144 | XRP | m/44'/144'/0'/0/0 |
| 195 | Tron | m/44'/195'/0'/0/0 |
| 501 | Solana | m/44'/501'/0'/0' |
| 9006 | Avalanche (C-Chain) | m/44'/60'/0'/0/0 |
Avalanche C-Chain использует тип 60 (Ethereum), так как C-Chain EVM-совместима. То же касается Polygon, Arbitrum, Optimism и Base --- все используют m/44'/60'/0'/0/0, поэтому один Ethereum-адрес валиден на всех этих сетях.
Разные сети, разные пути¶
Пути Bitcoin¶
| Стандарт | Путь | Тип адреса | Префикс |
|---|---|---|---|
| BIP44 | m/44'/0'/0'/0/0 |
Legacy (P2PKH) | 1... |
| BIP49 | m/49'/0'/0'/0/0 |
Nested SegWit (P2SH-P2WPKH) | 3... |
| BIP84 | m/84'/0'/0'/0/0 |
Native SegWit (Bech32) | bc1q... |
| BIP86 | m/86'/0'/0'/0/0 |
Taproot | bc1p... |
Большинство современных Bitcoin-кошельков используют BIP84 (Native SegWit) из-за низких комиссий. Если при восстановлении seed средства не отображаются, кошелёк может сканировать неверный путь.
Пути Solana¶
Solana использует Ed25519 вместо secp256k1. Стандартный путь --- m/44'/501'/0'/0', все уровни усиленные. Разные кошельки Solana используют разные конвенции. Подробнее --- Руководство по генерации Solana-кошелька.
Пошаговая деривация ключей¶
Шаг 1: Мнемоника в seed¶
12-словная мнемоника обрабатывается PBKDF2-HMAC-SHA512 с 2 048 итерациями и солью "mnemonic". Результат --- 512-битный seed.
Шаг 2: Seed в мастер-ключ¶
512-битный seed обрабатывается HMAC-SHA512 с ключом "Bitcoin seed". Левые 256 бит = мастер-приватный ключ, правые 256 бит = мастер-chain-код.
Шаг 3: Мастер-ключ в дочерние ключи¶
На каждом уровне пути выполняется функция деривации дочерних ключей (CKD).
Шаг 4: Приватный ключ в публичный¶
Конечный приватный ключ преобразуется в публичный через умножение на эллиптической кривой.
Шаг 5: Публичный ключ в адрес¶
Публичный ключ хешируется для получения адреса блокчейна. Для Ethereum: Keccak-256, последние 20 байт, префикс 0x. Для Bitcoin: SHA-256, затем RIPEMD-160, затем Base58Check или Bech32.
Весь процесс можно увидеть в действии с помощью Ethereum Address Generator или Bitcoin Address Generator от SafeSeed.
Почему это важно на практике¶
- Восстановление кошелька в другом ПО. Убедитесь, что путь деривации совпадает. Одинаковый seed + другой путь = другие адреса и «пропавшие» средства.
- Доступ к нескольким сетям. Ваша seed-фраза уже покрывает Polygon, Arbitrum и другие EVM-сети --- все используют тип монеты 60 Ethereum.
- Отладка пропавших средств. Переключайтесь между путями BIP44, BIP49 и BIP84 в настройках кошелька.
- Генерация адресов для конкретных целей. Увеличивая индекс аккаунта, вы создаёте логически разделённые кошельки --- всё из одной seed-фразы.
Система путей деривации --- то, что превращает одну seed-фразу в мультичейн мультиаккаунтный кошелёк. Это инфраструктурный слой, делающий современное самостоятельное хранение криптовалют мощным и портативным. Поняв его, вы сможете уверенно переходить между кошельками, сетями и форматами адресов.