我们目前正在研究Hyperledger Fabric,从该文档中我们知道可以在组织的某些子集之间建立私有数据收集。在这些组织中的每一个上都会有一个私有状态数据库(又称辅助数据库),据我所知,辅助数据库就像通常采用CouchDB的普通状态数据库一样。
我们的主要要求之一是我们必须在同级的一些子集中分发文件(例如PDF)。每个文件都必须分发并存储在相关对等方,因此不接受像AWS S3这样的集中式存储或其他云存储/服务器存储。由于文件可能很大,因此必须存储物理副本并在链外传播。交易块只能存储这些文档的哈希值。
我的想法是,我们可以利用私有数据收集和辅助DB。物理文件可以存储在侧数据库中(可能以base64string?的形式),并且可以通过Hypersger Fabric中的功能Gossip Protocol(P2P协议)进行分发。文档的哈希值以及其他交易明细可以照常存储在一个块中。由于它们都是Hyperledger Fabric的本机功能,我希望通过Gossip协议传输文件,并且相应块的创建将是同步的。
我的问题是:
我在网上找到的大多数教程中都假定文件可以存储在单个集中存储中,例如云或某种服务器,而我们的要求也要求文件也要分发。我上面描述的想法是否可以接受和可行?我们是区块链的新手,任何建议都值得赞赏!
答案 0 :(得分:1)
以这种方式达到要求是否可行? (在创建新块时将文件分发给不同的对等方)我有点觉得它很hack。
因此,私有数据分发的工作流程是,订购者将仅包含哈希的私有数据事务捆绑在一起,以将数据验证到新块。因此,您不必为此解决问题,因为默认情况下私有数据会提供此功能。数据本身通过八卦数据分发协议在授权对等方之间分发。
这是实现我们想要的好方法吗?我一直在做研究,但找不到类似的实现方式。
是,不是。真是这么说。但这取决于您的文件大小和数量。织物能够提供很高的吞吐量。我会测试一下,看看是否符合我的要求。
另一种方法是变通并使用IPFS(p2p文件系统)。您可以在这里here
了解更多有关该方法的信息。here是一篇文章,讨论如何在链上存储“更大的文件”。也许这也提供了一些建设性的见解。但是请记住,这是一篇较老的文章。
答案 1 :(得分:0)
签出IBM Blockchain Document Store,这是在链上和链下存储任何文档(pdf或其他格式)的实现。已经完成了。
虽然该实现未公开发布,但其用法documentation很大,可能可以传播一些信息