INDY 错误 212 时执行 createPairwise



我正在尝试执行indy-sdk包的createPairwise函数。

它抛出一个 INDY 错误212=>WalletItemNotFound。 (我还执行了createAndStoreMyDid函数(

这是我的代码

let [myDid, myVerkey] = await sdk.createAndStoreMyDid(await indy.wallet.get(), {});
let theirVerkey = await sdk.keyForDid(await indy.pool.get(), await indy.wallet.get(), theirDid);
let meta = JSON.stringify({
theirEndpointDid: theirEndpointDid,
verified: false // Indicates that the owner of the agent has confirmed they want to stay connected with this person.
});
//FIXME: Check to see if pairwise exists
await sdk.createPairwise(await indy.wallet.get(), theirDid, myDid, meta);

有人可以帮助我吗?

在你的代码中,实际上有 2 个地方IndySDK 1.11.1可以抛出212 WalletItemNotFound

1.第一行是:

let theirVerkey = await sdk.keyForDid(await indy.pool.get(), await indy.wallet.get(), theirDid);

IndySDK将首先尝试查看变量theirDid下的DID是否不是存储在钱包中的DID。如果没有,它将尝试在账本上找到这个 DID。如果仍然没有找到,它将抛出WalletItemNotFound。您可以在 IndySDK Rust 代码中查看此行为:

https://github.com/hyperledger/indy-sdk/blob/v1.11.1/libindy/src/commands/did.rs#L331

2.但是,我认为这实际上不是您的情况,并且您有此错误来自

wait sdk.createPairwise(await indy.wallet.get(), theirDid, myDid, meta);

如果你看看这个方法是如何在 Rust 中实现的

https://github.com/hyperledger/indy-sdk/blob/v1.11.1/libindy/src/commands/pairwise.rs#L84

您将看到它正在为您提供的theirDidmyDid调用get_indy_record。因此,如果不先将两个 DID 都存储在钱包中,则无法创建成对记录。您可以通过调用storeTheirDid方法来确保您的钱包包含theirDid。在

sdk.storeTheirDid(wh, {did:'V4SGRU86Z58d6TV7PBUe6f', verkey: 'GJ1SzoWzavQYfNL9XkaJdrQejfztN4XqdsiV4ct3LXKL'} )

拨打此电话后,您将能够毫无问题地在您和他们之间拨打createPairwise

印地SDK版本/缓存说明

我认为您可能正在使用一些旧版本的IndySDK。在 IndySDK1.11.1中,当keyForDid从账本解析某些内容时,它实际上会缓存这些数据,因此您发布的代码实际上对我来说开箱即用,没有错误。

相关内容

  • 没有找到相关文章

最新更新