NBitcoin并从xpub密钥生成地址

时间:2015-10-26 14:57:03

标签: c# bitcoin

我试图编写一个从已知的xpubkey生成公共比特币地址的算法。我可以在

的blockchain.info找到用于测试的密钥

https://blockchain.info/xpub/xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz

我尝试使用类似的方法在路径0,0,0上生成地址,如下所示:

        var pubkey = new ExtPubKey(Encoding.ASCII.GetBytes("6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz"));
        Console.Writeline(pubkey.Derive(0).Derive(0).Derive(0).PubKey.GetAddress(Network.Main));

但是我没有完全理解某些内容,因为我得到了一个无效的点编码103'在尝试实例化ExtPubKey时。

2 个答案:

答案 0 :(得分:3)

通过https://bitcointalk.org/index.php?topic=1242247.0

var pubkey = ExtPubKey.Parse("xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz");
var newAddress = pubkey.Derive(0).Derive(0).PubKey.GetAddress(Network.Main);
Console.WriteLine(newAddress);

经过测试,生成预期的第一个地址。

答案 1 :(得分:1)

您获得的编码无效,因为您正在尝试编码

“6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz”

而不是

xpub 6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz”

您从一开始就缺少 xpub