Fundamentals ·

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-фразу в мультичейн мультиаккаунтный кошелёк. Это инфраструктурный слой, делающий современное самостоятельное хранение криптовалют мощным и портативным. Поняв его, вы сможете уверенно переходить между кошельками, сетями и форматами адресов.