NBitcoin и мнемонические стандарты
Я очень новичок в разработке биткойнов, так что прости меня...
Я использую NBitcoin в консольном приложении.Net для генерации мастер-ключа с использованием мнемоники, а затем для получения иерархических ключей. Вот код, который я использую:
Mnemonic mnemo = new Mnemonic(Wordlist.English, WordCount.Twelve);
ExtKey hdroot = mnemo.DeriveExtKey();
var wif = hdroot.GetWif(Network.Main);
var defaultAddress = hdroot.Derive(new KeyPath("m/0/0"));
Вот Мнемоника, которую я получаю в результате, а также открытый адрес, полученный из мастер-ключа с использованием пути "m/0/0":
Мнемоника: сухой коричневый парадный диск, резкий блеск, объятие, жесткий отчет, сгиб, железо
Путь: m / 0/0 /: 1GcchMaHAN1XRQsoi8gPg8TShqzN4sNGvu
Я тестировал воссоздание моих ключей с помощью мнемоники и всегда мог получить те же самые точные ключи, что и ожидалось в моем консольном приложении.
Будучи любопытным, я хотел посмотреть, смогу ли я импортировать эту мнемонику в существующее программное обеспечение кошелька и получить те же ключи. Поскольку в кошельке Исхода используется стандартная мнемоника из двенадцати слов, я запустил ее и сгенерировал свой кошелек, используя ту же мнемонику. Однако ни один из ключей не совпадает! Я экспортировал свой открытый ключ и удостоверился, что это был тот же путь "m/0/0" от мастера. Как видите, это НЕ совпадение:
Экспортированный открытый ключ из Exodus с использованием той же мнемоники:
Мнемоника: сухой коричневый парадный диск, резкий блеск, объятие, жесткий отчет, сгиб, железо
Адрес: 1DMDJ266gxMCJiTcWk5MZFbfxxx4Ss3URN
Путь: м / 0/0
Я также протестировал мнемонику на Jaxx и кошелек Coinomi на Android, и он получил те же ключи, что и Exodus.
Так что я полностью запутался. Единственное, о чем я могу думать, это то, что в этих кошельках отсутствует стандартная энтропия, которая отсутствует в моей реализации?
Мой вопрос: как я могу использовать NBitcoin для создания того же мнемонического стандарта, который используют кошельки, такие как Exodus, Coinomi и Jaxx?
1 ответ
1DMD генерируется путем m/44'/0'/0'/0/0
попробуй это:
Mnemonic mnemo = new Mnemonic("dry brown drive parade drastic shine embrace hard report loan fold iron",Wordlist.English);
ExtKey hdroot = mnemo.DeriveExtKey();
var firstprivkey = hdroot.Derive(new KeyPath("m/44'/0'/0'/0/0"));
var firstpubKey = firstprivkey.Neuter().PubKey;
return firstpubKey.GetAddress(Network.Main).ToString();