【问题标题】:Corda 4 - Single Party Transaction Failed to Commit to LedgerCorda 4 - 单方交易未能提交到 Ledger
【发布时间】:2019-07-19 10:19:24
【问题描述】:

在从 Corda 3 升级到 Corda 4 时,我在将状态提交到我们节点的分类帐中时遇到问题,只有一个参与方。单方可以创建一个状态,对其进行公证,但不能在不要求外部第三方的情况下提交到 Corda 4 账本。

Corda 4 产生的错误(Corda 3 没有产生)如下: (1) java.lang.IllegalArgumentException:必须为事务的每个外部参与者提供一个流会话。如果您希望继续使用这个不安全的 API,请为您的 CorDapp 指定小于 4 的目标平台版本。

更具体的上下文:在没有会话的情况下使用 FinalityFlow 会产生“外部各方所需的会话”错误并且无法完成。仅添加一个会话(例如 session = initialFlow(PartyA) )会导致“不应包含本地节点”的错误。

是否有关于此解决方案的解决方法?重要的是(对于我们的用例),单方可以创建状态并修改状态信息,而无需其他方的参与。其他用例(包括多方)源于此用例。非常感谢任何指导。

【问题讨论】:

    标签: corda


    【解决方案1】:

    我认为这里的错误信息很准确。只需更改您在发布期间调用 FinalityFlow 的方式,使其不包含自身的流会话,即

    return subFlow(new FinalityFlow(signedTransaction));
    

    虽然您可能会收到弃用警告,但在这种情况下,请执行以下操作

    return subFlow(FinalityFlow(stx, emptyList())) 
    

    【讨论】:

    • 嗨 Cais,我尝试使用上述方法创建带有自身节点的 Corda txn,但它失败了。你能帮忙吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多