【问题标题】:NBitcoin and Mnemonic StandardsNBitcoin 和助记符标准
【发布时间】:2017-10-03 18:08:27
【问题描述】:

我对比特币开发很陌生,所以请原谅我......

我在 .Net 控制台应用程序中使用 NBitcoin 使用助记符生成主密钥,然后派生分层密钥。这是我正在使用的代码:

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

我测试了使用助记符重新创建我的密钥,并且始终能够派生与我的控制台应用程序中预期的完全相同的密钥。

出于好奇,我想看看是否可以将此助记词导入现有的钱包软件并获得相同的密钥。由于 Exodus 钱包使用标准的十二字助记符,我启动它并使用相同的助记符生成我的钱包。但是没有一个键匹配!我导出了我的公钥,并确保它与主节点的“m/0/0”路径相同。如您所见,这不是匹配项:

使用相同的助记符从 Exodus 导出的公钥:

助记符:干棕驱车大放光芒拥抱硬报借折铁

地址: 1DMDJ266gxMCJiTcWk5MZFbfxxx4Ss3URN

路径: m/0/0

我还测试了 Jaxx 上的助记符以及 Android 上的 Coinomi 钱包,它派生的密钥与 Exodus 相同。

所以我完全糊涂了。我唯一能想到的是,这些钱包使用的标准熵在我的实现中丢失了?

我的问题是,我如何使用 NBitcoin 创建与 Exodus、Coinomi 和 Jaxx 等钱包相同的助记符标准?

【问题讨论】:

    标签: cryptography bitcoin blockchain nbitcoin


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2014-03-05
      • 2018-02-05
      相关资源
      最近更新 更多