
«Я импортировал сид-фразу, а баланс нулевой»: что такое пути деривации
Вы вводите свои двенадцать или двадцать четыре слова в новый кошелёк, импорт проходит успешно, а на балансе ноль. Момент неприятный, но в большинстве случаев ничего не потеряно. Слова верные — новый кошелёк просто ищет средства в другом месте.
В этом руководстве объясняется, почему так происходит, как найти, где находятся ваши монеты, и почему сид-фраза SSP сама по себе ведёт себя иначе.
Одна сид-фраза — много кошельков
Фраза восстановления не хранит адреса. Из неё получается мастер-ключ, а от мастер-ключа кошелёк проходит по пути деривации — маршруту по дереву ключей — чтобы дойти до каждого адреса. Измените любой шаг маршрута, и вы попадёте в другой, совершенно корректный и обычно пустой набор адресов. Никакой ошибки не появится, потому что ничего неправильного не произошло.
Путь выглядит так:
m / purpose' / coin_type' / account' / change / index
purpose задаёт стандарт, coin_type — блокчейн, account разделяет счета, change отделяет адреса для получения (0) от адресов сдачи (1), а index нумерует адреса по возрастанию начиная с 0. Подробнее о дереве рассказывает статья о BIP-48.
Обычные причины
Если после импорта баланс нулевой, причина почти всегда в одном из следующих пунктов.
Тип адреса (Bitcoin). Одна и та же сид-фраза даёт четыре разных семейства биткоин-адресов:
- BIP-44,
m/44'/0'/0'— устаревшие (legacy) адреса, начинающиеся с1 - BIP-49,
m/49'/0'/0'— обёрнутый SegWit, начинается с3 - BIP-84,
m/84'/0'/0'— нативный SegWit, начинается сbc1q - BIP-86,
m/86'/0'/0'— Taproot, начинается сbc1p
Если старый кошелёк использовал нативный SegWit, а новый по умолчанию работает с legacy, вы ничего не увидите. Какой вариант выбрать, подскажет префикс одного из старых адресов для получения.
Вариант Ethereum. Большинство Ethereum-кошельков используют m/44'/60'/0'/0/i, увеличивая последнее число для каждого нового адреса. Ledger Live вместо этого увеличивает уровень счёта: m/44'/60'/i'/0/0. Самый первый адрес у обоих совпадает, поэтому расхождение часто остаётся незамеченным, пока вы не начнёте искать второй или третий адрес.
Парольная фраза. Парольная фраза BIP-39 («25-е слово») превращает ту же сид-фразу в совершенно отдельный кошелёк. Если её не ввести или ошибиться хотя бы в одном символе, откроется другой, пустой кошелёк — без всякого предупреждения. В руководстве о плюсах и минусах парольной фразы объясняется, почему это одновременно и сила этой функции, и её опасность.
Индекс счёта. Если в старом кошельке вы пользовались «Счётом 2», ваши средства находятся под account' = 1, а не 0. Многие кошельки восстанавливают только первый счёт, пока вы не добавите остальные.
Лимит разрыва (gap limit). Кошелёк не может проверять индексы бесконечно, поэтому он сканирует адреса по порядку и останавливается после серии неиспользованных — по общепринятому соглашению после 20. Если вы когда-то выдали адрес №35, а адреса с №15 по №34 так и остались неиспользованными, стандартное сканирование остановится раньше. Увеличение лимита разрыва в настройках кошелька, если такая опция есть, обычно помогает найти недостающие монеты.
Как спокойно найти причину
- Не паникуйте и ничего не переводите. Нулевой баланс после импорта почти всегда означает вопрос пути, а не кражу.
- Найдите один адрес, на котором точно были средства — в старой квитанции, истории выводов с биржи или собственных заметках. Проверьте его в обозревателе блоков, чтобы убедиться, что монеты на месте.
- Обратите внимание на формат. Префикс (
1,3,bc1q,bc1p,0x) указывает на семейство адресов; затем выберите такое же в новом кошельке. - Выясните, какой кошелёк создал сид-фразу — в его документации указаны используемые пути.
- Пробуйте индексы счетов, вариант Ledger и лимит разрыва по одному, сравнивая адреса с тем, который вам известен.
- Никогда не вводите сид-фразу на сайте, который обещает «найти» ваши средства. Пользуйтесь только проверенными кошельками, способными работать офлайн.
Почему одна сид-фраза SSP показывает пустой кошелёк
SSP — это мультиподписной кошелёк 2-из-2, и это полностью меняет картину. У SSP Wallet в браузере и у SSP Key на телефоне своя сид-фраза. В коде оба получают свои ключи по BIP-48 — m/48'/coin'/0'/script' — а для Bitcoin тип скрипта — нативный SegWit-мультиподпись (P2WSH), так что счёт находится по пути m/48'/0'/0'/2'. Каждый адрес SSP затем строится из двух публичных ключей, по одному с каждой стороны, объединённых в скрипт 2-из-2. Хранилища EVM и Solana точно так же принимают на вход оба ключа.
Поэтому если импортировать сид-фразу SSP Wallet в обычный кошелёк с одной подписью, он получит адреса с одним ключом, которые SSP никогда не использовал. Они будут пустыми, и это ожидаемо. Ваши монеты находятся на мультиподписных адресах, которые невозможно восстановить из одной сид-фразы: кошельку нужен публичный ключ другой стороны даже для того, чтобы узнать адрес, и обе подписи — чтобы потратить с него средства.
Восстановить SSP можно, только восстановив обе половины в SSP. Восстановите SSP Wallet из его сид-фразы, затем синхронизируйте его с SSP Key, чтобы кошелёк снова получил публичные данные ключа. Если потерян только браузер, SSP Key может вернуть его без сид-фразы — см. восстановление SSP после потери браузера. В статье Восстановление: основы описано, что нужно в каждом сценарии.
Одна особенность SSP, касающаяся сканирования адресов: SSP Wallet не использует сканирование с лимитом разрыва. В каждом блокчейне хранятся добавленные вами адреса — до 20 на блокчейн, — создаваемые по порядку начиная с индекса 0. Если после восстановления не хватает адреса, которым вы пользовались раньше, повторное добавление адресов заново создаст те же адреса в том же порядке.
Честный итог
Сид-фраза — это ключ к дереву, а не к единственному списку адресов. Тип адреса, путь монеты, парольная фраза, индекс счёта и лимит разрыва определяют, на какую ветку смотрит кошелёк, и нулевой баланс после импорта обычно означает не ту ветку, а не пропавшие монеты.
В SSP одна сид-фраза никогда не является всем кошельком. Ваши средства находятся на адресах 2-из-2, построенных из SSP Wallet и SSP Key вместе, поэтому восстановление означает восстановление обеих половин внутри SSP, а не импорт одной сид-фразы куда-то ещё.


