Перейти к основному содержимому

Руководство по инструменту вывода ключей: обозреватель путей BIP-44

Иерархически детерминированные (HD) кошельки лежат в основе современного управления криптовалютными ключами. Из одной seed-фразы HD wallet выводит целое дерево ключей — миллиарды уникальных адресов в разных блокчейнах, и все они восстанавливаются из исходной seed-фразы. Инструмент вывода ключей SafeSeed позволяет визуализировать и исследовать это дерево, понять, как работают пути вывода, и диагностировать проблемы, когда кошельки ведут себя не так, как ожидается.

Попробуйте сейчас

Изучайте пути вывода BIP-44 на safeseed.app/tools/key-derivation/ — полностью на стороне клиента, работает офлайн.

Что такое вывод ключей?

Вывод ключей — это процесс генерации новых криптографических ключей из существующего ключа. В криптовалюте всё начинается с seed-фразы и следует детерминированному алгоритму, определённому BIP-32 (Hierarchical Deterministic Wallets) и организованному BIP-44 (Multi-Account Hierarchy).

Критически важное свойство — детерминированность: одна и та же seed-фраза всегда создаёт одно и то же дерево ключей. Это означает:

  • Вы можете восстановить весь кошелёк только по seed-фразе
  • На нескольких устройствах с одной и той же seed-фразой будут показаны одинаковые адреса
  • После начальной генерации seed случайные элементы не используются

Дерево ключей

Представьте вывод ключей как дерево:

