首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将应用程序中的KeyPath与Bip44 wallets的Wallet32密钥路径相匹配

将应用程序中的KeyPath与Bip44 wallets的Wallet32密钥路径相匹配
EN

Stack Overflow用户
提问于 2014-12-05 00:36:32
回答 1查看 596关注 0票数 2

我有一个应用程序,我在其中创建了一个带有密码短语的HD钱包,并为用户将公共主密钥保存到数据库中。

然后,我希望用户能够将钱包备份到自己的钱包中,在本例中我使用的是Wallet32。我恢复了Wallet32中的帐户,它使用的密钥路径为m/44'/0'/0'/

在我的应用程序端,我像这样创建密钥路径(在c#中):

代码语言:javascript
复制
KeyPath newKeyPath = new KeyPath("44/0/0/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);

每次购买时,nextDerivsation变量都会递增。在应用程序端创建派生公钥时,它与wallet32中的派生公钥不匹配。因此,如果付款是通过应用程序进行的,Wallet32不会提取它。

我使用的是C# NBitcoin库。当我尝试在keyPath字符串中添加撇号时,如下所示:

代码语言:javascript
复制
KeyPath newKeyPath = new KeyPath("44'/0'/0'/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);

然后我得到一个"invalid input format“错误。我不确定这些撇号是否是必需的,但是当我将相同的派生路径输入到Bip32生成器中时,我就可以创建相同的公钥。我可以将付款发送到派生的地址,然后wallet32会取走它。

谁能给我指出正确的方向,告诉我在NBitcoin库中需要使用什么KeyPath才能获得相同的结果?

EN

回答 1

Stack Overflow用户

发布于 2014-12-24 04:12:58

要获得更及时的响应,请毫不犹豫地在github上询问,这样我就会收到通知。

我的猜测是,44‘表示Wallet32使用的是“强化密钥”44,而44表示您使用的是非强化密钥44 (更多信息请参见BIP32)。

我不知道这样的符号,我可以在NBitcoin中支持它,因为我认为它很有用,但我需要一些测试数据,你能为我生成一些吗?

现在,如果你想让它工作,假设密钥44‘等于(44u | (1u << 31)),换句话说,第一位为1的44表示它是坚固的。

如果你能给我一个(根硬盘密钥+路径+子硬盘密钥)的例子,我可以更深入地研究它,并将其直接实现到NBitcoin中。

更新

在1.0.7.10中实现(https://github.com/NicolasDorier/NBitcoin/commit/ce5b70d6d27d7fc2cedd089bfd1133a6cd490c97)

您的代码应该可以按原样运行,运行NBitcoin -Package来更新您的解决方案,谢谢您指出这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27299204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档