1. Главная
  2. / BIP39 по-русски
  3. / Путь деривации: что значит m/44'/0'/0'/0/0
Опубликовано

Путь деривации: что значит m/44'/0'/0'/0/0

Путь деривации (derivation path) — это адрес ключа в дереве, которое кошелёк строит из сид-фразы. Запись m/44'/0'/0'/0/0 перечисляет шаги от главного ключа до конкретного приватного ключа и его адреса. Сама фраза путь не хранит: одни и те же 12 или 24 слова по разным путям дают разные адреса, поэтому восстановленный кошелёк иногда показывает ноль. Ниже — что означает каждое число, какие пути используют Bitcoin, Ethereum и другие сети и как увидеть их на тестовой фразе.

Из чего состоит путь m/44'/0'/0'/0/0

Слова мнемонической фразы (обычно из английского списка BIP39: русского в стандарте нет, но на сайте есть словарь списка с переводом) по BIP39 превращаются в 512-битный сид. Из сида по BIP32 получается главный ключ m, и каждый следующий шаг пути выводит дочерний ключ. Значение уровней задаёт BIP44:

УровеньВ примереЧто означает
mmглавный ключ, полученный из сида
purpose'44'схема дерева: номер BIP, по которому оно построено (BIP43)
coin_type'0'монета по реестру SLIP-44: 0 — Bitcoin, 60 — Ethereum
account'0'номер аккаунта (счёта) внутри кошелька, с нуля
change00 — адреса для получения, 1 — адреса для сдачи
address_index0номер адреса: 0, 1, 2…

Значит, m/44'/0'/0'/0/0 — первый адрес получения первого аккаунта Bitcoin, m/44'/0'/0'/0/1 — второй, m/44'/0'/0'/1/0 — первый адрес сдачи, а m/44'/0'/1'/0/0 — первый адрес второго аккаунта. Как слова превращаются в сид, рассказано в статье что такое сид-фраза.

Что значит апостроф

Апостроф отмечает усиленный (hardened) шаг: к номеру прибавляется 2³¹, так что 44' — это индекс 0x8000002C. В программах вместо апострофа пишут h или H: 44h.

Обычные шаги можно вычислить из расширенного публичного ключа родителя (xpub): так кошелёк «только для просмотра» строит адреса, не зная приватных ключей. Но BIP32 предупреждает: xpub вместе с любым приватным ключом из обычной ветки под ним раскрывает приватный ключ родителя. Поэтому уровни до аккаунта включительно усиленные — утечка ключей одного аккаунта не затрагивает главный ключ и другие аккаунты, — а change и index обычные, чтобы по xpub аккаунта можно было получать адреса.

Bitcoin: BIP44, BIP49, BIP84 и BIP86

В Bitcoin номер purpose задаёт тип адреса. Ниже — первые адреса для публичной тестовой фразы abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about без парольной фразы. Это официальные тестовые векторы SLIP-132 и BIP86; не отправляйте на эти адреса деньги.

СтандартПутьТип адресаНачалоПервый адрес
BIP44m/44'/0'/0'/0/0Legacy (P2PKH)1…1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA
BIP49m/49'/0'/0'/0/0вложенный SegWit (P2WPKH в P2SH)3…37VucYSaXLCAsxYyAPfbSi9eh4iEcbShgf
BIP84m/84'/0'/0'/0/0нативный SegWit (P2WPKH)bc1q…bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
BIP86m/86'/0'/0'/0/0Taproot (P2TR)bc1p…bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr

BIP49, BIP84 и BIP86 намеренно несовместимы с BIP44: кошелёк, который не поддерживает нужный стандарт, такие аккаунты просто не обнаружит. Если старые адреса начинаются с bc1q, а новый кошелёк ищет только по BIP44, баланс будет нулевым.

Ethereum: MetaMask и Ledger считают аккаунты по-разному

