Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Corda 在网络中部署默认公证人节点的正确配置是什么?_Corda - Fatal编程技术网

Corda 在网络中部署默认公证人节点的正确配置是什么?

Corda 在网络中部署默认公证人节点的正确配置是什么?,corda,Corda,我使用两台不同的机器部署corda网络:在第一台机器中,我使用以下配置部署公证人和oracle服务: 公证人 myLegalName="O=Notary,L=London,C=GB" keyStorePassword : "cordacadevpass" trustStorePassword : "trustpass" p2pAddress="machine-ip1:10004" notary : { validating : false } devMode : true myLega

我使用两台不同的机器部署corda网络:在第一台机器中,我使用以下配置部署公证人和oracle服务:

公证人

myLegalName="O=Notary,L=London,C=GB"
keyStorePassword : "cordacadevpass"
trustStorePassword : "trustpass"
p2pAddress="machine-ip1:10004"
notary : {
    validating : false
}
devMode : true
myLegalName="O=Party,L=London,C=GB"
keyStorePassword : "cordacadevpass"
trustStorePassword : "trustpass"
p2pAddress="machine-ip2:10001"
rpcSettings {
    address="0.0.0.0:10002"
    adminAddress="0.0.0.0:10003"
}
rpcUsers=[
    {
        password=test
        permissions=[
            ALL
        ]
        user=user1
    }
]
devMode : true
Oracle

myLegalName="O=Oracle,L=London,C=GB"
keyStorePassword : "cordacadevpass"
trustStorePassword : "trustpass"
p2pAddress="machine-ip1:10001"
rpcSettings {
    address="0.0.0.0:10002"
    adminAddress="0.0.0.0:10003"
}
rpcUsers=[
    {
        password=test
        permissions=[
            ALL
        ]
        user=user1
    }
]
devMode : true
在第二部分中,我将部署以下参与方节点:

聚会

myLegalName="O=Notary,L=London,C=GB"
keyStorePassword : "cordacadevpass"
trustStorePassword : "trustpass"
p2pAddress="machine-ip1:10004"
notary : {
    validating : false
}
devMode : true
myLegalName="O=Party,L=London,C=GB"
keyStorePassword : "cordacadevpass"
trustStorePassword : "trustpass"
p2pAddress="machine-ip2:10001"
rpcSettings {
    address="0.0.0.0:10002"
    adminAddress="0.0.0.0:10003"
}
rpcUsers=[
    {
        password=test
        permissions=[
            ALL
        ]
        user=user1
    }
]
devMode : true
一旦
参与方
启动建立事务的流程,它就无法引发此异常:

java.lang.IllegalStateException: Need to specify a notary for the state, or set a default one on TransactionBuilder 
        at net.corda.core.transactions.TransactionBuilder.addOutputState(TransactionBuilder.kt:172) 
        at net.corda.core.transactions.TransactionBuilder.addOutputState$default(TransactionBuilder.kt:171) 
调用函数是:

override fun call(): SignedTransaction {

    val notary = serviceHub.networkMapCache.getNotary(CordaX500Name("Notary", "London", "GB"))!!

    val issueState = CashOwningState(amount, ourIdentity)
    val issueCommand = Command(
        CashIssueContract.Commands.Issue(),
        issueState.participants.map { it.owningKey })

    val txBuilder = TransactionBuilder(notary).withItems(
        StateAndContract(issueState, CashIssueContract.TEST_CONTRACT_ID),
        issueCommand)

    txBuilder.verify(serviceHub)

    val fullySignedTx = serviceHub.signInitialTransaction(txBuilder)

    return subFlow(FinalityFlow(fullySignedTx, FINALIZING_TX.childProgressTracker()))
}

似乎在网络中找到了
公证人
,但CordApp没有将其识别为公证人

这不是CorDapp不承认公证人的问题。引发此异常的唯一位置是:

通过传递公证人来实例化
TransactionBuilder
时,不会检查被传递方是否实际上是公证人


您必须尝试将输出状态添加到
TransactionBuilder
,而代码中没有其他公证人。

我通过引导网络获得公证人,包括公证人配置文件,该文件位于放置其他配置(oracle和第三方配置)的同一目录中。否则,网络参数将无法正确生成,因为公证人配置文件丢失。那么您确定上面的代码正确吗?可以清楚地找到公证人,因为您检查了
getNotary
是否没有返回
null