美文网首页Hyperledger Fabric
Hyperledger Fabric Ledger Checkp

Hyperledger Fabric Ledger Checkp

作者: Eliza_0512 | 来源:发表于2019-08-19 10:36 被阅读0次

    原文地址 https://hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#post-v1-validated-ledger-and-peerledger-checkpointing-pruning

    1 VLedger

    1.1 vBlock的形成过程

    Illustration of vBlock
    • VLedger, 只包含有效交易的账本
    • VLedger中的区块我们称为vBlock
    • orderer 节点只负责将打包好的块传给peer节点
    • peer节点收到区块以后对readset的交易记录进行背书策略验证
    • 如果验证通过,一笔交易会被写进writeset;否则被标记为无效交易
    • 最后区块内所有的无效交易会被过滤,只含有有效交易的vBlock被记录到VLedger中

    1.2 vBlock的内容

    • 前一个vBlock的hash值
    • vBlock序号
    • 有效交易的有序列表(An ordered list of all valid transactions committed by the peers since the last vBlock was computed)
    • vBlock原块的hash值(包含无效交易的PeerLedger中的块)

    以上所有信息集中后计算hash作为vBlock的hash值存入VLedger

    2 PeerLedger Checkpoint

    包含无效交易的PeerLedger其实是没有必要永久存储的,但是peer节点不能在形成vBlock后就直接删除对应的PeerLedger中的账本内容。否则当一个新的节点加入网络时,网络中原有节点无法传输PeerLedger中的区块给新节点,让新节点验证vBlock的有效性

    因此Hyperledger Fabric建立了checkout point机制。checkpoint点之前的账本可以用vBlock代替相应PeerLedger中的discarded blocks(checkpoint之前的 discarded block可以被删除,以节省存储空间)

    checkpoint形成机制

    1. 节点将自己形成checkout point的消息广播给其他节点,消息包括
      <CHECKPOINT, blocknohash, blockno, stateHash,peerSig>
    2. 一个节点针对一个<blocknohash, blockno, stateHash>CHECKPOINT消息,只有接收到足够的peer签名才会真正形成一个有效checkpoint (valid checkpoint)
      1. 检查接受到的blockno > latestValidCheckpoint.blockno, 如果是则将本地的valid checkpoint更新到blockno
      2. 将接收到的所有的peer签名作为最新检查点的证据存储
      3. 存储stateHash
      4. (可选) 删除checkpoint之前的PeerLedger中的块(包含无效信息的块)

    checkpoint 有效策略

    • LCVP 本地有效策略,一个节点可以规定自己的checkpoint 通过策略。例如,Alice节点接收到的CHECKPOINT 消息中,只要有Bob签名,Alice就会通过;或者同时有Charlie和Dave的签名,这条Checkpoint消息就合法
    • GCVP 全局有效策略,它是在全局系统粒度上规定的,而不是节点的粒度上。比如,GCVP 也许是这样的:
      • 每个节点信任一个检查点,如果该检查点被 7 个不同的节点确认。
      • 在每个 consenter 同时是 peer 的部署中,其中,可能最多有 f 个 consenter 是拜占庭错误的,那么每个节点可能会信任一个被 f+1 个不同 consenter 确认的 CHECKPOINT 消息。

    最新Issue(To do)

    https://jira.hyperledger.org/browse/FAB-106

    • checkpointed state之前的账本会被存档(archived)
    • writeset被消费后的(已经archived)交易数据可以被删除(保留块结构数据,删除块内交易详细数据)
    • 新的peer加入channel时只从checkpoint state开始加入,而不是genesis block中的state

    相关文章

      网友评论

        本文标题:Hyperledger Fabric Ledger Checkp

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