超级账本中的数据存储

Data storage within hyperledger

我开始学习超级账本了。通过使用 composer playground 创建示例应用程序来熟悉它。我的疑问是关于使用 hyperledger 的 去中心化存储。我已经阅读了一些文档,其中提到了:

  • 将数据的哈希值保存在区块链中,确保不可篡改。

  • 通过 base64 字符串将图像保存在区块链中(作为资产)。

有些事情很清楚,但很大一部分仍然不确定。他们是:

  • 区块链中的数据存储在哪里?它在 couchdb 中吗?
  • 假设数据存储在 couchdb 中,并且通过 multipeer 将一个新的对等点添加到通道中,那么这是否意味着所有对等点的 couchdb 都同步了?

任何resources/tutorials提及区块链数据存储、去中心化存储等的内容都会非常有帮助。

谢谢!

  1. 数据存储在区块链的账本中。 Couchdb 只保存状态,可以从账本中刷新。 Couchdb 有助于更快地查询区块链数据。
  2. 是的,所有对等点都将通过八卦拥有相同的块。 Couchdb 只是从账本中读取数据并为自己创建一个状态。

区块链数据,也就是账本,被存储为一个物理文件。 它包含链接块,每个块由一组交易组成。每个状态变化都存储在那里。

相比之下,世界状态只包含每个资产的当前状态,因为这是应用程序所需要的。

世界状态被实现为一个数据库,couchdb 是一个不错的选择,有一个更简单的可用,但在查询能力方面提供的要少得多。

当然,这意味着世界状态可以在任何时间点从账本中轻松地重新创建。

当一个新的点被添加到一个通道时,它自己的世界状态是从账本中创建的。

描述这一切的好书在这里:https://hyperledger-fabric.readthedocs.io/en/release-1.3/ledger/ledger.html

为了进一步澄清,分类账并没有真正存储业务对象,而是存储了关于这些对象的重要 information/facts - 所以这些重要事实的历史记录在分类账中,而这个重要事实的当前价值在世界中state.So 实际对象(关于其事实存储在分类帐和世界状态中的对象)存在于外部数据存储中 - 可以称为某种 'off-chain' 数据。但是我们存储在分类帐中的信息使我们能够了解有关它的事实并找到它。希望这有帮助。