Master Key (root)
├── Purpose 44' (Legacy)
│ ├── Bitcoin (0')
│ │ ├── Account 0'
│ │ │ ├── External (0)
│ │ │ │ ├── Address 0
│ │ │ │ ├── Address 1
│ │ │ │ └── Address 2 ...
│ │ │ └── Internal/Change (1)
│ │ │ ├── Address 0
│ │ │ └── Address 1 ...
│ │ └── Account 1'
│ │ └── ...
│ ├── Ethereum (60')
│ │ └── Account 0'
│ │ └── ...
│ └── Litecoin (2')
│ └── ...
├── Purpose 49' (SegWit)
│ └── ...
├── Purpose 84' (Native SegWit)
│ └── ...
└── Purpose 86' (Taproot)
└── ...

У каждого узла в этом дереве есть и приватный, и публичный ключ. Генератор адресов выводит листовые узлы (отдельные адреса), а инструмент вывода ключей позволяет проверять любой узел всего дерева.

Понимание путей вывода

Путь вывода — это последовательность индексов, описывающая, как перейти от мастер-ключа к конкретному дочернему ключу. Стандартная запись выглядит так:

m / 84' / 0' / 0' / 0 / 0

Разберём это полностью.

Компоненты пути

КомпонентЗначениеПримеры значений
mМастер-ключ (корневой)Всегда m
purpose'Какой стандарт BIP44', 49', 84', 86'
coin_type'Какая криптовалюта0' (BTC), 60' (ETH), 2' (LTC)
account'Разделение аккаунтов0', 1', 2'
changeВнешняя/внутренняя цепь0 (получение), 1 (сдача)
address_indexНомер адреса0, 1, 2, ...

Hardened и обычный вывод

Апостроф (') обозначает hardened-вывод. Это фундаментальное понятие безопасности в HD wallet.

Обычный (non-hardened) вывод (m/0/1/2):

  • Публичный ключ родителя может выводить все публичные ключи потомков
  • Если скомпрометированы дочерний приватный ключ и публичный ключ родителя, можно вычислить приватный ключ родителя
  • Используется для уровней change и address_index

Hardened-вывод (m/0'/1'/2'):

  • Только приватный ключ родителя может выводить дочерние ключи
  • Компрометация дочернего ключа не раскрывает родительский
  • Используется для уровней purpose, coin_type и account

Обоснование с точки зрения безопасности: первые три уровня (purpose', coin_type', account') используют hardened-вывод, создавая защитный барьер. Даже если атакующий получит дочерний приватный ключ на уровне адреса, он не сможет пройти назад через hardened-границу и раскрыть ваш мастер-ключ или ключи других аккаунтов и криптовалют.

Стандартные пути вывода в разных кошельках

Разные кошельки могут использовать разные пути вывода. Ниже справочник по распространённым кошелькам:

WalletПуть BitcoinПуть EthereumПримечание
Ledger Livem/84'/0'/0'/0/xm/44'/60'/0'/0/xПо умолчанию Native SegWit
Trezor Suitem/84'/0'/0'/0/xm/44'/60'/0'/0/xПо умолчанию Native SegWit
Electrumm/84'/0'/0'/0/xN/AПо умолчанию Native SegWit
MetaMaskN/Am/44'/60'/0'/0/xТолько Ethereum
BlueWalletm/84'/0'/0'/0/xN/AПо умолчанию Native SegWit
Exodusm/84'/0'/0'/0/xm/44'/60'/0'/0/xMulti-chain
Trust Walletm/84'/0'/0'/0/xm/44'/60'/0'/0/xMulti-chain
Coinbase Walletm/44'/0'/0'/0/xm/44'/60'/0'/0/xLegacy для BTC
Myceliumm/84'/0'/0'/0/xN/AТолько Bitcoin
Wasabim/84'/0'/0'/0/xN/AОриентирован на приватность

При восстановлении средств критично знать, какой путь использовал исходный кошелёк. Инструмент вывода ключей помогает системно перебрать пути и найти, где находятся ваши ключи.

Пошагово: использование инструмента вывода ключей

Шаг 1: Откройте инструмент

Перейдите на safeseed.app/tools/key-derivation/. Как и все инструменты SafeSeed, он работает полностью в вашем браузере.

Напоминание о безопасности: если вводите seed-фразу от реальных средств, используйте изолированную (air-gapped) машину. См. Руководство по офлайн-использованию.

Шаг 2: Введите seed-фразу

Введите мнемоническую фразу BIP-39 из 12 или 24 слов. При желании укажите passphrase. Инструмент проверит фразу и покажет мастер-seed (512-бит hex), полученный через PBKDF2.

Шаг 3: Просмотрите мастер-ключ

После ввода корректной seed-фразы инструмент покажет информацию о мастер-ключе:

  • Master Private Key (xprv): корневой приватный ключ, из которого выводятся все остальные ключи. Это самые чувствительные данные во всей иерархии ключей.
  • Master Public Key (xpub): соответствующий публичный ключ. Из него можно вывести все дочерние публичные ключи (для non-hardened путей).
  • Master Chain Code: 256-битное значение, используемое вместе с ключом в функции вывода. Chain code добавляет дополнительный уровень непредсказуемости при выводе дочерних ключей.

Шаг 4: Навигация по дереву вывода

Инструмент вывода ключей показывает иерархию ключей как интерактивное дерево. Вы можете:

  1. Нажимать на узлы дерева, чтобы раскрывать их и видеть дочерние ключи
  2. Вводить собственный путь в поле пути (например, m/84'/0'/0'/0/0)
  3. Переключать отображение приватных и публичных ключей
  4. Копировать любой ключ или путь для использования в других инструментах или кошельках

Шаг 5: Проверка конкретного ключа

Когда вы выбираете узел в дереве, инструмент показывает полную информацию по этому ключу:

  • Derivation Path: полный путь от мастер-ключа до этого ключа
  • Private Key: ключ на этом уровне (в расширенном формате и WIF, где применимо)
  • Public Key: соответствующий публичный ключ (compressed)
  • Chain Code: chain code на этом уровне
  • Fingerprint: 4-байтный идентификатор этого ключа (используется при сериализации расширенных ключей)
  • Derived Address: адрес криптовалюты (для ключей листового уровня)

Шаг 6: Изучите разные purpose

Переключайтесь между разными стандартами BIP, чтобы понять, как одна и та же seed-фраза создаёт разные типы адресов:

BIP-44 (Legacy): m/44'/0'/0'/0/0

  • Создаёт Legacy-адреса, начинающиеся с 1
  • Самые высокие комиссии
  • Максимальная совместимость со старыми системами

BIP-49 (SegWit): m/49'/0'/0'/0/0

  • Создаёт SegWit-адреса, начинающиеся с 3
  • Средние комиссии
  • Хорошая совместимость

BIP-84 (Native SegWit): m/84'/0'/0'/0/0

  • Создаёт Native SegWit-адреса, начинающиеся с bc1q
  • Низкие комиссии
  • Стандарт для современных кошельков

BIP-86 (Taproot): m/86'/0'/0'/0/0

  • Создаёт Taproot-адреса, начинающиеся с bc1p
  • Самые низкие комиссии
  • Новейший стандарт, поддерживает продвинутые скрипты

Глубже: как работает вывод BIP-32

Понимание математики вывода ключей не обязательно для использования инструмента, но даёт ценное понимание тем, кто хочет действительно разобраться в безопасности своего кошелька.

Вывод дочернего ключа через HMAC-SHA512

BIP-32 использует HMAC-SHA512 для вывода дочерних ключей. Процесс различается для hardened и обычного вывода:

Обычный вывод дочернего ключа:

HMAC-SHA512(
key = parent_chain_code,
data = parent_public_key || child_index
) → (child_key_data, child_chain_code)

child_private_key = parent_private_key + child_key_data (mod n)

Hardened-вывод дочернего ключа:

HMAC-SHA512(
key = parent_chain_code,
data = 0x00 || parent_private_key || child_index
) → (child_key_data, child_chain_code)

child_private_key = parent_private_key + child_key_data (mod n)

Критическое различие: hardened-вывод использует приватный ключ как вход, а обычный вывод использует публичный ключ. Это значит, что hardened-дочерние ключи нельзя вывести только по публичному ключу родителя.

Сериализация расширенных ключей

Расширенные ключи (xprv/xpub) кодируют несколько частей информации:

ПолеРазмерОписание
Version4 bytesСеть и тип ключа (0488ADE4 для xprv, 0488B21E для xpub)
Depth1 byteСколько уровней от мастер-ключа
Parent fingerprint4 bytesПервые 4 байта хеша родительского ключа
Child index4 bytesКакой это дочерний ключ (с hardened-битом)
Chain code32 bytesChain code
Key data33 bytesПриватный или публичный ключ

Вся структура кодируется в Base58Check, формируя знакомую строку xprv... или xpub.... Другие version bytes дают ypub/zpub для SegWit и Native SegWit соответственно.

Практические применения

Применение 1: диагностика восстановления кошелька

Сценарий: вы восстановили seed-фразу в новом кошельке, но баланс Bitcoin показывает ноль.

Диагностика с помощью инструмента вывода ключей:

  1. Введите seed-фразу в инструмент вывода ключей
  2. Перейдите к m/84'/0'/0'/0/0 (Native SegWit, самый распространённый современный путь)
  3. Запишите адрес и проверьте его в mempool.space
  4. Если баланса нет, попробуйте m/44'/0'/0'/0/0 (Legacy)
  5. Попробуйте m/49'/0'/0'/0/0 (SegWit)
  6. Попробуйте m/86'/0'/0'/0/0 (Taproot)
  7. Если всё ещё нет баланса, попробуйте account 1': m/84'/0'/1'/0/0
  8. Проверьте обе цепи: внешнюю (change=0) и внутреннюю (change=1)

Такой системный перебор показывает, где именно находятся ваши средства в дереве вывода.

Применение 2: понимание watch-only кошельков

Сценарий: вы хотите настроить watch-only кошелёк для отслеживания баланса Bitcoin без раскрытия приватных ключей.

Использование инструмента вывода ключей:

  1. Введите seed-фразу (на air-gapped машине)
  2. Перейдите на уровень account: m/84'/0'/0'
  3. Скопируйте расширенный публичный ключ (zpub) на этом уровне
  4. Импортируйте этот zpub в watch-only кошелёк (например, Electrum, BlueWallet)
  5. Watch-only кошелёк сможет выводить все адреса получения и сдачи ниже этого уровня
  6. Он не сможет выводить приватные ключи или подписывать транзакции

Инструмент вывода ключей точно показывает, какой уровень дерева экспортировать и какая информация содержится в расширенном публичном ключе.

Применение 3: организация нескольких аккаунтов

Сценарий: вы хотите разделить свои запасы Bitcoin на отдельные аккаунты (например, сбережения, трейдинг, бизнес), используя одну seed-фразу.

Использование инструмента вывода ключей:

  1. Account 0: m/84'/0'/0' — личные сбережения
  2. Account 1: m/84'/0'/1' — трейдинг
  3. Account 2: m/84'/0'/2' — бизнес

У каждого аккаунта свой набор адресов и расширенных ключей. Hardened-вывод на уровне account гарантирует, что компрометация ключей одного аккаунта не затрагивает остальные.

Применение 4: исследование ключей между разными сетями

Сценарий: вы хотите понять, как одна seed-фраза создаёт адреса и для Bitcoin, и для Ethereum.

Использование инструмента вывода ключей:

  1. Введите seed-фразу
  2. Перейдите к m/44'/0'/0'/0/0 — это ключ Bitcoin
  3. Перейдите к m/44'/60'/0'/0/0 — это ключ Ethereum
  4. Наблюдение: ключи полностью разные, хотя получены из одной seed-фразы
  5. Уровень coin_type (0' против 60') — место, где деревья расходятся

Это показывает, как иерархия BIP-44 предотвращает пересечения между сетями при сохранении восстановления из одной seed.

Применение 5: проверка поведения аппаратного кошелька

Сценарий: вы хотите убедиться, что аппаратный кошелёк не ошибается в адресах, которыми он управляет.

Использование инструмента вывода ключей:

  1. На air-gapped машине введите seed-фразу, которой инициализировали аппаратный кошелёк
  2. Выведите первые 10 адресов по тому же пути, что использует аппаратный кошелёк
  3. Сравните каждый адрес с тем, что показывает аппаратный кошелёк
  4. Если всё совпадает, аппаратный кошелёк корректно реализует вывод BIP-32/44
  5. Если есть различия, возможны проблема прошивки, другая passphrase или несовпадение пути вывода

Понимание адресов сдачи (change)

Один из самых запутанных аспектов HD wallet для новых пользователей — концепция адресов сдачи. Инструмент вывода ключей помогает прояснить это.

Что такое адреса сдачи?

В Bitcoin (и похожих UTXO-сетях), когда вы тратите с адреса, обычно расходуется весь "unspent transaction output" (UTXO) этого адреса. Если вы хотите отправить 0.5 BTC, а UTXO равен 1.0 BTC, транзакция создаёт два выхода:

  1. 0.5 BTC на адрес получателя
  2. 0.5 BTC (минус комиссия) на адрес сдачи, который контролируете вы

Этот адрес сдачи берётся из внутренней цепи (change = 1) в вашем пути вывода:

  • Адреса получения: m/84'/0'/0'/0/x
  • Адреса сдачи: m/84'/0'/0'/1/x

Просмотр адресов сдачи в инструменте вывода ключей

Перейдите к цепи сдачи, установив компонент change в 1:

PathTypePurpose
m/84'/0'/0'/0/0ExternalПервый адрес получения
m/84'/0'/0'/0/1ExternalВторой адрес получения
m/84'/0'/0'/1/0InternalПервый адрес сдачи
m/84'/0'/0'/1/1InternalВторой адрес сдачи

Понимание адресов сдачи критично для восстановления кошелька. Если сканировать только внешние адреса, можно пропустить средства на адресах сдачи. Инструмент вывода ключей показывает обе цепи.

Типы монет SLIP-44

Уровень coin_type в путях BIP-44 использует зарегистрированные значения из SLIP-44. Вот самые распространённые:

CoinТип SLIP-44Префикс пути
Bitcoin0'm/84'/0'/...
Bitcoin Testnet1'm/84'/1'/...
Litecoin2'm/84'/2'/...
Dogecoin3'm/44'/3'/...
Ethereum60'm/44'/60'/...
Ethereum Classic61'm/44'/61'/...
Bitcoin Cash145'm/44'/145'/...
Stellar148'm/44'/148'/...
Ripple (XRP)144'm/44'/144'/...
Cardano1815'm/1852'/1815'/...
Solana501'm/44'/501'/...
Polkadot354'm/44'/354'/...
Cosmos118'm/44'/118'/...
Tron195'm/44'/195'/...
Avalanche9000'm/44'/9000'/...

Инструмент вывода ключей использует эти зарегистрированные значения при выборе криптовалюты, но вы также можете вручную вводить свои пути.

Полный список см. в Поддерживаемые блокчейны.

Дополнительно: gap limit и обнаружение адресов

Когда кошелёк восстанавливается из seed-фразы, ему нужно определить, какие адреса использовались. Для этого он последовательно сканирует адреса с индекса 0 и проверяет историю транзакций в блокчейне.

Gap limit — это число последовательных неиспользованных адресов, которое кошелёк сканирует перед остановкой. Стандарт BIP-44 рекомендует gap limit = 20. Это означает, что если адреса 0-15 использовались, а 16-35 нет, кошелёк сканирует до адреса 35 (16 + 20 gap) и делает вывод, что дальше использованных адресов нет.

Последствия:

  • Если вы сгенерируете более 20 последовательных адресов в генераторе адресов SafeSeed и будете использовать непоследовательные (например, перескочите с индекса 5 на 30), некоторые кошельки могут не обнаружить более поздние адреса при восстановлении
  • Большинство кошельков позволяет увеличить gap limit в настройках
  • Инструмент вывода ключей помогает понять, какие именно индексы были выведены и потенциально использованы

FAQ

Как связаны BIP-32, BIP-44, BIP-49, BIP-84 и BIP-86?

BIP-32 определяет базовый алгоритм иерархически детерминированного вывода ключей — как получить дочерний ключ из родительского. BIP-44 задаёт стандартную организацию получившегося дерева ключей (purpose/coin/account/change/index). BIP-49, BIP-84 и BIP-86 — это расширения, которые используют тот же алгоритм BIP-32 и структуру BIP-44, но задают разные значения purpose (49, 84, 86) и форматы кодирования адресов (соответственно SegWit, Native SegWit, Taproot).

Могу ли я использовать инструмент вывода ключей, чтобы найти потерянную криптовалюту?

Если у вас правильная seed-фраза, но неизвестен использованный путь вывода, инструмент вывода ключей поможет системно проверить все стандартные пути. Выводите адреса для каждой комбинации путей и проверяйте их в блокчейн-эксплорере. Это самый частый сценарий диагностики восстановления кошелька.

Что practically означает "hardened"-вывод?

Hardened-вывод означает, что дочерний ключ можно вывести только с использованием приватного ключа родителя. На практике это создаёт границу безопасности: если кто-то получает дочерний ключ ниже hardened-узла, он не может пройти назад и раскрыть приватный ключ родителя. Поэтому первые три уровня путей BIP-44 (purpose, coin_type, account) hardened — это предотвращает раскрытие мастер-ключа при компрометации на уровне адреса.

Почему кошелёк показывает zpub вместо xpub?

Префикс (xpub, ypub, zpub) указывает формат адреса, для которого предназначен расширенный публичный ключ. xpub — для Legacy (BIP-44), ypub — для SegWit (BIP-49), zpub — для Native SegWit (BIP-84). Во всех случаях содержится один и тот же тип данных (расширенный публичный ключ с chain code), но отличается version byte, чтобы обозначить ожидаемый формат адреса. Инструмент вывода ключей показывает, какой формат применим на каждом уровне.

Могу ли я выводить ключи Ethereum по путям BIP-84?

Технически ключи можно выводить на любом пути, но по соглашению Ethereum использует BIP-44 (m/44'/60'/...). BIP-84 — это Bitcoin-специфичный стандарт для адресов Native SegWit. Инструмент вывода ключей корректно выводит адреса Ethereum при использовании стандартного пути Ethereum. Нестандартные пути тоже дадут валидные ключи, но ни один кошелёк их не распознает.

Что произойдёт, если я использую неверный индекс account?

Если вы выводили адреса из account 0', а средства находятся в account 1', они не появятся при стандартном сканировании кошельком. Инструмент вывода ключей позволяет переходить по разным индексам account и находить, в каком аккаунте лежат средства. По умолчанию большинство кошельков использует account 0', но некоторые позволяют создавать дополнительные аккаунты.

Как инструмент вывода ключей работает с passphrase?

Passphrase (25-е слово) применяется на начальном этапе вывода seed (BIP-39), до начала любого вывода ключей BIP-32. Другая passphrase создаёт полностью другой мастер-seed, а значит и совершенно другое дерево ключей. Инструмент вывода ключей показывает мастер-seed после применения passphrase, чтобы вы могли убедиться, что работаете с правильным seed.

Есть ли максимальная глубина вывода ключей?

Теоретически BIP-32 поддерживает произвольную глубину вывода, но BIP-44 стандартизует пять уровней (purpose/coin/account/change/index). Глубже пяти уровней — нестандартно и не поддерживается распространёнными кошельками. Инструмент вывода ключей поддерживает стандартные пять уровней и позволяет задавать пользовательские пути для продвинутого анализа.

Связанные руководства