关闭devMode

时间:2018-05-26 07:54:45

标签: corda

在使用我们自己生成的证书(而不是devMode=true中的Corda节点生成的证书)时,我们在使用Corda代码时遇到以下问题。

以下是我们采取的措施:

启动节点。我们收到以下错误:

  

节点启动期间的异常{}       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.jkscordatruststore.jks,则会出现该节点。

查询:

  1. 我们是否需要在上述情况下提供兼容区域网址?
  2. 如果可以,请帮助我们了解配置相同的要求吗?
  3. corda门卫如何发送证书?使用HTTPS / HTTP GET方法?还是其他任何协议?
  4. 您能否解释一下资源目录中cordadevcakeys.jkscordatruststore.jks对节点启动的依赖性,devmode=false&兼容性区域
  5. 您能解释一下网络参数的必要性和结构吗?
  6. 我们无法找到网络参数的正确用法或文档。你能帮忙理解一下吗?
  7. 配置兼容区域与配置网络地图服务不同吗?
  8. 门卫与网络地图不同,门卫是一个离线实体,证书是在带外生成和传播的?这种理解是对的吗?
  9. 网络映射是单个文件还是离散的不同节点信息文件。如果是单个文件,请您分享格式和编码? / network-map / node-info / {hash}中的哈希表示什么?
  10. 我对/ network-map / ack-parameters的使用感到困惑。你能解释一下吗?
  11. https://docs.corda.net/corda-configuration-file.html示例中,compatibilityZoneUrl以方案“https://”提供。这个例子错了吗?
  12. 如何创建网络参数文件?我对文件有所了解。但确切的编码我不知道。该文件是由独立程序创建的吗?谁签了这个?节点操作员是否需要每次手动接受新的网络参数集?我怎么知道/ network-map / network-parameters / {hash}的哈希?
  13. 请参阅我理解的附图。请告诉我理解和过程是否正确。
  14. enter image description here

    1. 您能否指定节点发送证书请求的终点?我看到了以下内容: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吗?

    2. 由于网络地图具有以下结构:

      data class NetworkMap(  
          val nodeInfoHashes: List<SecureHash>,
          val networkParameterHash: SecureHash,
          val parametersUpdate: ParametersUpdate?
      ) 
      

      它不包含nodeinfo。以下是正确的 程序

      1. 节点首先从中获取所有nodeinfo的哈希值 网络地图
      2. 然后,节点逐个下载所有nodeInfo
      3. 您能否解释上传nodeInfo的时间?另外,如果一个 给定节点是第一个节点,网络映射可能为空。请问 节点无法启动,因为网络映射中没有任何内容(因为 没有nodeinfo s)?

1 个答案:

答案 0 :(得分:2)

注意:除了查看这些答案外,您还应该参考:

以下答案:

  1. 是。由于您未提供兼容性区域URL,或者因为无法访问您提供的URL处的服务器而引发此错误消息

  2. 您需要提供一个网络地图服务器,该服务器将节点配置文件中列出的地址作为兼容区域URL进行侦听,并实施以下协议:https://docs.corda.net/network-map.html#http-network-map-protocol

  3. 门卫使用HTTP发送网络地图参数和节点信息,以响应遵守此协议的HTTP GET请求:https://docs.corda.net/network-map.html#http-network-map-protocol。不使用HTTPS,但由于网络参数和节点信息对象已签名,因此无法篡改

  4. 这些.jks文件是开发密钥库,仅在以开发模式运行节点时使用(即devMode=true时)

  5. 此处记录了对网络参数的需求: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

  6. 此处记录了网络参数:https://docs.corda.net/network-map.html#network-parameters

  7. 没有。它们是一回事

  8. 是的,它们是不同的实体。门卫提供节点CA证书,而网络映射用于允许节点发现网络上的其他节点。根网络CA证书在带外传播。然后,节点使用--initial-registration标志(请参阅https://docs.corda.net/permissioning.html#connecting-to-a-compatibility-zone)执行证书签名请求并创建其节点CA证书。然后,节点将在首次启动时创建其身份证书和TLS证书,并将其NodeInfo发送到网络映射

  9. 网络地图是单个文件。它是SignedDataWithCert<NetworkMap>类的序列化实例。网址中的hashSecureHash

  10. SerialisedBytes<NodeInfo>
  11. 如果您使用此处记录的acceptNewNetworkParameters RPC操作,节点将自动处理发送确认:https://docs.corda.net/network-map.html#network-parameters-update-process

  12. 使用HTTPS很好,但可选

  13. network-parameters文件是SignedDataWithCert<NetworkParameters>类的序列化实例。它必须由签署网络映射对象的相同证书(即具有门卫CA角色的实体)签名。是的,节点需要接受新的网络参数 - 请参阅此处的文档:https://docs.corda.net/network-map.html#network-parameters-update-process。您通过请求网络映射对象本身来获取哈希。该对象有一个networkParameterHash字段,这是您需要的哈希值。

  14. 图表略有错误。您需要将GET /network-map请求作为第一步,而不是最后一步。这将提供所需的网络参数哈希

  15. 这是对的。您需要点击/certificate端点

  16. 您描述的程序是正确的。节点在节点启动时上传其nodeInfo。它检查nodeInfo是否已更改,如果已更改,则将新的提交到网络映射。如果节点启动时网络映射当前为空,则节点将始终将其自己的nodeInfo添加到其本地缓存,即使它下载的网络映射不包含它。但是,即使网络映射最初为空,它仍将启动