Hyperledger Fabric 私有数据收集分发大文件

Hyperledger Fabric private data collection to distribute large files

我们目前正在研究 Hyperledger Fabric,从文档中我们知道可以在组织的某些子集之间建立私有数据收集。这些组织中的每一个都会有一个私有状态数据库(又名侧数据库),根据我的理解,侧数据库就像一个通常采用 CouchDB 的正常状态数据库。

我们的主要要求之一是我们必须在部分同行之间分发文件(例如 PDF)。每个文件都必须传播并存储在相关的对等点,因此像 AWS S3 或其他云存储/服务器存储这样的集中存储是不可接受的。由于文件可能很大,因此必须存储物理副本并在链下传播。交易块可能只存储这些文档的哈希值。

我的想法是可以利用私有数据收集和side DB。物理文件可以存储在侧数据库中(可能以 base64string 的形式?)并且可以通过八卦协议(一种 P2P 协议)分发,这是 Hyperledger Fabric 中的一个特性。文档的哈希值以及其他交易细节可以像往常一样存储在一个块中。由于它们都是 Hyperledger Fabric 的原生功能,我希望通过 Gossip 协议传输文件和创建相应的块将是同步的。

我的问题是:

  1. 这种方式是否可以达到要求? (在创建新块时将文件分发给不同的同行)我觉得它有点老套。
  2. 这是实现我们想要的目标的好方法/实践吗?我一直在做研究,但找不到与此类似的任何实现。

我在网上找到的大部分教程都预先假设文件可以存储在单个集中存储中,例如云或某种服务器,而我们的要求也需要文件的分发。我的上述想法是否可以接受和可行?我们是区块链的新手,欢迎任何建议!

Is this way feasible to achieve the requirement? (Distribution of the files to different peers while creating a new block) I kinda feel like it is hacky.

所以私有数据分发的工作流程是排序节点将仅包含哈希的私有数据交易打包到一个新的区块中。所以你不必为此做一个解决方法,因为私有数据默认提供这个。数据本身通过八卦数据传播协议在授权的对等点之间分发。

Is this a good way / practice to achieve what we want? I have been doing research but I cannot find any implementation similar to this.

是也不是。不好意思这么说。但这取决于您的文件大小和数量。 Fabric 能够提供非常高的吞吐量。我会测试一下,看看它是否符合我的要求。

另一种方法是变通并使用 IPFS(一种 p2p 文件系统)。您可以在此处阅读有关该方法的更多信息 here

here是一篇讨论在链上存储'larger files'的文章。也许这也提供了一些建设性的见解。但请记住,这是一篇较旧的文章。

查看IBM Blockchain Document Store,它是在链上和链下存储任何文档(pdf 或其他格式)的实现。已经完成了。

虽然该实现并未公开,但其用途广泛 documentation,可能可以从中传播一些信息