Sawtooth Lake学习笔记(八)

7. 创世过程

创建创世区块的过程与之前的日记账部分中介绍的标准区块创建的过程不同 。

当使用链上设置(例如在起链时所需的特定共识算法,任何部署专用的配置设置以及任何应用程序专属的交易)来引导新的Sawtooth网络时,需要创世块(区块链的根)。

创世块包含了验证机制从头创建一条链时要处理的一系列批次的列表。这使得应用程序(也称为交易家族)可以只包括自己的批次,而无需知道链创世过程中的详细过程(无需包括链创世需要用到的批次)。

创世过程一般具有以下步骤:

1)      创建一个含有初始区块链交易的创世批次

2)      从创世批次创建创世区块

3)      启动交易处理器

4)      处理创世块

7.1 创建创世批次

sawadm genesis命令将一组批次作为输入,并将它们组合以创建创世批次。这个批次是存放在GenesisData的经protobuf编码的单一批次列表。

将按照与批次列表相同的顺序依次执行创世块中的批次。每一个批次都隐式依赖于前一个。sawadm genesis命令在创建列表时会检查依赖关系,以验证批次的前后顺序正确(如果存在依赖关系的话)。

如果应用程序需要在创世区块中包括一组交易,则它必须提供一种工具以正确的顺序产生GenesisData中的批次清单。如有必要,此工具还应在应用程序的创世批次上下文中显式地管理批次和交易的依赖关系。

以下示例使用sawset proposal create命令创建一批配置PoET共识的交易。接下来,sawadm genesis命令将该批次(连同存在的任何其他批次)组合到创世区块的GenesisData的批次列表中。

当运行sawadm genesis命令时,它在验证组件的数据目录下写入一个genesis.batch文件。

注意:对于使用PoET共识的网络,创始批次中必须包括其他批次。

7.2 创建创世区块

一旦存在创始批次,验证组件将使用以下过程生成创始块。

1. 验证组件启动时,如果满足以下条件,它确定将产生创世块:

·      genesis.batch文件存在

·      目前没有区块被指定作为链头

如果不满足以上任一条件,则验证组件将停止操作。

2.   验证组件将genesis.batch文件中的批次加载到挂起的队列中。

3. 验证组件使用区块创建的标准流程来生成创世区块,但作以下修改:

·      批次的执行顺序严格按照GenesisData列表中的批次顺序执行 。执行程序不会尝试对批次重新排序或删除失败的交易。如果genesis.batch中的任何交易失败,则不会产生任何创始块。验证组件将视此失败为重大错误。

·      验证组件在确认区块有效性时不考虑共识。即可确定块有效性。在开始创世块创建过程时,(默克尔-基数树)的状态为空,因此该区块链尚没有共识算法。所以,创世块中的共识字段为空。

4.   验证组件还将区块链ID(即创世块的签名)写入验证组件数据目录中的文件block-chain-id。区块链ID用于将验证组件中的创始块标记为该区块链的正确创世区块。

7.3 创世块处理

为了完成创世过程并提交创始块,必须运行所有必需的交易处理器。

如果创世块中有任何设置或更改设置的交易,则Sawtooth需要Sawtooth Settings交易处理器 或等效的处理。例如,创世块指定共识引擎和相关设置,因此需要Settings交易处理器来处理与这些设置相关的交易。

提交创世块后,共识设置将存储在状态中。所有后续块均使用配置的共识算法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 三、日记账 日记账是由一系列验证组件子模块组成的集合,这些子模块一起工作以执行批次(batch)和提议区块。这些子...
    HJ很忙阅读 368评论 0 0
  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary阅读 5,558评论 0 4
  • 8.1 简介 挖矿是增加比特币货币供应的一个过程。挖矿同时还保护着比特币系统的安全,防止欺诈交易,避免“双重支付”...
    冉冉升起的沙丁鱼阅读 1,693评论 0 1
  • 【中文版】以太坊白皮书 翻译:少平、 Seven当中本聪在 2009 年 1 月启动比特币区块链时,他同时向世界引...
    __Seven__阅读 4,401评论 0 10
  • 一段时间以来,美韩频频军演,朝鲜试射导弹,朝鲜半岛情势再现波诡云谲。 因为时时关注朝鲜,这让我想起了多年前,我的一...
    关观阅读 482评论 0 4