【问题标题】:Corda V1.0 Notary clusters config issue with GradleGradle 的 Corda V1.0 Notary 集群配置问题
【发布时间】:2017-11-09 19:05:35
【问题描述】:

我使用下面的配置来构建 Notary Cluster 并启动它们。我用这种脚本到V14版本就可以了。但在 V1 中弹出该错误。请帮我检查一下。

task deployNodesRAFT(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {

directory "./build/nodes"
networkMap "C=CH,L=Zurich,O=NotaryService0"

node {
    name "C=CH,L=Zurich,O=NotaryService0"
    advertisedServices = ["corda.notary.validating.raft|C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft"]
    p2pPort 10002
    rpcPort 10003
    notaryNodePort 10001
    cordapps = []
}
node {
    name "C=CH,L=Zurich,O=NotaryService1"
    advertisedServices = ["corda.notary.validating.raft|C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft"]
    p2pPort 10091
    rpcPort 10092
    cordapps = []
    notaryNodePort 10093
    notaryClusterAddresses = ["localhost:10001"]
}
node {
    name "C=CH,L=Zurich,O=NotaryService2"
    advertisedServices = ["corda.notary.validating.raft|C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft"]
    p2pPort 10094
    rpcPort 10095
    cordapps = []
    notaryNodePort 10096
    notaryClusterAddresses = ["localhost:10001"]
}

日志: [错误] 2017-10-17T05:42:31,180Z [main] identity.PersistentIdentityService.verifyAndRegisterIdentity - 名称约束检查失败 [错误] 2017-10-17T05:42:31,181Z [主要] identity.PersistentIdentityService.verifyAndRegisterIdentity - 路径 = [错误] 2017-10-17T05:42:31,181Z [main] identity.PersistentIdentityService.verifyAndRegisterIdentity - CN=Corda 节点根 CA,O=R3,OU=corda,L=London,C=UK [错误] 2017-10-17T05:42:31,182Z [main] identity.PersistentIdentityService.verifyAndRegisterIdentity - CN=Corda Node Intermediate CA,O=R3,OU=corda,L=London,C=UK [错误] 2017-10-17T05:42:31,184Z [main] identity.PersistentIdentityService.verifyAndRegisterIdentity - C=CH,L=Zurich,O=NotaryService0,CN=Corda 客户端 CA 证书 [错误] 2017-10-17T05:42:31,185Z [main] identity.PersistentIdentityService.verifyAndRegisterIdentity - C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft [错误] 2017-10-17T05:42:31,189Z [main] internal.Node.run - 节点启动期间出现异常 rx.exceptions.OnErrorNotImplementedException:名称约束检查失败 在 rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.SafeSubscriber._onError(SafeSubscriber.java:153) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.SafeSubscriber.onError(SafeSubscriber.java:115) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.exceptions.Exceptions.throwOrReport(Exceptions.java:216) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:139) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.Subscribers$5.onNext(Subscribers.java:235) ~[rxjava-1.2.4.jar:1.2.4] 在 net.corda.node.utilities.DatabaseTransactionWrappingSubscriber$onNext$1.invoke(CordaPersistence.kt:159) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.DatabaseTransactionWrappingSubscriber$onNext$1.invoke(CordaPersistence.kt:143) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.DatabaseTransactionWrappingSubscriber$forEachSubscriberWithDbTx$1.invoke(CordaPersistence.kt:150) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.DatabaseTransactionWrappingSubscriber$forEachSubscriberWithDbTx$1.invoke(CordaPersistence.kt:143) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.CordaPersistence.inTopLevelTransaction(CordaPersistence.kt:84) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.CordaPersistence.transaction(CordaPersistence.kt:75) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.CordaPersistence.transaction(CordaPersistence.kt:65) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.DatabaseTransactionWrappingSubscriber.forEachSubscriberWithDbTx(CordaPersistence.kt:148) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.DatabaseTransactionWrappingSubscriber.onNext(CordaPersistence.kt:159) ~[corda-node-1.0.0.jar:?] 在 rx.subjects.PublishSubject$PublishSubjectProducer.onNext(PublishSubject.java:304) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.PublishSubject$PublishSubjectState.onNext(PublishSubject.java:219) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.PublishSubject.onNext(PublishSubject.java:72) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.util.ObserverSubscriber.onNext(ObserverSubscriber.java:34) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.Subscribers$5.onNext(Subscribers.java:235) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.UnicastSubject$State.replay(UnicastSubject.java:295) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.UnicastSubject$State.request(UnicastSubject.java:237) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.Subscriber.setProducer(Subscriber.java:209) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.Subscriber.setProducer(Subscriber.java:205) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.Subscriber.setProducer(Subscriber.java:205) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.UnicastSubject$State.call(UnicastSubject.java:252) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.UnicastSubject$State.call(UnicastSubject.java:115) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.Observable.unsafeSubscribe(Observable.java:10142) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.operators.OnSubscribeDelaySubscriptionOther$1.onCompleted(OnSubscribeDelaySubscriptionOther.java:74) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.operators.OnSubscribeDelaySubscriptionOther$1.onNext(OnSubscribeDelaySubscriptionOther.java:53) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.producers.SingleProducer.request(SingleProducer.java:65) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.Subscriber.setProducer(Subscriber.java:209) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:110) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.operators.OperatorTake$1.onNext(OperatorTake.java:80) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.internal.operators.OnSubscribeFilter$FilterSubscriber.onNext(OnSubscribeFilter.java:76) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.PublishSubject$PublishSubjectProducer.onNext(PublishSubject.java:304) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.PublishSubject$PublishSubjectState.onNext(PublishSubject.java:219) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.PublishSubject.onNext(PublishSubject.java:72) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.observers.SerializedObserver.onNext(SerializedObserver.java:91) ~[rxjava-1.2.4.jar:1.2.4] 在 rx.subjects.SerializedSubject.onNext(SerializedSubject.java:67) ~[rxjava-1.2.4.jar:1.2.4] 在 net.corda.node.utilities.DatabaseTransaction.close(DatabaseTransactionManager.kt:60) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.CordaPersistence.inTopLevelTransaction(CordaPersistence.kt:100) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.CordaPersistence.transaction(CordaPersistence.kt:75) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.utilities.CordaPersistence.transaction(CordaPersistence.kt:65) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.services.network.PersistentNetworkMapCache.addNode(PersistentNetworkMapCache.kt:163) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.internal.AbstractNode.registerWithNetworkMapIfConfigured(AbstractNode.kt:511) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.internal.AbstractNode.start(AbstractNode.kt:220) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.internal.Node.start(Node.kt:312) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.internal.NodeStartup.startNode(NodeStartup.kt:95) ~[corda-node-1.0.0.jar:?] 在 net.corda.node.internal.NodeStartup.run(NodeStartup.kt:74) [corda-node-1.0.0.jar:?] 在 net.corda.node.Corda.main(Corda.kt:11) [corda-node-1.0.0.jar:?] 原因:java.security.cert.CertPathValidatorException:名称约束检查失败

【问题讨论】:

  • 我认为这部分可以生成与其他样本不同的 Notary 集群的 CordX500Name。作为 "C=CH,L=Zurich,O=NotaryService0" ,它不是 (O,L,C)
  • 检查一下,我错过了生成distributedService.jks 的方法,所以将来你有什么方法可以在没有我们自己实现的情况下将其引入内部?

标签: corda


【解决方案1】:

正如您在第二条评论中提到的,节点配置很好,但您尚未生成 distributedService 证书。

要自动生成此证书,请查看此处定义的 Gradle 任务,它会为您创建一个 RAFT 公证人集群:https://github.com/corda/corda/blob/release-V1/samples/notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt。共享证书在第 65 行生成。

【讨论】:

  • 嗨乔尔,谢谢你的帮助。为此> java.security.NoSuchAlgorithmException:找不到为 KeyPairGenerator(提供者:BC)配置的类。 net.i2p.crypto.eddsa.KeyPairGenerator 如何通过构建修复此错误。
  • dependencies { classpath "net.i2p.crypto:eddsa:$eddsa_version" // 构建环境中的 ServiceIdentityGenerator 需要。 } 好的,我明白了
  • 顺便问一下,为什么公证集群节点的名字被改成了 (O,L,C) ,Corda 默认是(C,L,O)
  • 好东西。我相信名称字段可以按您喜欢的任何顺序出现。
  • 嗨 Joel,如果使用 V3.1 corda Notary 示例项目的模板项目,它不会在其折叠 cordapp 中生成合同状态 jar 文件。你有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多