При всяческих обсуждениях леджера поднимался вопрос как из него вытащить приватники в случае чего, и ответом обычно было, что они без проблем вытаскиваются из сида через bip. Теоретически все так, но я решил проверить на практике эту беспроблемность и как-то она оказывается не такой беспроблемной на самом-то деле
Сразу отмечу, что может быть все сложности, которые я ниже опишу, идут от непонимания фундаментальных принципов работы стандарта BIP, но в моем понимании "без проблем" - это никак не с ковырянием в самых первичных исходниках, не?
Сам леджер у себя на сайте (
https://support.ledgerwallet.com/hc/en-us/articles/115005214529-Advanced-Passphrase-options) для этих целей выводит на следующую страничку -
https://www.ledgerwallet.com/support/bip39-standalone.html, которая вроде как является то ли чуть старой, то ли чуть урезанной онлайн-версией этого -
https://github.com/iancoleman/bip39 - что можно (и нужно) запускать оффлайн.
Ок, начинаем, конечно же с деда - выбираем 24 слова, вводим леджеровский сид, coin - bitcoin и действительно получаем legacy-адреса битка ровно в том порядке, в котором он их выдает. Казалось бы ну вот она простота, можно на этом и остановиться, для всех остальных монет аналогично только нужную монету в списке выбирай и все. Но давайте проверим.
Давайте попробуем восстановить приватники сегвит-адресов битка. Что нужно для этого сделать в конвертере соверешенно не ясно, на сайте леджера соответствующих инструкций тоже вроде нет. Приходится гуглить. Да, в итоге можно нагуглить, что для этого нужно переключиться с режима BIP44 на BIP49, но как-то это уже начинает становиться не очень похоже на "без проблем". Но дальше - больше.
Попробуем восстановить приватники ETH и ETC. В конвертере на сайте леджера ни той, ни другой монеты вообще нет в списке - лол, спасибо
Но в скачанном варианте хоть ETH есть (ETC между делом тоже нет), выбираем его и ... видим совсем другие адреса, не те, что выдает леджер
Можно переключиться на BIP32, но и там не те, а 49 для эфира вообще не подходит. Приееехали... Начинаем разбираться (от простоты уже совсем мало чего осталось), находим решение -
https://support.ledgerwallet.com/hc/en-us/articles/115005197905-Restoring-your-Ethers-ETH-or-ETC-without-a-Ledger-Nano-S - нужно оказывается переключиться на BIP32 и вручную задать нужные Derivation Part. (да, эти Derivation Part можно выцепить, если подключиться леджером к MEW, там они показываеются, но с беспроблемностью все это уже плохо вяжется, и сделать это можно если леджер под рукой, а если его уже нет?)
Между делом, с эфиром без лишних плясок с бубном справляется другой конвертер, от Coinomi -
https://github.com/Coinomi/bip39 - но только и всего, для классика он также дает не тот Derivation Part, который юзает леджер.
Дальше попробуем NEO. Ни в одном из рассмотренных конвертеров его нет, инструкции на сайте леджера какой хоть Derivation Part для него задавать нет, опять гуглить и гуглить. В итоге можно выйти на конвертер, специально созданный под NEO -
https://coranos.github.io/neo/ledger-nano-s/recovery/ и он выдает правильные адреса, алилуйя!
В итоге, конечно, результат достигнут - для всех четырех коинов приватники найдены, но какой ценой? Так ли вы себе представляли этот процесс? Я лично думал, что все это делается для любой крипты в любом подобном конвертере однозначным образом, а все оказалось совсем не так.
Да, для ряда коинов, XRP, DASH (из того что пробовал), например, все конвертится действительно легко и везде правильно. Но у меня закрались серьезные сомнения, что для каких-нибудь других поддерживаемых коинов ситуация не окажется еще хуже, чем с NEO, и найти нужные параметры вообще не выйдет.
Ну и вопрос в связи со всем этим: так есть в природе способ/инструмент, которым можно действительно легко и всегда правильно извлекать приватники из сида леджера для любой из поддерживаемых им валют? Где он?