Swarm、IPFS 、BigchainDB:数据存储和去中心化
数据管理和内容管理是许多商业应用程序(如信息门户、维基百科、电子商务和社交媒体应用程序)的两个核心功能。在去中心化领域也不例外,当谈到EVM时,人们往往十分看重EVM在以太坊上存储数据的能力。虽然这一功能非常方便,但其成本过高,所以并不常用。开发人员们大可以选择其他几种方式来管理和访问去中心化应用程序的数据和内容,比如Swarm (以太坊区块链解决方案)、IPFS和BigchainDB(区块链大数据平台)。下面,我们一起来深入了解一下吧。Swarm
Swarm为以太坊和DApp提供内容分发服务,具备以下功能:➢ Swarm是一个去中心化的存储平台,提供以太坊web3堆栈的本地基础层服务。➢ Swarm旨在替代以太坊链上存储解决方案,成为以太坊公共记录的去中心化存储平台。➢ Swarm能够在不干扰区块链上信息的情况下,协助DApp存储和分发代码、数据及内容。假设我们正在开发一个以区块链为基础的的医疗记录系统:跟踪医疗记录的添加日期、医疗记录内容、以及何人出于何种目的查看过记录,那么我们就需要在区块链中维护上述所有不可变的事务记录。但是,医疗记录本身(包括医生记录、医疗诊断和影像等),其实并不适合被存储在以太坊区块链中。Swarm或IPFS更适合此类用例。DApp可以直接在去中心化的文件系统(如IPFS和Swarm)中创建、管理并存储数据和内容,使用Swarm散列对数据和内容进行访问和检索。当DApp向以太坊网络提交事务时,事务可以借助Swarm散列来引用Swarm资源。Swarm在去中心化的节点上维护特定类型的内容寻址分布式哈希表(distributed hash table,简称DHT)。上传到Swarm网络中的文件或内容将被作为blob对象分割成不同的块。然后利用这些分块创建Merkle树,从而确保内容的完整性。Trunks将被进一步分配到参与节点,并存储到DHT中。当发出访问请求时,由接近分块地址的节点提供内容。Swarm提供了多个用于访问和管理内容的API,其中包括CLI(命令行接口)和JSON-RPC API。我们可以通过erebos、swarm-js或者swarmgw包来获得JavaScript包,其可用于大多数以UI/JavaScript为基础的DApp。IPFS
IPFS与Swarm十分类似,是一款在去中心化网络上存储并共享内容的点对点分布式文件系统。IPFS和Swarm二者都能够提供去中心化数据和内容存储,以及直接由内容所生成的可寻址散列;二者都可以存储区块链事务中的各项内容。但二者内部也存在许多技术差异——它们通过不同的方式来切分大数据集并将分块存储在分布式网络。我们可以把IPFS看作是一个BitTorrent swarm,在Git存储库中交换对象;而Swarm与以太坊区块链集成更加密切,并且有促进内容共享的激励系统。但其实IPFS也可以借助Filecoin来提供相似的激励系统。同样,Swarm中的DApp应用架构也适用于IPFS。IPFS也提供了多个用于访问和管理内容的API,包括CLI接口、JSON-RPC API以及HTTP接口。JavaScript包和Go库也同样可用,可用于大多数以UI/JavaScript或Go为基础的DApp。BigchainDB
BigchainDB是一个去中心化的数据库,它结合了传统数据库、数据管理功能以及区块链功能。作为区块链数据库,BigchainDB是对其他去中心化系统的补充,例如去中心化文件存储(如IPFS或Swarm)和智能合约区块链(如以太坊或EOS)。作为存储去中心化数据和内容的另一种选择,它可以用作传统应用程序的数据存储,也可以用作去中心化区块链平台(如以太坊)的去中心化数据存储。虽然它也可以存储文件,但我们并不推荐您这样做,因为它其实更适用于结构化和非结构化数据。在以太坊社区中,很多人都想将BigchainDB和以太坊智能合约进行集成,也曾提出过一些EIP和POC(概念原型)来进行相关尝试,比如,利用Oraclize服务在智能合约中从BigchainDB检索数据。在成功检索数据后,智能合约将对逻辑进行评估,并执行请求的操作。DApp可以通过两种方式与BigChainDB集成。一种是通过HTTP GET和POST,作为去中心化的数据存储直接与BigchainDB进行交互。第二种是在智能合约中利用Oraclize服务,从BigChainDB访问外部数据。➢ BigchainDB具有多个接口(包括CLI 接口和HTTP API),能连接到BigchainDB服务器并且从区块链数据库存储并检索数据。➢ 在数据库中存储数据时,我们需要用HTTP POST请求将数据发送到数据库服务器,然后使用HTTP GET接口从数据库检索数据。➢ BigchainDB还具备数据库驱动程序,开发人员可以用Java、Python等编程语言连接网络服务器。在本文中,我们回顾了三种在区块链上管理去中心化数据的内容存储平台。在选择好数据存储平台之后,我们需要通过数据可视化对网络平台进行监控。我们可以通过虚拟数据室来实现这一目标,它可以将所有有用的信息集中显示在一起,协助我们评估网络数据,查看收集的数据列表是否可信。原文链接:https://hackernoon.com/swarm-ipfs-and-bigchaindb-comparing-data-storage-and-decentralization-4a2o3wf8