我目前正在Hyperledger的一个项目中工作,我想通过在网络节点上分发文档文件并将其取回来将pdf和docs之类的文件上传到hyperledger区块链中。请帮助我如何做以及应该如何批准。如果无法在Hyperledger中实现,那么请让我知道可以通过哪个区块链实现。预先感谢。
答案 0 :(得分:4)
作为一般规则,区块链技术不适合存储大型文档。区块链需要太多的过程和存储复制。此外,还有更多陷阱,例如块大小和机密性。
一种常见的方法是将文件存储在IPFS(https://ipfs.io/)等分布式P2P存储系统中,并将文件的哈希(哈希用作IPFS中的文件引用,以确保完整性)存储在区块链的状态。
您可能还需要IPFS群集(https://cluster.ipfs.io/)以确保持久性和复制性。
IPFS不支持加密,因此,如果需要,应在IPFS之外端对端应用加密,在存储之前进行加密,在访问后进行解密。
答案 1 :(得分:1)
从您的评论看来,您似乎正在考虑使用Hyperledger Fabric。使用Fabric,您应该能够编写链码和一个存储文件的客户端。它仍然可能不是最好的方法,您应该仔细考虑将大文件的存储与基于区块链共识的链码分离的情况,尤其是在链上存储文件哈希的情况下。每个节点都需要存储文件,并达成共识,即所有节点都存储相同的文件(具有相同的状态)。就计算和网络I / O而言,这是昂贵的。
使用Fabric,只要它是确定性的并且不是长期运行的过程,就应该能够执行几乎所有代码操作。以我的经验,最小化任何区块链上的代码和状态是最佳实践。
此处是Hyperledger Fabric实现的完整示例:https://fabric-chaintool.readthedocs.io/en/latest/getting-started/
答案 2 :(得分:0)
我同意Kekomal,不要将大文件放到区块链中,因为这样会使文件膨胀。而是离线存储二进制/大文件。 Hyperledger Fabric(HLF)中的一个选项是私有数据收集,您可以在其中将二进制文件作为base64文本存储在CouchDB中,并且仅存储校验和/散列链,但这会增加存储需求-基于{ {3}} base64文本中的20KB pdf将为26KB-对于非常大的二进制文件以及不当使用文档数据库的情况可能很重要。私人数据收集很好,因为HLF让您与base64.guru共享文件