区块链 · 数字资产知识 · 行业资讯
文章库关于本站

资料与核验

区块链创世区块包含什么|通道配置块与应用初始状态分别阅读

摘要

初始化资料未必都是一笔业务交易。以Fabric当前通道创建流程和CometBFT v0.38.0文档作对照,辨认配置块、创世文件及应用初始状态各自承担的职责。

区块链 区块高度的科技主题配图

先确认手里的资料究竟是什么

阅读区块链创世区块资料,先确认所用软件和文件类型。一个系统可能提供编码后的初始配置块,另一个系统则以JSON文件描述启动状态。二者都与网络起点有关,却不能只因为文件名含genesis,就认定里面具有相同字段,或都记录了第一笔资产转账。

本文选取两个明确范围作对照:Fabric当前文档中的应用通道创建流程,以及CometBFT固定v0.38.0文档中的genesis.json。这里比较资料职责,不给两套软件制定通用初始化模板,也不从创世记录是否存在推导某个网络已经正常服务。

Fabric先由配置资料生成通道起点

Fabric当前教程说明,创建应用通道不再先建立旧式系统通道。configtxgen读取configtx.yaml中的配置,生成随后交给排序节点加入通道使用的创世块。配置文件与生成出的块因此处在不同阶段:前者便于编辑,后者以Fabric可消费的格式保存通道配置。

教程列出的配置内容包括组织、排序节点和通道配置档。只需一位成员生成初始块,其他成员可以通过带外方式取得并检查是否同意其内容。这里的检查对象是通道配置;生成文件成功,不等于排序节点已经全部加入,也不等于应用的业务交易已经提交或获得认可。

区块链私有链的科技主题配图

CometBFT把共识参数与应用状态分栏

CometBFT v0.38.0的使用文档将genesis.json定义为链启动时的初始状态资料。字段分别包括chain_id、initial_height、consensus_params、validators和app_state等。它们不是同一类数据:链标识用于辨认链,共识参数描述相关约束,应用状态则承载应用需要的初始内容。

其中validators列出初始验证者,但文档保留了重要例外:应用可以在InitChain时初始化验证者集合,并完全覆盖文件中提供的集合,因此该字段也可为空。app_state的例子则包括初始代币分配。不能只看到validators列表,就断言它永远等于运行中的验证者集合;也不能把初始分配自动改写成已经发生的一笔市场交易。

交接清单同时保留版本与处理阶段

设一个完全虚构的交接目录,甲栏保存通道配置原稿,乙栏保存据此生成的配置块,丙栏保存另一套应用的创世JSON。三个文件都可以作为初始化资料保存,但不应互相覆盖,也不能仅比较文件名判断它们等价。这份分类是阅读建议,不代表两个框架的文件能够互相导入。

交接时可以记录软件版本、文件格式、对应通道或链、取得来源及处理阶段,再说明哪些内容属于共识配置、哪些属于应用初始状态。本文只阅读官方文档,未生成区块、启动网络或检查真实部署。启动以后的成员调整和业务状态变化还需要各自的后续记录,不能长期用初始文件代替当前状态查询。

← 返回全部文章

延伸阅读 · 相关栏目

区块链基础技术原理数字资产知识资料与核验