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();
Другие вопросы по тегам