Тип монеты Ethereum — 60, но какой номер увеличивать для следующего аккаунта, приложения решают по-своему. MetaMask выводит все аккаунты из ветки m/44'/60'/0'/0 и меняет последнее число. Ledger Wallet (до 2025 года — Ledger Live) меняет номер аккаунта: m/44'/60'/x'/0/0. Старое приложение Ledger для Chrome выводило единственный адрес m/44'/60'/0'/0, а MyEtherWallet и MyCrypto перебирали для Ledger адреса m/44'/60'/0'/x; в MetaMask при подключении Ledger этот путь называется Legacy (MEW/MyCrypto). Адреса для той же тестовой фразы:

АккаунтMetaMaskLedger Wallet
первыйm/44'/60'/0'/0/0: 0x9858EfFD232B4033E47d90003D41EC34EcaEda94тот же путь и адрес
второйm/44'/60'/0'/0/1: 0x6Fac4D18c912343BF86fa7049364Dd4E424Ab9C0m/44'/60'/1'/0/0: 0x78839F6054d7ed13918bAe0473BA31b1Ca9D7265

MetaMask при импорте фразы поддерживает только свой стандартный путь, поэтому второй и следующие аккаунты Ledger в нём не появятся.

Сети на ed25519: только усиленные шаги

Solana, TON, Stellar и некоторые другие сети используют кривую ed25519 и деривацию SLIP-10. Для ed25519 она допускает только усиленные шаги, поэтому апостроф стоит у каждого числа, а вычислить дочерние ключи по публичному ключу родителя нельзя. Кроме того, главный ключ для ed25519 вычисляется по SLIP-10 с другой константой, чем в BIP32 («ed25519 seed» вместо «Bitcoin seed»), так что одинаковый на вид путь даёт в этих сетях другие ключи. В Solana встречаются варианты m/44'/501'/0'/0' и m/44'/501'/0', а консольная утилита solana-keygen по умолчанию выводит ключ по базовому пути m/44'/501'; Phantom при импорте проверяет по 20 адресов на каждом из трёх поддерживаемых путей. Классическая 24-словная фраза TON путей не использует вовсе: ключ из неё вычисляется по собственной схеме TON.

Таблица распространённых путей

Сеть, приложениеТип монетыПуть первого ключаСледующий аккаунт или адрес
Bitcoin, BIP840m/84'/0'/0'/0/0m/84'/0'/0'/0/1
Ethereum, MetaMask60m/44'/60'/0'/0/0m/44'/60'/0'/0/1
Ethereum, Ledger Wallet60m/44'/60'/0'/0/0m/44'/60'/1'/0/0
Ethereum, Legacy (MEW/MyCrypto)60m/44'/60'/0'/0m/44'/60'/0'/1
TRON, библиотека TronWeb195m/44'/195'/0'/0/0зависит от кошелька
Solana501m/44'/501'/0'/0'm/44'/501'/1'/0'
TON, фраза из 12 слов607m/44'/607'/0'm/44'/607'/1'
Stellar (SEP-0005)148m/44'/148'/0'm/44'/148'/1'

Тип монеты 1 зарезервирован за тестовыми сетями всех монет. TRON устроен как Ethereum (та же кривая secp256k1), но из-за другого типа монеты ключи у него свои, а адреса записываются в Base58 и начинаются с T.

xpub, ypub и zpub

Расширенный публичный ключ аккаунта позволяет вычислить все его адреса без приватных ключей: его импортируют в кошельки «только для просмотра». По BIP32 он записывается с префиксом xpub, но тип адресов в нём не указан, поэтому реестр SLIP-132 закрепил для Bitcoin отдельные байты версии:

ПрефиксБайты версииТип адресовСтандарт
xpub0x0488b21eP2PKH или P2SH (1…, 3…)BIP44
ypub0x049d7cb2P2WPKH в P2SH (3…)BIP49
zpub0x04b24746P2WPKH (bc1q…)BIP84
Ypub, Zpub0x0295b43f, 0x02aa7ed3мультиподпись: P2WSH в P2SH и P2WSH—

