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

Глоссарий / Адреса и ключи

Путь деривации

Что такое путь деривации?
Путь деривации представляет собой маршрут по дереву ключей HD-кошелька, записываемый как m/84h/0h/0h/0/0, который указывает программе, какой именно ключ из миллиардов нужно восстановить из вашей сид-фразы.

Определено в BIP-44.

Путь является координатой, а не секретом. Два числа в начале определяют, восстанавливают ли ваши слова адреса, начинающиеся с 1, 3, bc1q или bc1p, потому что BIP-44, BIP-49, BIP-84 и BIP-86 читают одну и ту же фразу по-разному. Записать путь рядом с резервной копией означает разницу между восстановлением, которое находит ваши биткоины, и восстановлением, которое показывает ноль.

Как это работает

Путь читается слева направо, по одному уровню на каждый слэш, и каждый уровень сужает поиск. Буква m в начале обозначает мастер-ключ, сгенерированный из вашей сид-фразы. Все, что после нее, является индексом, а апостроф или h помечает этот индекс как усиленный (hardened).

Первый уровень представляет собой назначение (purpose), и именно он определяет, как выглядят ваши адреса.

СтандартПуть счетаАдреса, которые он создает
BIP-44m/44h/0h/0hlegacy, начинающиеся с 1
BIP-49m/49h/0h/0hвложенный SegWit, начинающиеся с 3
BIP-84m/84h/0h/0hнативный SegWit, начинающиеся с bc1q
BIP-86m/86h/0h/0hTaproot, начинающиеся с bc1p

Второй уровень представляет собой тип монеты, взятый из реестра SLIP-0044, где биткоину соответствует 0, а любой тестовой сети 1. Третий уровень представляет собой номер счета, который позволяет одной сид-фразе содержать личный кошелек на 0h и рабочий кошелек на 1h без общей истории. После этого усиление прекращается: четвертый уровень представляет собой цепочку, 0 для адресов, которые вы выдаете, и 1 для сдачи, а пятый является индексом адреса, который растет по мере получения платежей.

Это разделение на усиленные и обычные уровни сделано намеренно. Поскольку уровень счета усилен, расширенный публичный ключ для m/84h/0h/0h можно экспортировать на смартфон или бухгалтеру, который затем может вывести все адреса получения и сдачи под ним, но не может перейти вбок в другой счет или подняться вверх к мастер-ключу.

Мультиподпись использует собственную ветвь. BIP-48 помещает ключи соподписантов на m/48h/0h/0h/2h для нативного SegWit, где последний усиленный уровень называет тип скрипта, поэтому устройство может отличить счет с одной подписью от счета с мультиподписью до того, как что-либо подпишет.

Почему это важно при покупке биткоина

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

Сбой, который это вызывает, распространен и неизменно пугает. Вы покупаете на бирже, выводите средства на устройство, и биткоины попадают на адреса bc1q под m/84h/0h/0h. Год спустя вы восстанавливаете те же 24 слова в другом приложении, которое по умолчанию использует legacy, и баланс показывает 0,00000000, тогда как обозреватель блоков по-прежнему показывает ваши средства нетронутыми на старом адресе. Ничего не потеряно. Приложение ищет в неверной ветви дерева с четырьмя миллиардами потомков на каждом уровне.

Значения по умолчанию различаются между кошельками, которые рассматривает этот сайт. Приложения Trezor Suite и Ledger Live представляют счета по типу адреса и молча выбирают назначение за вас. Electrum спрашивает, какой тип скрипта вам нужен при восстановлении, и прячет поле пути со свободным вводом за расширенной опцией. Sparrow сканирует несколько стандартных путей одновременно и показывает, в каком из них есть история. Ни один из них не ошибается, и ни один не может угадать, что сделал другой.

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

Восстановление 24 слов в Electrum и ноль на балансе

Восстановление по неверному пути выглядит так. Trezor Model T был настроен с 24 словами, вывод с биржи ушел на его первый адрес нативного SegWit, и теперь устройство лежит в ящике. Месяцы спустя фразу вводят в Electrum на ноутбуке.

Electrum спрашивает тип скрипта перед сканированием. Выберите legacy p2pkh, и он выведет m/44h/0h/0h, покажет адреса, начинающиеся с 1, ничего не найдет и сообщит о пустом кошельке. Биткоины по-прежнему на адресе bc1q, по-прежнему подтверждены и по-прежнему видны любому, у кого есть txid.

Исправление занимает минуту. Восстановите снова, выберите нативный SegWit или откройте расширенное поле деривации и введите m/84'/0'/0' вручную. Electrum просканирует заново, баланс появится, и список адресов начнется с той же строки, которую Trezor показывает на вкладке получения. Если он по-прежнему показывает ноль, а вы знаете, что платежи уходили дальше по ветви, увеличьте лимит разрыва (gap limit) со значения по умолчанию 20, прежде чем предполагать, что что-то пропало.

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

Путь деривации vs дескриптор вывода

Путь говорит где; дескриптор говорит где, что и начиная с какого ключа. Дескриптор wpkh([fingerprint/84h/0h/0h]xpub/0/*) содержит тот же путь, плюс тип скрипта как функцию-обертку, плюс сам расширенный ключ, плюс контрольную сумму, которая ловит ошибочно набранный символ. Передать кому-то путь не сообщает ему ничего о вашем кошельке. Передать ему дескриптор означает передать всю вашу историю адресов и каждый будущий адрес на этой ветви, поэтому один безопасно отправить по электронной почте, а другой нет.

Не путать с

Часто задаваемые вопросы

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

Посмотрите в сведениях об аккаунте или хранилище ключей кошелька: обычно путь указывается рядом с расширенным публичным ключом. Если он не показан, его подсказывает формат адресов: адреса, начинающиеся с 1, относятся к BIP-44, с 3 к BIP-49, bc1q к BIP-84, а bc1p к BIP-86.

В восстановленном кошельке нулевой баланс. Мой биткоин пропал?

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

Влияет ли путь деривации на безопасность моих биткоинов?

Нет. Любой путь ведет к ключам одинаковой стойкости, и выбор влияет только на формат адресов, размер транзакции и на то, какое программное обеспечение сможет найти ваши средства. Пути native SegWit и Taproot дают более дешевые траты, а это вопрос комиссий, а не безопасности.

Читайте далее

Связанные термины

Еще в разделе «Адреса и ключи»

Читать эту страницу на английском