admin管理员组

文章数量:1662834

区块链和分布式技术的核心概念是共识算法和智能合约,但这两种技术并不能满足人们当前的需求。例如,你看到过Netflix(美国一家在线影片租赁提供商)、Facebook和区块链手游等类似应用在区块链上跑吗?


原因是,目前缺少一个强大、安全和去中心化的内容存储和分发系统。


基于此,本文详细探讨了Swarm、IPFS、Sia、Storj、MaidSafe这五种主要的分布式存储平台,帮助你了解区块链分布式存储现状。


译者 | 王柯凝

编辑 | 科科

         


区块链和分布式技术的核心概念是共识算法和智能合约:共识算法是作为一个整体的网络如何做出一个统一的决策;而智能合约则是实现去中心化应用程序的一个工具。


然而,共识算法和智能合约并不能满足人们当前的实际应用需求。如果仅仅依赖于以上这两个技术,我们就不能像在 Netflix上那样享受喜欢的电影或电视剧,也不会像在 Facebook 上那样存储或分享令人难忘的瞬间;更不会像玩Dota游戏那样在区块链上玩手游,等等。


因此,我们缺少的是一个强大、安全以及去中心化的内容存储和分发系统,服务于今天的应用程序。


现在,我们对一些当前最为流行的5种分布式存储平台进行综合性探索。



01

Swarm


             


状态:live


Swarm是一个分布式存储平台和内容分发服务。参与者能够有效地汇集储存和带宽资源,以便向网络所有的参与者提供这些服务,同时,作为回报,他们也会得到一部分以太坊奖励。


目标


Swarm平台旨在为去中心化应用开发者提供一套基础设施服务,如消息传递、数据流、点对点计数、可变资源更新、存储保险、支付渠道和数据库服务等。


从终端用户的角度来看,除了上传操作不是发生在特定服务器上外,Swarm与互联网并没有多少不同。它内置了一个激励系统,通过点对点计数,允许用户为交易资源进行支付,为用户提供了一种点对点存储和服务方案。Swarm具有零停机、容错、抗审查和独立等特点,它与以太坊的Devp2p 多协议网络层以及用于域名解析的以太坊区块链(使用ENS)整合为一个整体,服务于支付,保障了内容的可用性。


注意: 为了解析 ENS 的名称,必须将Swarm节点连接到一个以太坊区块链上,比如mainnet、testnet等。


概述


Swarm为新的去中心化网络提供基础层设施,它是一个点对点网络,向对方提供资源的方式提供分布式数字服务,比如存储、消息转发、支付处理等。类似于以太坊上的测试网络Ropsten,以太坊基金会也运行了一个Swarm测试网络来测试这些功能。不管是在服务器、桌面、笔记本,还是在移动设备上,每个人都可以运行 Swarm 客户端节点,然后加入网络。


此外,Swarm 平台是一个 Devp2p 网络节点的集合,每个节点都可以在同一个网络ID上运行 bzz 协议套件。Swarm节点可以连接到一个(或几个)用于域名分辨率的以太坊区块链上,还可以连接到一个用于带宽和存储补偿的以太坊区块链上。在同一个网络ID上运行的节点,会连接到相同的支付区块链上。通过Swarm的网络ID,用户可以识别任何一个Swarm网络,另外,该网络ID可以是任意整数。


Swarm允许上传(upload)和消失(disappear),这就意味着任何节点都可以将内容上传到 Swarm上,然后被允许离线。由于节点之间可以连续传递可用数据,只要节点不离线或不可用,内容仍然可以访问。


公共网关


Swarm提供了一个本地的 HTTP 代理 API,使用去中心化应用或命令行工具,用户就可以与 Swarm 进行交互。像发送消息等模块,就可以通过RPC-JSON API来实现。同时,Testnet 上的基础服务器为用户提供了公共网关,用户可以方便地使用演示功能,并进行免费访问。因此,在不运行自己的节点的情况下,用户可以很方便的使用Swarm平台。


Swarm公共网关的详细信息请查看链接:https: / / Swarm-gateways。


上传及下载数据


上传,即向本地 Swarm 节点"上传"内容,本地Swarm 节点与网络中的其他节点再"同步",产生数据块。下载,即下载在本地 Swarm 节点与网络中的其他节点组成的数据块到本地,再在本地对这些数据节点重组。


内容解析器: ENS(Ethereum Name Service)


注意: 为了成功解析 ENS 名称,Swarm 节点必须连接到一个以太坊区块链上,比如Mainnet、Testnet等。