В тестовой сети им соответствуют tpub, upub и vpub. Для Taproot отдельного префикса нет: BIP86 использует обычный xpub. Отличаются только байты версии, сам ключ тот же: для тестовой фразы конвертер на этом сайте показывает ключ аккаунта BIP84 как xpub6CatWdiZ…, а кошелёк с поддержкой SLIP-132 покажет его как zpub6rFR7y4Q…. Однозначно путь и тип адреса фиксирует дескриптор (BIP380), например wpkh([отпечаток/84h/0h/0h]xpub…/0/*). Не публикуйте xpub: по нему видны все адреса и весь баланс аккаунта.

Почему восстановленный кошелёк показывает ноль

Если фраза принята, а баланс нулевой, кошелёк почти наверняка смотрит не в ту ветку дерева:

  • Тип адреса. Адреса на bc1q обычно означают BIP84, на bc1p — BIP86, на 3 — BIP49. Выберите тот же тип при импорте.
  • Аккаунт. По BIP44 кошелёк ищет аккаунты по порядку и останавливается на первом без транзакций, а в Ethereum номер аккаунта стоит на разных уровнях пути.
  • Сеть. Адрес Ethereum одинаков во всех EVM-сетях, но балансы у них свои; у TRON и Solana собственные ветки дерева.
  • Лимит в 20 адресов. По BIP44 поиск прекращается после 20 неиспользованных адресов подряд (gap limit), и более дальние адреса кошелёк сам не найдёт.
  • Парольная фраза. Другая парольная фраза — другой сид и другое дерево целиком; подробнее — в статье парольная фраза BIP39.

Порядок восстановления описан в статье как восстановить кошелёк по сид-фразе. Если кошелёк не принимает саму фразу, дело не в пути: см. статью неверная сид-фраза.

Как посмотреть пути в конвертере

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

  1. Вставьте тестовую фразу (все 12 слов приведены выше) в поле «Мнемоническая фраза BIP39», парольную фразу не указывайте.
  2. По умолчанию выбраны Bitcoin и вкладка BIP44: в строке «Полный путь» будет m/44'/0'/0'/0, а в первой строке таблицы адресов — m/44'/0'/0'/0/0 и адрес 1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA.
  3. Переключите вкладки BIP49, BIP84 и BIP86: меняется только purpose, а первые адреса становятся 37Vuc…, bc1qcr8… и Taproot-адрес bc1p5cyx…
  4. Нажмите ETH: путь станет m/44'/60'/0'/0, а вторая строка таблицы — второй аккаунт MetaMask.
  5. Впишите 1 в поле «Аккаунт»: первая строка покажет m/44'/60'/1'/0/0, второй аккаунт Ledger Wallet. Список «Внешние / внутренние (сдача)» переключает change между 0 и 1.
  6. На вкладке BIP32 путь задаётся вручную: если он заканчивается обычным числом, конвертер подставляет вместо него номер строки, так что m/44'/60'/0'/0 покажет адреса пути Legacy.

Сети на ed25519 конвертер не показывает: их пути (Solana, Aptos, Sui, Polkadot) приведены на странице генератора приватных ключей. Кнопки быстрого выбора над списком монет сразу выставляют самые частые сочетания: Bitcoin BIP84, BIP86 и BIP44, Ethereum, TRON, Litecoin и Dogecoin.

Частые вопросы

Где узнать путь деривации своего кошелька?

В документации или настройках кошелька: Ledger Wallet, например, показывает путь в расширенных параметрах счёта. Если записей нет, ориентируйтесь на старый адрес: по его началу определяется стандарт Bitcoin, а для Ethereum проверьте варианты MetaMask, Ledger и Legacy.

Можно ли потерять средства, выбрав не тот путь?

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

Нужно ли записывать путь деривации?

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

Чем путь деривации отличается от парольной фразы?

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