gpt4 book ai didi

c# - 将应用程序中的 KeyPath 与 Bip44 钱包的 Wallet32 Keypath 相匹配

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:56 29 4
gpt4 key购买 nike

我有一个应用程序,我在其中创建一个带有密码的 HD 钱包,并将公共(public)主 key 保存到用户的数据库中。

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

在我的应用程序方面,我正在像这样创建键路径(在 c# 中):

KeyPath newKeyPath = new KeyPath("44/0/0/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);

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

我正在使用 C# NBitcoin 库。当我尝试像这样在 keyPath 字符串中添加撇号时:

KeyPath newKeyPath = new KeyPath("44'/0'/0'/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);

然后我收到“无效输入格式”错误。我不确定这些撇号是否必要,但是当我将相同的派生路径输入 Bip32 生成器时,我可以创建相同的公钥。我可以向派生地址发送付款,wallet32 会接收它。

谁能指出我需要使用 NBitcoin 库中的 KeyPath 获得相同结果的正确方向?

最佳答案

如需更及时的回复,请随时在 github 上提问,以便我收到通知。

我的猜测是 44' 意味着 Wallet32 使用的是“硬化 key ”44,而只有 44 意味着您使用的是非硬化 key 44(BIP32 中有更多信息)

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

现在,如果您想让它起作用,请将 key 44' 视为等于 (44u | (1u << 31)),换句话说,44 的第一位为 1 表示它已被强化。

如果你能给我一个例子(Root HD Key + path + Child HD Key),我可以更深入地研究并将其直接实现到 NBitcoin

[更新]

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

您的代码应该可以正常工作,运行 Update-Package NBitcoin 您的解决方案,感谢您指出这一点。

关于c# - 将应用程序中的 KeyPath 与 Bip44 钱包的 Wallet32 Keypath 相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27299204/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com