在使用我们自己生成的证书(而不是devMode=true
中的Corda节点生成的证书)时,我们在使用Corda代码时遇到以下问题。
以下是我们采取的措施:
cordadevcakeys.jks
和cordatruststore.jks
启动节点。我们收到以下错误:
节点启动期间的异常{} java.lang.IllegalArgumentException:无法找到网络参数文件,兼容区域未配置/不是 到达 at net.corda.node.internal.NetworkParametersReader.retrieveNetworkParameters(NetworkParametersReader.kt:53) 〜[金色 - 淋巴结 - 金色-4.0-SNAPSHOT.jar:?] at net.corda.node.internal.NetworkParametersReader.access $ retrieveNetworkParameters(NetworkParametersReader.kt:17) 〜[金色 - 淋巴结 - 金色-4.0-SNAPSHOT.jar:?] at net.corda.node.internal.NetworkParametersReader $ networkParameters $ 2.invoke(NetworkParametersReader.kt:26) 〜[金色 - 淋巴结 - 金色-4.0-SNAPSHOT.jar:?] 在
现在,如果我们在资源目录中保留cordadevcakeys.jks
和cordatruststore.jks
,则会出现该节点。
查询:
cordadevcakeys.jks
和cordatruststore.jks
对节点启动的依赖性,devmode=false
&兼容性区域您能否指定节点发送证书请求的终点?我看到了以下内容:https://github.com/corda/corda/blob/a3d88f752d964d3768e153be189f196c600c8d7d/docs/source/example-code/src/main/resources/example-node-with-networkservices.conf:
networkServices : {
doormanURL = "https://registration.corda.net"
networkMapURL = "https://cz.corda.net"
}
您能解释一下门卫网址提供的其他端点吗?
是/certificate
吗?
由于网络地图具有以下结构:
data class NetworkMap(
val nodeInfoHashes: List<SecureHash>,
val networkParameterHash: SecureHash,
val parametersUpdate: ParametersUpdate?
)
它不包含nodeinfo
。以下是正确的
程序
nodeinfo
的哈希值
网络地图nodeInfo
您能否解释上传nodeInfo
的时间?另外,如果一个
给定节点是第一个节点,网络映射可能为空。请问
节点无法启动,因为网络映射中没有任何内容(因为
没有nodeinfo
s)?
答案 0 :(得分:2)
注意:除了查看这些答案外,您还应该参考:
以下答案:
是。由于您未提供兼容性区域URL,或者因为无法访问您提供的URL处的服务器而引发此错误消息
您需要提供一个网络地图服务器,该服务器将节点配置文件中列出的地址作为兼容区域URL进行侦听,并实施以下协议:https://docs.corda.net/network-map.html#http-network-map-protocol
门卫使用HTTP发送网络地图参数和节点信息,以响应遵守此协议的HTTP GET请求:https://docs.corda.net/network-map.html#http-network-map-protocol。不使用HTTPS,但由于网络参数和节点信息对象已签名,因此无法篡改
这些.jks
文件是开发密钥库,仅在以开发模式运行节点时使用(即devMode=true
时)
此处记录了对网络参数的需求:https://docs.corda.net/network-map.html#network-parameters。网络参数的结构是以下类的序列化实例:https://github.com/corda/corda/blob/8504b65e7b14a95fc4486c82d1e3e77d1c4e3562/core/src/main/kotlin/net/corda/core/node/NetworkParameters.kt#L27
此处记录了网络参数:https://docs.corda.net/network-map.html#network-parameters
没有。它们是一回事
是的,它们是不同的实体。门卫提供节点CA证书,而网络映射用于允许节点发现网络上的其他节点。根网络CA证书在带外传播。然后,节点使用--initial-registration
标志(请参阅https://docs.corda.net/permissioning.html#connecting-to-a-compatibility-zone)执行证书签名请求并创建其节点CA证书。然后,节点将在首次启动时创建其身份证书和TLS证书,并将其NodeInfo
发送到网络映射
网络地图是单个文件。它是SignedDataWithCert<NetworkMap>
类的序列化实例。网址中的hash
是SecureHash
SerialisedBytes<NodeInfo>
如果您使用此处记录的acceptNewNetworkParameters
RPC操作,节点将自动处理发送确认:https://docs.corda.net/network-map.html#network-parameters-update-process
使用HTTPS很好,但可选
network-parameters文件是SignedDataWithCert<NetworkParameters>
类的序列化实例。它必须由签署网络映射对象的相同证书(即具有门卫CA角色的实体)签名。是的,节点需要接受新的网络参数 - 请参阅此处的文档:https://docs.corda.net/network-map.html#network-parameters-update-process。您通过请求网络映射对象本身来获取哈希。该对象有一个networkParameterHash
字段,这是您需要的哈希值。
图表略有错误。您需要将GET /network-map
请求作为第一步,而不是最后一步。这将提供所需的网络参数哈希
这是对的。您需要点击/certificate
端点
您描述的程序是正确的。节点在节点启动时上传其nodeInfo
。它检查nodeInfo
是否已更改,如果已更改,则将新的提交到网络映射。如果节点启动时网络映射当前为空,则节点将始终将其自己的nodeInfo
添加到其本地缓存,即使它下载的网络映射不包含它。但是,即使网络映射最初为空,它仍将启动