C# 将应用程序中的密钥路径与用于Bip44钱包的Wallet32密钥路径匹配

C# 将应用程序中的密钥路径与用于Bip44钱包的Wallet32密钥路径匹配,c#,bitcoin,C#,Bitcoin,我有一个应用程序,其中我创建了一个带有密码短语的高清钱包,并为用户将公钥保存到数据库中 然后,我希望用户能够将钱包备份到自己的钱包,在这种情况下,我使用的是Wallet32。我恢复Wallet32中的帐户,该帐户使用的密钥路径为m/44'/0'/0'/ 在我的应用程序端,我正在创建这样的密钥路径(在c#中): NEXTDERIVSION变量仅随每次购买而递增。在应用程序端创建派生公钥时,它与wallet32中的派生公钥不匹配。因此,如果通过应用程序进行支付,Wallet32不会提取 我正在使用C

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

然后,我希望用户能够将钱包备份到自己的钱包,在这种情况下,我使用的是Wallet32。我恢复Wallet32中的帐户,该帐户使用的密钥路径为m/44'/0'/0'/

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

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

我正在使用C#NBitcoin图书馆。当我尝试在keyPath字符串中添加撇号时,如下所示:

KeyPath newKeyPath = new KeyPath("44'/0'/0'/0/0" + nextDerivation);
var childKey = pubkey.Derive(newKeyPath);
然后我得到一个“无效输入格式”错误。我不确定这些撇号是否必要,但当我将相同的派生路径输入Bip32生成器时,我可以创建相同的公钥。我可以将付款发送到派生地址,wallet32将其提取


有人能告诉我,为了获得相同的结果,我需要在NBitcoin库中使用什么样的密钥路径,这是正确的方向吗?

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

我的猜测是,44'表示Wallet32使用的是“硬化键”44,而44表示您使用的是非硬化键44(更多信息请参见BIP32)

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

现在,如果你想使它有效,请考虑键44等于(44 U)(1U,我在这里读:实现它),你只需要做一个更新包就可以工作了。

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