6

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

  • 将数据的哈希值保存在区块链中以确保不变性。

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

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

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

任何提及区块链数据存储、去中心化存储等的资源/教程都会非常有帮助。

谢谢!

4

3 回答 3

7

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

相比之下,世界状态只包含应用程序需要的每项资产的当前状态。

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

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

当一个新的对等点被添加到一个通道时,它自己的世界状态是从分类帐中创建的。

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

于 2018-11-05T11:39:50.580 回答
3

为了进一步澄清,分类帐实际上并没有存储业务对象,而是存储有关这些对象的重要信息/事实-因此这些重要事实的历史记录在分类帐中,并且该重要事实的当前值处于世界状态。因此,实际对象(关于哪些事实存储在分类帐和世界状态中的数据)存在于外部数据存储中 - 可以称为“链外”数据。但是我们存储在分类帐中的信息使我们能够了解有关它的事实并定位它。希望这可以帮助。

于 2019-03-12T13:23:00.140 回答
1
  1. 数据存储在区块链分类账中。Couchdb 只保存状态,可以从账本中刷新。Couchdb 有助于更快地查询区块链数据。
  2. 是的,所有对等点都将通过八卦获得相同的块。Couchdb 只是从账本中读取数据并为自己创建一个状态。
于 2018-11-05T10:42:53.933 回答