Corda M12.1 中如何从 MockNode 的 vaultService 获取 Contract State?

How to get Contract State from vaultService of MockNode in Corda M12.1?

我已经创建了用于测试 CorDapp 的 MockNetwork 和 MockNodes。 然后我成功地执行了 Flows with State。它帮助我在分类帐上存储状态。

我可以使用以下方法获取以前存储的状态:

mockNode1.rpcOps.vaultAndUpdates().first
        .filterStatesOfType<SsiState>()

但是无法使用 mockNode1 的 vaultService 获取相同的状态:

mockNode1.services.vaultService.track().first.states

mockNode1.vault.track().first.states

可能是什么原因?

解决方案是变基到 Corda M13。在 M12.1 中,新的保险库查询接口(query()track())仅部分实现,因此它没有按预期运行。

或者,如果您希望继续使用 M12.1,则可以改用 mockNode1.services.vaultService.states()。值得注意的是,此方法将被弃用,取而代之的是您最初尝试使用并在此处定义的新接口:https://docs.corda.net/api-vault.html