在使用我们自己生成的证书(而不是的Corda节点生成的证书)的同时提出Corda代码时,我们面临以下问题devMode=true。
以下是我们执行的步骤:
cordadevcakeys.jks并cordatruststore.jks在资源目录中启动节点。我们收到以下错误:
节点启动期间的异常{} java.lang.IllegalArgumentException:无法找到网络参数文件,并且在net.corda.node.internal.NetworkParametersReader.retrieveNetworkParameters(NetworkParametersReader.kt:53)上未配置/无法访问兼容区域〜[corda-node-corda-4.0-SNAPSHOT.jar :?]位于net.corda.node.internal.NetworkParametersReader.access $ retrieveNetworkParameters(NetworkParametersReader.kt:17)〜[corda-node-corda-4.0-SNAPSHOT.jar :?]在net.corda.node.internal.NetworkParametersReader $ networkParameters $ 2.invoke(NetworkParametersReader.kt:26)〜[corda-node-corda-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"
}
Run Code Online (Sandbox Code Playgroud)
您能否解释一下门卫URL所服务的其余端点?是/certificate吗
由于网络图具有以下结构:
data class NetworkMap(
val nodeInfoHashes: List<SecureHash>,
val networkParameterHash: SecureHash,
val parametersUpdate: ParametersUpdate?
)
Run Code Online (Sandbox Code Playgroud)
而且它不包含nodeinfo。以下步骤正确吗?
nodeinfo从网络映射中获取所有的散列nodeInfo一一下载所有的您能否解释nodeInfo上传的时间?同样,如果给定节点是第一个节点,则网络映射可能为空。节点是否会因为网络映射中没有任何内容而启动失败(因为没有nodeinfos)?
注意:除了查看这些答案外,您还应该参考:
\n\n答案如下:
\n\n是的。抛出此错误消息的原因可能是您没有提供兼容区域 URL,或者是因为无法访问您提供的 URL 处的服务器
您需要提供一个网络地图服务器,该服务器侦听节点配置文件中列出的地址作为兼容区域 URL 并实现以下协议: https: //docs.corda.net/network-map.html#http -网络映射协议
门卫使用 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>。hashURL 中的是SecureHashaSerialisedBytes<NodeInfo>
如果您使用 RPC 操作,节点将自动处理发送确认acceptNewNetworkParameters,记录如下: https: //docs.corda.net/network-map.html#network-parameters-update-process
使用 HTTPS 很好,但可选
网络参数文件是该类的序列化实例SignedDataWithCert<NetworkParameters>。它必须由签署网络映射对象的同一证书签署(即具有门卫 CA 角色的实体)。是的,节点需要接受新的网络参数 - 请参阅此处的文档: https: //docs.corda.net/network-map.html#network-parameters-update-process。您可以通过请求网络映射对象本身来获取哈希值。这个对象有一个networkParameterHash字段,就是你需要的哈希值。
图表有点错误。你需要做GET /network-map请求作为第一步,而不是最后一步。这将提供所需的网络参数哈希
这是正确的。你需要点击/certificate终点
您所描述的程序是正确的。节点nodeInfo在节点启动时上传它。它检查其是否nodeInfo已更改,如果已更改,则将新的更改提交到网络映射。如果节点启动时网络映射当前为空,则该节点将始终添加自己的网络映射nodeInfo到其本地缓存中,即使它下载的网络映射不包含该网络映射。但是,即使网络映射最初为空,它仍然会启动