ENS是Swarm用来允许引用一个可读名称内容的一个系统,如"theswarm.eth"。它和 DNS 系统一样,Swarm将可读的名称转换成机器标识符——在这种情况下,标识符指向 Swarm 哈希值。用户先注册一个名称,并将其设置为解析站点根源清单的内容散列值,然后,就可以通过URL(bzz: // theswarm.eth / ) 访问网站。


目前的主流浏览器(如 Chrome、 Firefox 或 Safari )并不支持 bzz 方案。如果想在浏览器中使用 bzz 方案,则必须使用 HTTP 网关,如 https: / / swarm-gateways / bzz: / theswarm.eth /,亦或者使用支持 bzz 方案的浏览器,如 Mist。


可变资源更新


可变资源更新(Mutable Resource Updates )是 Swarm POC3上另一项实验性的新功能,该功能还处于开发阶段。


如果我们对 Swarm 中的数据进行更改,当上传数据时,数据会以一种完全不可预测的方式改变。Swarm使用可变资源更新为用户提供了一种内置方案,并且对更改的数据保持一个持久的标识符。


为了保持与更改数据相同的指针,常用的方法就是使用ENS。但是,ENS 是一个链上功能,它在以下几个方面受到了限制:


  • 每更新 ENS 解析器一次,都会耗费一定的成本。

  • 更改数据的速度,不可能会比开采新区块速度更快。

  • 正确的 ENS 分辨率总是需要和块环链同步。


可变资源更新允许有一个非变量标识符来更改数据,而无需使用ENS 。像常规的 Swarm 对象一样,用户在创建资源时会获得密钥(MRU manifestkey),用户使用该密钥引用可变资源。当用户对资源的数据进行更新时,密钥MRU manifest key 将指向新的数据。


如果同时使用可变资源更新与ENS 解析合约,则只需要一个初始事务来注册 MRU manifestkey,而这个密钥则将解析到资源的最新版本(更新资源并不会改变密钥)。


支持可变资源更新有3种不同的方式: HTTP API、Golang API 和 Swarm CLI。详情请查看链接:

https://swarm-guide.readthedocs.io/en/latest/usage.html#creating-a-mutable-resource


注意事项:

1.只有创建资源的私钥(地址)才能对其进行更新。


2.创建可变资源时,提供的参数一定要是预期的更新频率frequency,表示更新资源的频率。尽管我们也能使用其他速率更新资源,但这样会减缓检索资源的过程。


Swarm加密


Swarm POC 0.3中引入了对称加密技术,可以随时使用 swarm up上传命令,该加密机制的目的是保护用户的信息,在处理任何Swarm节点时都无法读取分块数据。


Swarm 使用计数器模式加密技术对内容进行加密和解密。当用户向 Swarm 上传内容时,上传的数据会被分成4kb个块。这些块都将被编码为一个单独、随机生成的加密密钥。该加密过程发生在本地 Swarm 节点上,未加密的数据不会与其他节点共享。单个块(和整个内容)的引用将是编码数据的哈希值和解密密钥的组合。这就意味着该引用比标准的非加密 Swarm 引用(64字节而不是32字节)的字节要长。


当用户的节点与其他节点的加密块同步时,它不会与其他节点共享完整的引用(或解密密钥)。这就意味着其他节点将无法访问原始数据,另外,它们也将无法检测同步块是否加密。


当用户的数据被检索时,它只会在本地 Swarm 节点上解密。在整个检索过程中,数据块以加密形式遍历整个网络,所有的参与者都无法对其进行解密。这些数据只能在下载使用的 Swarm 节点上进行解密和重组。


注意事项:

1.Swarm 支持加密。Swarm并不支持上传未加密的敏感数据和私有数据,这些数据一旦上传就没有办法撤销,用户应该避免上传非法、有争议或不道德的内容。


2.Swarm使用--encrypt支持加密和非加密swarm up命令。后续,这种方式可能会改变。


3.加密功能是非确定性的(由于每次上传请求都会产生随机密钥) ,而且 API 的使用者不应依赖结果具有幂等性,因此,向Swarm上两次都上传相同的内容,也会有不同的引用。


消息传递协议——PSS


PSS (Postal Service over Swarm)是 Swarm 上的一种消息传递协议,具有很强的隐私性。我们在这里只对PSS API的基本概念和特点进行描述,更为详细的内容请查看链接:

https://swarm-guide.readthedocs.io/en/latest/apireference.rst#PSS。


PSS 仍然是一个实验性性的功能,目前正处于开发阶段。


基础知识


用户可以使用 PSS 协议向 Swarm 网络中的任何一个节点发送消息,消息的路由方式与对块的检索请求相同。与块哈希引用不同的是,PSS 消息在覆盖的地址空间中并不是指定消息有效负载,而是指定一个目标。如果该目标是一个完整的覆盖地址或者邻居,就可以将其描述为一个特定的节点。消息通过 DevP2P 对等连接使用forwarding kademlia 算法进行转发,forwarding kademlia 算法则通过使用 kademlia 路由的中继节点之间的半永久点对点 TCP 连接传递消息。在目标邻居中,消息可随意传播。


由于 PSS 消息是加密的,最终的接收者就是能够解密该消息的人。其加密方法可以使用非对称或

本文标签: 区块能在分布式玩转平台