当从Corda 3升级到Corda 4时,我遇到一个问题,即仅一个缔约方就将一个国家提交到我们节点的分类帐中。一个政党可以创建一个州,并进行公证,但不能在不要求外部第三方的情况下向Corda 4分类帐提交承诺。
Corda 4产生的错误(Corda 3未产生)是: (1) java.lang.IllegalArgumentException:必须为事务的每个外部参与者提供一个流会话。如果您希望继续使用此不安全的API,请为您的CorDapp指定小于4的目标平台版本。
更具体的上下文:在没有会话的情况下使用FinalityFlow会产生“外部方所需的会话”错误,并且无法完成。仅添加一个会话(例如session = initialFlow(PartyA))会导致错误消息“不应包含本地节点”。
关于此解决方案是否有解决方法?对于我们的用例而言,重要的是,一个缔约方可以创建一个州并修改州信息,而无需其他方的参与。其他用例(其中包括多方)来自此用例。任何指导都将不胜感激。
答案 0 :(得分:0)
我认为错误消息就在这里。只需更改您在发行过程中调用FinalityFlow的方式,以使其不包含针对自己的流会话,即
return subFlow(new FinalityFlow(signedTransaction));
尽管您可能会收到弃用警告,但在这种情况下,请执行以下操作
return subFlow(FinalityFlow(stx, emptyList()))