corda - Corda 节点在首次启动并加入网络时会执行哪些步骤?
问题描述
Corda 节点第一次启动时执行的步骤顺序是什么?
解决方案
从 Corda 3 开始,在第一次启动时,节点会经历四个步骤:
1. 带外获取网络根证书,存放在节点的文件夹下certificates/network-root-truststore.jks
可以使用
--network-root-truststore
标志覆盖此位置如果使用门卫,此根证书将用于验证他们提供的证书,以防止中间人攻击
2.设置节点证书
您在这里有两个选择:
2a:通过使用标志启动节点来针对门卫运行节点
--initial-registration --network-root-truststore-password <trust store password>
(请参阅NodeStartup.registerWithNetwork
):- 创建一个新的节点密钥库
- 向证书签名服务提出证书请求
- 从证书签名服务轮询并下载其证书和相关证书链
- 根据带外获得的根 CA 证书检查证书链
- 将证书链和私钥存储在其节点密钥库中
- 创建信任库
- 将根证书保存在其信任库中
- 创建 SSL 密钥库
- 生成 SSL 密钥对和证书
- 将其 SSL 私钥和证书存储在其 SSL 密钥库中
2b:自己提供证书
无论哪种情况,您的证书都必须满足许可文档中规定的要求。您可以使用它X509Utilities
来创建证书。参见X509UtilitiesTest.kt
示例。
3. 将其信息上传到网络地图(参见AbstractNode.updateNodeInfo
)
- 节点生成自己的签名节点信息文件
- 节点上传自己
nodeInfo
的网络地图
4. 轮询网络以获取网络参数和其他节点(请参阅NetworkMapUpdater.subscribeToNetworkMap
):
- 节点下载网络参数
- 节点下载网络地图
- 对于
nodeInfo
network map中的每一个hash,节点都会下载对应的nodeInfo
并添加到节点的本地缓存中
推荐阅读
- swiftui - 如何在 SwiftUI 中为 TabItem 标签添加高亮显示
- python - 从 Snowball 边缘优化中提取对象
- java - 使用spring webflux第一次调用的结果进行多个异步调用
- jquery - 已选择 PHP/jQuery Country/State 表单字段
- javascript - 从表中删除选定的项目。反应
- javascript - 在 readAsDataURL 中获得“未定义”返回
- macos - 使用 -print0 将 find 的输出存储在变量中
- docker-compose - Traefik 简单的 Apache2 服务器 SSL_ERROR_INTERNAL_ERROR_ALERT
- java - Hamcrest Matchers.containsInAnyOrder 不起作用
- c# - 尝试使用 htmlagility 包识别文本节点