美文网首页区块链研习社
Sawtooth Lake学习笔记(八)

Sawtooth Lake学习笔记(八)

作者: HJ很忙 | 来源:发表于2020-02-23 22:19 被阅读0次

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交易处理器来处理与这些设置相关的交易。

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

相关文章

  • Sawtooth Lake学习笔记(八)

    7.创世过程 创建创世区块的过程与之前的日记账部分中介绍的标准区块创建的过程不同。 当使用链上设置(例如在起链时所...

  • Sawtooth Lake学习笔记(一)

    一、关于分布式账本 分布式账本是区块链的另一种术语。它把交易的数据库(账本)分布存放在所有的网络参与者(也成为成员...

  • Sawtooth Lake学习笔记(二)

    (五)适用以太坊合约的Seth 锯齿湖和以太坊联合项目,Seth,扩展了锯齿湖到以太坊的互操作性。适用Seth的交...

  • Sawtooth Lake学习笔记(六)

    3.为何采用批次 如前所述,批次是系统中发生变化的最小单位。如果一个批次被执行,批次内所有的交易都会按顺序被执行。...

  • Sawtooth Lake学习笔记(七)

    三、日记账 日记账是由一系列验证组件子模块组成的集合,这些子模块一起工作以执行批次(batch)和提议区块。这些子...

  • Sawtooth Lake学习笔记(十一)

    六、 Sawtooth网络 网络层负责Sawtooth网络中验证组件之间的通信,包括执行初始连接,发现成员和消息处...

  • Sawtooth Lake学习笔记(九)

    四、 交易调度 锯齿湖支持交易的串行和并行调度。启动验证组件进程时,可通过命令行参数或在验证组件的配置文件中作为选...

  • Sawtooth Lake学习笔记(十)

    五、REST API Sawtooth提供了REST API(请参阅REST API参考),它允许客户端通过常用的...

  • Sawtooth Lake学习笔记(四)

    二、交易和批次 通过创建和应用交易来对状态进行修改。客户创建一个交易并发送给验证组件。验证组件应用该交易,从而状态...

  • Sawtooth Lake学习笔记(五)

    2.批次数据结构 和交易一样,批次也是采用Protocol Buffesr来做序列化。它也包括数值字节和字符串,两...

网友评论

    本文标题:Sawtooth Lake学习笔记(八)

    本文链接:https://www.haomeiwen.com/subject/xwdeqhtx.html