Hyperledger Fabric(分类账)

分类账

分类帐是所有状态转换的有序,防篡改记录,状态转换是参与方提交的链码调用(“交易”)的结果,每个交易都会生成一组资产键值对,这些键值对作为创建,更新或删除提交到分类帐。

分类帐由区块链(“链”)组成,用于以块的形式存储不可变的顺序记录,以及状态数据库以维持当前状态。每个通道有一个分类帐,每个对等点为其所属的每个通道维护一个分类帐的副本。

链是一个交易日志,结构为哈希链接区块,其中每个区块包含N个有序交易,区块头部包括区块的交易的哈希,以及前一个区块的头部的哈希。通过这种方式,分类账上的所有交易都按顺序排列并以加密方式链接在一起,换句话说,在不破坏哈希链接的情况下,不可能篡改分类帐数据。最新区块的哈希表示之前的每个交易,从而可以确保所有对等点处于一致且可信的状态。

链存储在对等点文件系统(本地或附加存储)上,有效地支持区块链工作负载的仅附加性质。

状态数据库

分类帐的当前状态数据表示链交易日志中包含的所有键的最新值,由于当前状态表示通道商已知的所有最新键的值,因此有时将其称为世界状态。

链码针对当前状态数据调用执行交易,为了使这些链码交互非常有效,所有键的最新值都存储在状态数据库中。状态数据库只是链的交易日志的索引视图,因此可以随时从链中重新生成。在接受交易之前,状态数据库将在对等点启动时自动恢复(或在需要时生成)。

状态数据库选项包括LevelDB和CouchDB,LevelDB是嵌入在对等点进程中的默认状态数据库,并将链码数据存储为键值对。CouchDB是一个可选的替代外部状态数据库,当你的链码数据建模为JSON时,它提供额外的查询支持,允许对JSON内容进行丰富的查询。有关CouchDB的更多信息,请参阅CouchDB作为状态数据库。

    原文作者:博弈
    原文地址: https://segmentfault.com/a/1190000016201337
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