gpt4 book ai didi

corda - 关闭 devMode 后使用自己的证书时出现节点启动问题

转载 作者:行者123 更新时间:2023-12-04 21:04:16 27 4
gpt4 key购买 nike

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

以下是我们所做的步骤:

  • 根据 https://docs.corda.net/permissioning.html 生成的证书
  • 将证书复制到/certificates 目录。
  • 已删除 cordadevcakeys.jkscordatruststore.jks在资源目录

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

    Exception during node startup {} java.lang.IllegalArgumentException: Couldn't find network parameters file and compatibility zone wasn't configured/isn't reachable at net.corda.node.internal.NetworkParametersReader.retrieveNetworkParameters(NetworkParametersReader.kt:53) ~[corda-node-corda-4.0-SNAPSHOT.jar:?] at net.corda.node.internal.NetworkParametersReader.access$retrieveNetworkParameters(NetworkParametersReader.kt:17) ~[corda-node-corda-4.0-SNAPSHOT.jar:?] at net.corda.node.internal.NetworkParametersReader$networkParameters$2.invoke(NetworkParametersReader.kt:26) ~[corda-node-corda-4.0-SNAPSHOT.jar:?] at



    现在,如果我们保留 cordadevcakeys.jkscordatruststore.jks在资源目录中,节点出现。

    查询:
  • 在上述情况下,我们是否需要提供兼容区 url?
  • 如果是这样,您能否帮助我们了解配置相同的要求?
  • corda doorman如何发送证书?使用 HTTPS/HTTP GET 方法?还是任何其他协议(protocol)?
  • 你能解释一下对 cordadevcakeys.jks 的依赖吗?和 cordatruststore.jks在节点启动的资源目录中,devmode=false &兼容区
  • 您能否解释一下网络参数的必要性和结构?
  • 我们无法找到网络参数的正确用途或文档。你能帮忙理解一下吗?
  • 配置兼容区和配置网络 map 服务有区别吗?
  • Doorman 不同于网络 map ,doorman 是离线实体,证书是带外生成和流通的?这种理解对吗?
  • 网络映射是单个文件还是离散的不同节点信息文件。如果是单个文件,能否分享一下格式和编码?/network-map/node-info/{hash} 中的哈希值代表什么?
  • 我对/network-map/ack-parameters 的使用感到困惑。你能解释一下吗?
  • https://docs.corda.net/corda-configuration-file.html示例兼容性ZoneUrl 使用方案“https://”给出。这个例子错了吗?
  • 如何创建网络参数文件?我对文件有所了解。但我不知道确切的编码。这个文件是由独立程序创建的吗?谁签这个?节点运营商每次都需要手动接受新的网络参数集吗?我如何知道/network-map/network-parameters/{hash} 的哈希值?
  • 请看我理解的附图。请让我知道理解和过程是否正确。

  • enter image description here
  • 您能否指定节点发送证书请求的端点?我看到了以下内容: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"
    }

    您能否解释一下门卫 URL 提供的其他端点?
    /certificate ?
  • 由于网络 map 具有以下结构:
    data class NetworkMap(  
    val nodeInfoHashes: List<SecureHash>,
    val networkParameterHash: SecureHash,
    val parametersUpdate: ParametersUpdate?
    )

    它不包含 nodeinfo .以下是对的吗
    程序?
  • 节点首先获取所有 nodeinfo 的哈希值s 从
    网络 map
  • 然后节点下载所有 nodeInfo一个一个

  • 您能否解释一下 nodeInfo上传了吗?此外,如果一个
    给定节点是第一个节点,网络图可能为空。将
    节点无法启动,因为网络映射中没有任何内容(因为
    没有 nodeinfo s)?

    最佳答案

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

  • 此处测试网络 map 服务器实现:https://github.com/corda/corda/blob/24fa695ca0ef72fa851abc5b1630d722f32577ec/testing/node-driver/src/main/kotlin/net/corda/testing/node/internal/network/NetworkMapServer.kt
  • 这里的测试门卫请求处理程序:https://github.com/corda/corda/blob/a3d88f752d964d3768e153be189f196c600c8d7d/node/src/integration-test/kotlin/net/corda/node/utilities/registration/NodeRegistrationTest.kt

  • 下面的答案:
  • 是的。引发此错误消息的原因可能是您没有提供兼容区域 URL,或者是因为无法访问您提供的 URL 上的服务器
  • 您需要提供一个网络 map 服务器,它监听节点配置文件中列出的地址作为兼容区域 URL,并实现以下协议(protocol):https://docs.corda.net/network-map.html#http-network-map-protocol
  • 门卫使用 HTTP 发送网络映射参数和节点信息,以响应遵循此协议(protocol)的 HTTP GET 请求:https://docs.corda.net/network-map.html#http-network-map-protocol .没有使用HTTPS,但是因为网络参数和节点信息对象是签名的,所以不能被篡改
  • 这些.jks文件是开发 keystore ,仅在以开发模式运行节点时使用(即当 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到网络 map
  • 网络 map 是单个文件。它是 SignedDataWithCert<NetworkMap> 的序列化实例类(class)。 hash URL 中的 SecureHashSerialisedBytes<NodeInfo>
  • 如果您使用 acceptNewNetworkParameters,节点将自动处理发送确认。 RPC 操作,记录在这里:https://docs.corda.net/network-map.html#network-parameters-update-process
  • 使用 HTTPS 很好,但可选
  • 网络参数文件是 SignedDataWithCert<NetworkParameters> 的序列化实例。类(class)。它必须由签署网络 map 对象(即具有门卫 CA 角色的实体)的相同证书签署。是的,节点需要接受新的网络参数 - 请参阅此处的文档:https://docs.corda.net/network-map.html#network-parameters-update-process .您可以通过请求网络 map 对象本身来获取哈希。这个对象有一个 networkParameterHash字段,这是您需要的哈希值。
  • 图有点不对。您需要制作 GET /network-map请求是第一步,而不是最后一步。这将提供所需的网络参数散列
  • 这是正确的。您需要点击 /certificate端点
  • 你描述的过程是正确的。节点上传其nodeInfo在节点启动时。它检查它的 nodeInfo已更改,如果已更改,则将新的提交到网络 map 。如果节点启动时网络映射当前为空,则该节点将始终添加自己的 nodeInfo到它的本地缓存,即使它下载的网络 map 不包含它。但是,即使网络映射最初为空
  • ,它仍会启动

    关于corda - 关闭 devMode 后使用自己的证书时出现节点启动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50540618/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com