【问题标题】:Simple PBFT issue简单的 PBFT 问题
【发布时间】:2018-03-07 21:54:27
【问题描述】:

当我使用带有简单验证和 3 个节点 RAFT 的相同代码时,一切正常。但我改为 BFT。报告以下错误。实际上,我只使用一个不消费的 make 作为输入。但不确定为什么报告以下错误。我的代码基于 M14 版本。

[WARN] 2017-09-26T14:01:38,402Z [Node thread] flow.[9c5ea2df-43ef-4ff8-a954-c6b81ca2740f].run - 由于接收异常,流程结束 net.corda.core.flows.NotaryException:来自 Notary 的错误响应 - 事务 0EFBAA4B3FAC43D15EB51CD6F7D352C62AC9C5438F56949C50484D1FE38E0A5A 的一个或多个输入状态已用于另一事务 在 net.corda.node.services.statemachine.FlowStateMachineImpl.erroredEnd(FlowStateMachineImpl.kt:373) ~[corda-node-0.14.0.jar:?] 在 net.corda.node.services.statemachine.FlowStateMachineImpl.waitForLedgerCommit(FlowStateMachineImpl.kt:212) ~[corda-node-0.14.0.jar:?] 在 net.corda.core.flows.FlowLogic.waitForLedgerCommit(FlowLogic.kt:232) ~[corda-core-0.14.0.jar:?] 在 com.legalcontract.flow.LegalContractFlow$Initiator.call(LegalContractFlow.kt:266) ~[kotlin-source-0.1.jar:?] 在 com.legalcontract.flow.LegalContractFlow$Initiator.call(LegalContractFlow.kt:44) ~[kotlin-source-0.1.jar:?] 在 net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:101) [corda-node-0.14.0.jar:?] 在 net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:33) [corda-node-0.14.0.jar:?] 在 co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1067) [quasar-core-0.7.6-jdk8.jar:0.7.6] 在 co.paralleluniverse.fibers.Fiber.exec(Fiber.java:767) [quasar-core-0.7.6-jdk8.jar:0.7.6] 在 co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.6-jdk8.jar:0.7.6] 在 co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.6-jdk8.jar:0.7.6] 在 java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144] 在 java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(未知来源)[?:1.8.0_144] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_144] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_144] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_144] 在 net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:69) [corda-node-0.14.0.jar:?]

【问题讨论】:

  • 顺便说一句,还涉及带有附件的现有文档。
  • I only use one un-consume make as input 是什么意思?
  • 实际上我只使用索引作为输入。我还涉及一个用过的附件。
  • 从错误消息来看,您似乎正在尝试使用相同的输入状态两次。那可能吗?尝试删除节点并重新部署它们,然后确保您只执行单个事务。错误是第一次出现吗?
  • 嗨,乔尔,如果我进行单笔交易,并附上派对的输入和附件,那就没问题了。之后我发回报告此问题的一方报告此错误。似乎是因为附件在 BFT 中被消耗了两次。我将使用 1.0.0 版进行测试。有了 RAFT 就可以了

标签: corda bftask


【解决方案1】:

正如 Eye 在他最后的评论中指出的那样,问题在于流量。您应该始终多次使用相同的输入来处理您的流程。

这将触发公证人的自动拒绝,无论您在公证人集群中达成什么共识。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2011-01-29
    • 2011-10-30
    • 2013-02-17
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多