在更改某些分类帐代码并尝试更新由旧部署创建的状态后,重新部署Corda Enterprise应用程序时遇到问题。最初,我遇到由以下TransactionBuilder约束引起的公证问题:
require(notary == this.notary) { "Input state requires notary \"$notary\" which does not match the transaction notary \"${this.notary}\"."
这通过使用NotaryChangeFlow解决。我的用法示例如下:
val inputNotary = inputState.state.notary
if(inputNotary != newNotary) {
subFlow(NotaryChangeFlow(inputState, newNotary))
}
但是,我现在收到错误消息:
java.lang.IllegalArgumentException: Don't know about O=Party, L=Sydney, C=AU
at net.corda.node.services.statemachine.FlowMessagingImpl.sendSessionMessage(FlowMessaging.kt:65) ~[corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.ActionExecutorImpl.executeSendInitial(ActionExecutorImpl.kt:177) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.ActionExecutorImpl.executeAction(ActionExecutorImpl.kt:75) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.MetricActionInterceptor.executeAction(MetricInterceptor.kt:31) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.TransitionExecutorImpl.executeTransition(TransitionExecutorImpl.kt:51) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.HospitalisingInterceptor.executeTransition(HospitalisingInterceptor.kt:54) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.DumpHistoryOnErrorInterceptor.executeTransition(DumpHistoryOnErrorInterceptor.kt:46) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.MetricInterceptor.executeTransition(MetricInterceptor.kt:23) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.FiberDeserializationCheckingInterceptor.executeTransition(FiberDeserializationCheckingInterceptor.kt:50) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEvent(FlowStateMachineImpl.kt:133) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEventsUntilFlowIsResumed(FlowStateMachineImpl.kt:162) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.suspend(FlowStateMachineImpl.kt:396) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowSessionImpl.sendAndReceive(FlowSessionImpl.kt:64) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowSessionImpl.sendAndReceive(FlowSessionImpl.kt:71) [corda-node-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.sendPayloadAndReceiveDataRequest(SendTransactionFlow.kt:81) [corda-core-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.call(SendTransactionFlow.kt:59) [corda-core-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.call(SendTransactionFlow.kt:42) [corda-core-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.getParticipantSignature(AbstractStateReplacementFlow.kt:118) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.collectSignatures(AbstractStateReplacementFlow.kt:102) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:78) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:60) [corda-core-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) [corda-core-3.1.jar:?]
at com.administration.ledger.flow.MemberUpdateFlow$Initiator.call(MemberFlow.kt:104) [administration-ledger-0.1.jar:0.1]
at com.administration.ledger.flow.MemberUpdateFlow$Initiator.call(MemberFlow.kt:80) [administration-ledger-0.1.jar:0.1]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:225) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:51) [corda-node-3.1.jar:?]
at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) [quasar-core-0.7.10-jdk8.jar:0.7.10]
at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) [quasar-core-0.7.10-jdk8.jar:0.7.10]
at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.10-jdk8.jar:0.7.10]
at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.10-jdk8.jar:0.7.10]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.22.Final.jar:4.1.22.Final]
我想知道是否有人在/知道是什么原因之前见过此错误。似乎与引用原始O = Party,L = Sydney,C = AU Party的交易有关,该原始参与者是初始状态创建的参与者。此Flow在Corda OS中工作正常,但在迁移到Enterprise后引起问题。
答案 0 :(得分:1)
您在上面的评论中说:
只需确认./gradlew deployNodes命令是正确的命令 进行更改后重新部署节点
这是不正确的。重新运行deployNodes
将创建具有一组新证书的一组新节点。这就是为什么您会收到java.lang.IllegalArgumentException: Don't know about O=Party, L=Sydney, C=AU
形式的异常的原因。
您应该使用以下过程来更新CorDapp: