【发布时间】:2017-11-27 18:20:14
【问题描述】:
Hyperledger Fabric 中链式数据库和状态数据库的主要区别是什么。我很困惑它们是否相同。
【问题讨论】:
标签: hyperledger-fabric hyperledger
Hyperledger Fabric 中链式数据库和状态数据库的主要区别是什么。我很困惑它们是否相同。
【问题讨论】:
标签: hyperledger-fabric hyperledger
Hyperledger Fabric 中有两个“存储”数据的地方:
账本是真正的“区块链”。它是一个基于文件的分类帐,用于存储序列化的块。每个块都有一个或多个事务。每个事务都包含一个读写集,它修改一个或多个键/值对。账本是数据的权威来源,并且是不可变的。
状态数据库保存任何给定键的最后一个已知提交值。它在每个对等方验证并提交事务时填充。状态数据库总是可以通过重新处理分类帐来重建。状态数据库目前有两种选择:嵌入式 LevelDB 或外部 CouchDB。
顺便说一句,如果您熟悉 Hyperledger Fabric 通道,每个通道也有一个单独的分类帐。
【讨论】:
GetHistoryForKey() 查询所有键值的历史记录,谢谢。
链是一个事务日志,结构为散列链接块,其中每个块包含 N 个事务的序列。区块头包括区块交易的哈希,以及前一个区块头的哈希。通过这种方式,账本上的所有交易都被排序并以加密方式链接在一起。
状态数据库只是链的事务日志的索引视图,因此可以随时从链中重新生成。
来源:http://hyperledger-fabric.readthedocs.io/en/release/ledger.html
【讨论】: