区块链中的什么是账本?_郑州区块链交易软件开发公司

日期:2018-11-12 / 人气: / 来源:区块链交易软件开发资讯

我们在认知到区块链的时候,会接触到一些特定的名词不太明白,那么下面就由智辰网络来为大家讲解分析一下,在区块链中什么是账本!

账本提供了一个可证实的历史记录,它记录了对系统操作期间发生的所有成功交易和所有失败交易。账本由ordering服务生成,是一个完全排序的交易块(失败交易和成功交易)的哈希链。链上的每个节点都持有一份账本,部分ordering服务也可以持有账本。如果是ordering服务持有的账本,我们称为这种账本为orderer服务账本,而节点持有的账本称为节点账本,节点账号和orderer账号的区别在于节点账本上维持了一个位掩码来区分哪些交易是有效的,哪些是无效的。同时账本也允许节点回放所有的交易并且重新构造状态。

    随着系统运行时间越来越长,无效交易也会随之变多,导致节点账本上存放了一堆无效交易,额外的增加了存储空间,如果这个时间点有新的节点加入到系统,在同步有效交易的同时,也会同步一大堆无效的交易,这也会导致新节点的同步时间增长,同时也会导致验证这些交易时间变长。于是,为了减少存储空间和新节点加入系统的时间和成本,fabric引入了有效账本的概念。

 

    所谓的有效账本是指除了状态和账本外,节点持有一个逻辑账本,只包含有有效并且是已提交的交易。这个哈希链是通过过滤账本上的所有有效交易得到。

生成一个有效账本上的有效交易块的过程如下:

当一个交易在变成有效交易块之前会判断该交易是否有效,如果是无效交易,就被剔除,如果是有效交易则加入进一个有效块(vBlock)中。所有的节点都会在本地进行这样的操作,比如通过使用节点账本的位掩码来过滤。一个有效交易块中不能包含无效交易块,所有无效交易都已经被剔除。这种有效交易块(vBlock)的长度是不固定的。每个节点上的有效交易块(vBlock)被连接起来成为一个哈希链,也就成了一个有效账本。有效账本的每个块包含:

  • 前一个有效块的哈希

  • 有效块的编号

  • 从上一个有效交易块生成后到现在该节点提交的所有有效交易的有序列表

  • 在该节点账本中,派生出当前有效交易块的交易块的哈希

所有上述信息都被节点进行哈希索引

 

 

    账本包含有无效交易,虽然这些交易没有记录的必要,但是节点不会简单的就丢弃节点账本上的这些交易块。因此一旦节点账本生成了相关有效节点,就会对节点账本进行删减。也就是说,在这种情况下,如果有一个新节点计入到这个网络,其他节点就不会发送那些被剔除的交易块到这个新的节点上,也不需要新加入的节点去验证他们的有效交易块。那么节点什么时候生成有效账本呢?于是有了检查点机制,检查点机制通过检查点协议让节点知道什么时候生成有效交易块并去剔除无效的交易块。

 

    检查点协议如下:

    节点对每个CHK块周期性地执行检查点,CHK是一个可配置参数。为了初始化一个检查点,节点通过gossip网络广播检查点消息到其他节点,检查点消息为:

<CHECKPOINT,blocknohash,blockno,stateHash,peerSig>

其中blockno 是当前交易块号,blocknohash为当前交易块的哈希,stateHash 为最近状态的哈希,peerSig 节点对检查点消息中其他字段的签名。

 

    节点不停的接收检查点消息,直到有足够多的正确签名信息,可以通过这些信息中的blockno,blocknohash和stateHash建立一个有效的检查点。

 

    对块号为blockno ,带有blocknohash的块创建了一个有效检查点后,节点首先检查blockno是否大于最新有效检查点的blockno,如果是,就把最新有效检查点的blockno改成blockno. 之后,存储由各自节点的签名组成了一个有效的检查点到latestValidCheckpointProof。同时存储stateHash响应的状态到latestValidCheckpointProof。最后可选的是否需要修剪节点账本。

 

作者:区块链交易软件开发


现在致电 155-7740-2464 OR 查看更多联系方式 →