我正在尝试进行一项cordapp升级过程,我所做的步骤是: 我使用WhitelistedByZoneAttachmentConstraint作为合同约束
使用deploynodes生成cordapps的第一个版本(在项目的build / nodes下),然后将其复制到另一个文件夹(例如c:/ nodes)中,以避免它被清理,也可以放置新的那里的cordapp版本
我在此版本的cordapp中生成了一些交易和状态
[WARN] 2018-09-11T22:39:04,171Z [Node thread-1]流。[9a483272-0a1e- 43d1-938f-9d123db38eee] .run-被意外的异常{}终止 java.lang.IllegalArgumentException:输入状态需要公证人“ O =公证人,L =伦敦,C = GB”,这与交易公证人不匹配 “ O =公证人,L =伦敦,C = GB”。 在net.corda.core.transactions.TransactionBuilder.addInputState(TransactionBuilder.kt:148) 〜[corda-core-3.2-corda.jar :?] 在com.legal.flows.contract.LegalContractFlow $ Initiator.call(LegalContractFlow.kt:124) 〜[cordapp-0.1.jar :?] 在com.legal.flows.contract.LegalContractFlow $ Initiator.call(LegalContractFlow.kt:47) 〜[cordapp-0.1.jar :?] 在net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.2-corda.jar :?] 在net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.2-corda.jar :?] 在co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092)[quasar-core-0.7.9-jdk8.jar:0.7.9] 在co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788)[quasar-core-0.7.9-jdk8.jar:0.7.9] 在co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.9-jdk8.jar:0.7.9] 在co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.9-jdk8.jar:0.7.9] 在java.util.concurrent.Executors $ RunnableAdapter.call(未知来源)[?: 1.8.0_181] 在java.util.concurrent.FutureTask.run(未知来源)[?: 1.8.0_181] 在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(未知 来源)[?:1.8.0_181] 在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(未知 来源)[?:1.8.0_181] 在java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)[?: 1.8.0_181] 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)[?: 1.8.0_181] 在net.corda.node.utilities.AffinityExecutor $ ServiceAffinityExecutor $ 1 $ thread $ 1.run(AffinityExecutor.kt:62) [corda-node-3.2-corda.jar:?]
我检查了Corda的TransactionBuilder.kt中第148行附近的函数,但是我不确定为什么这两个公证人被标识为不同的公证人,即使它们的名称和身份也相同。有人可以帮忙吗?
open fun addInputState(stateAndRef: StateAndRef<*>): TransactionBuilder {
val notary = stateAndRef.state.notary
require(notary == this.notary) { "Input state requires notary \"$notary\" which does not match the transaction notary \"${this.notary}\"." }
inputs.add(stateAndRef.ref)
inputsWithTransactionState.add(stateAndRef.state)
return this
}