我们正在使用Corda 4和Springboot web服务器构建一个POC。
POC在本地网络中以DEV模式运行。
为POC开发的CorDapp有四个节点-
G 211
三个节点之间的每一个交易都有三个流。以下是三种流动和状态:
我在2021年7月7日执行了前两次流动-
两种流都是成功的
在流2之后,我停止了节点。
第二天,2021年7月8日,我重新启动了节点。
我启动了从“消费者2节点”到“消费者1节点和提供者节点”的流程3。
它失败了
引发
错误:“CollectSignaturesFlow的发起者必须准确地传递签署事务所需的会话。”
然后,我启动了“提供者节点”到“消费者1节点”的流程1。
它也失败了,
引发的
错误:“不知道OU=Bank,O=MyBank,L=Houston,C=U”
问题:
above?
发布于 2021-07-20 11:30:32
由于您使用的是PostgreqSQL数据库,所以当您执行干净部署时,clean命令不会清理postgres数据库,这与h2数据库不同。
理想情况下,在生产系统中,预计您将部署一次cordapp,当然,您可以在需要时升级您的合同、状态和流程,但是您永远不会完全清除数据库。
所以现在发生的事情是,当您第一次部署您的cordapp时,证书是由引导程序工具生成的(您可以在build/节点/PartyA/证书文件夹中找到这些证书),它们也保存在DB中。NodeInfos也保存在构建/节点/PartyA/
当您进行一个干净的生成时,build文件夹会被清除,但是数据库没有被清理,数据库会被新条目破坏,而新条目也包含新条目,并且节点与要使用的条目混淆。
因此,解决方案是,在节点上执行干净部署时,也要在数据库中删除和重新创建模式。
发布于 2021-07-12 16:58:55
在试图最后确定transaction.
谢谢,祝你好运!
发布于 2021-07-19 04:19:25
我发现,在重新启动节点之前,通过重新生成节点信息(),即使在停止并启动节点之后,也能够执行所有流。
用于重新生成节点信息的命令:
java -jar corda.jar clear-network-cache
java -jar corda.jar generate-node-info这些命令是从每个节点的“/build/ node /”文件夹中运行的。
https://stackoverflow.com/questions/68294592
复制相似问题