谈到区块链和分布式计算,最重要的是共识算法和智能合约。但是,谈及日常应用程序,这些属性还不足以支持当今世界的需求。如果我们只依靠上述这两项,就难以想象像在 Netflix 上那样观赏喜爱的电影或电视剧、像在脸书上那样存储或分享值得纪念的视频或照片,或在区块链上玩喜爱的在线游戏(如 DOTA)。

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

下面,我们将探索和评估一些最流行的分布式存储平台。

1.Swarm

状态:

活跃

说明:

Swarm 是分布式存储平台和内容分发服务,是以太坊 web3 栈的本地基础层服务。Swarm 的主要目标是提供充分分散和冗余存储的以太坊公共记录,尤其是存储和分发 DApp 的代码和数据以及区块链数据。从经济角度来看,它允许参与者有效汇集他们的存储容量和带宽资源,以给网络的所有参与者提供这些服务,同时接受以太坊的激励。

目标

Swarm 更广泛的目标,是为去中心化的 web 应用程序(DApp)开发人员提供基础设施服务,特别是:消息传递、数据流、点对点记账、可变资源更新、存储保险、监管扫描和修复、支付渠道和数据库服务。

从终端用户的角度来看,Swarm 和万维网的差别不大,除了上传不托管在特定的服务器上。Swarm 提供了一个点到点的存储和服务解决方案,它具有 DDos 抗性、零停机、容错和审查及自我维持的特性,它内置了激励系统,通过点对点记账,允许用户为交易资源进行支付。Swarm 旨在和以太坊的 devp2p 多协议网络层以及以太坊区块链进行深度集成,以进行域名解析(利用 ENS)、服务支付和内容可用性保证。

请注意:为了解析 ENS 域名,Swarm 节点必须要连接到以太坊区块链上(主网或测试网)。

请参考开发路径图,以获得 Swarm 的进展信息。

概述

Swarm 旨在给新的去中心化互联网提供基础层的基础设施。Swarm 是点对点的节点网络,通过彼此之间贡献资源(存储、消息转发、支付处理)提供分布式数字服务。以太坊基金会运作 Swarm 测试网,可以用来以类似于以太坊测试网络(ropsten)的方式测试功能。每个人都可以通过在自己的服务器、台式机、笔记本电脑或移动设备上运行 Swarm 客户节点加入到网络中。请参阅《Swarm入门(https://swarm-guide.readthedocs.io/en/latest/gettingstarted.html#getting-started)》一文以了解操作方法。Swarm 客户端是以太坊栈的一部分,参考实现是用 golang 编写的,可以在 go-ethereum 存储库中找到它。目前在所有节点上运行的是 POC 0.3 版。

Swarm 提供本地 HTTP 代理 API,DApp 或命令行工具可以用来和 Swarm 进行交互。像消息传递这样的模块只能基于 PRC-JSON API 才可使用。在测试网(testnet)上的基础服务提供公共网关,用于轻松演示功能和允许免费的访问,以便人们无需运行任何自己的节点即可尝试 Swarm。

Swarm 是 devp2p 网络的节点集合,其中的每个节点在同一个网络 ID 上运行 bzz 协议套件。

Swarm 节点也可以连接到一个(或多个)以太坊区块链上,以进行域名解析,并连接到一个以太坊区块链进行带宽和存储补偿。运行相同网络 ID 的节点应该连接到相同的区块链上以进行支付。Swarm 网络由其网络 ID 标识,该网络 ID 是一个任意整数。

Swarm 允许上传(upload)和消失(disappear),这意味着任何节点可以只上传内容给 Swarm,然后就可以下线。只要节点没有丢失或变得不可用,该内容将仍旧可以访问,这是因为有一个“同步”的过程,节点持续地在彼此之间传递可用数据。

公共网关

Swarm 提供本地 HTTP 代理 API,DApp 可以用来和 Swarm 进行交互。以太坊基金会在托管公共网关,该网关允许免费访问,因此,人们甚至无需运行自己的节点即可尝试 Swarm。

Swarm 公共网关可以在 http://swarm-gateways.net 上找到,上面一直都运行着最新的 Swarm 稳定版。

请注意:目前,该网关只接受限制大小的上传。将来,上传到该网关的功能很可能完全消失。

上传和下载数据

上传内容由这些步骤组成:“上传”内容到本地 Swarm 节点,接着本地 Swarm 节点用其在网络中的对等点“同步”所生成的数据块。同时,下载内容由这些步骤组成:本地 Swarm 节点查询在网络中的对等点以获取相关的数据块,然后在本地重组这些内容。

内容解析器:ENS

请注意:为了解析 ENS 名称,Swarm 节点必须连接到以太坊区块链(主网或测试网)。

ENS是个系统,Swarm 用它来实现以人类可读的名称(如 theswarm.eth)引用内容。它的操作类似于 DNS 系统,把人类可读的名称转换成机器标识符,在此,即你正在引用的内容的 Swarm 哈希。通过注册一个名称,并把它解析成网站的根清单的内容哈希值,用户可以通过 URL(如 bzz://theswarm.eth/)访问该网站。

请注意:目前,主流的浏览器(如 Chrome、Firefox 或 Safari)不支持 bzz 协议。目前,如果要通过这些浏览器访问 bzz 协议,必须使用 HTTP 网关(如 https://swarm-gateways.net/bzz:/theswarm.eth/)或者使用支持 bzz 协议的浏览器(如Mist)。

要了解更多在 Swarm 上传、下载和处理内容的信息,请参阅这里。

可变资源更新(Mutable Resource Updates)

可变资源更新是 Swarm POC3 上的一项高度实验性的功能 。它正在积极开发中,因此,有些东西可能会有变化。

我们在这份指南中已经了解到,当我们在 Swarm 中改变数据时,我们上传的数据所返回的哈希值会以无法预料的方式变化。通过可变资源更新,Swarm 提供一种内置方式,可以对更改数据保持一个持久的标识符。

为了保持与更改数据有相同的指针,常用的方法是利用以太坊命名服务 ENS。但是,ENS 是一个链上功能,它限制了其他地方的功能:

  • 每个 ENS 解析器的更新都需要 gas 才能进行。
  • 更改数据不可能比挖出新区块的速度更快。
  • 正确的 ENS 解析方案要求始终同步到区块链。

可变资源更新允许我们用非变量标识符来更改数据,无需使用 ENS。利用在创建资源时获得的密钥,可以像普通 Swarm 对象一样引用可变资源。

如果同时使用 ENS 解析器合约和可变资源更新,只需要一个初始事务来注册 MRU_MAINFEST_KEY。该密钥将解析到资源的最近版本上(更新该资源不会改变该密钥)。有 3 种和可变资源更新进行交互的方法:HTTP API、Golang API 和 Swarm CLI。

请参阅这里以了解更多情况。

注意事项:

  • 只有创建该资源的私钥(地址)可以更新它。
  • 在创建可变资源时,必须要提供的参数之一是预期的更新频率。这表明该资源多快(以秒计算)被更新一次。尽管你可以以其他的速率更新该资源,但这么做会减慢索引该资源的处理过程。

Swarm 上的加密

在 POC 0.3 中引入了对称加密技术,现在可以很容易随 Swarm up 上传命令一起使用对称加密了。该加密机制是用来保护信息,并使得在处理任何 Swarm 节点时都不可读分块数据。

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

当你的节点将你的内容的加密块与其他节点同步时,它不与其他节点共享完整的引用(或任何方式的解密密钥)。这意味着其他节点无法访问你的原始数据,此外,它们也无法侦测到同步的块是否经过加密。

检索数据时,只在本地 Swarm 节点上将它解密。在整个检索过程中,这些块以加密的形式遍历网络,参与的对等节点无法解密它们。它们只在用于下载的 Swarm 节点上进行解密和重组。

要了解如何在 Swarm 上处理加密的更多信息,请参阅这里(https://github.com/ethersphere/swarm/wiki/Symmetric-Encryption-for-Swarm-Content)。

注意事项:

  • Swarm 支持加密。由于无法撤销上传,因此强烈建议不上传未加密的敏感和私密数据。用户应该避免上传非法的、有争议的或不道德的内容。
  • Swarm 目前即支持加密也支持未加密的 swarm up 命令,通过使用–encrypt 参数来标识。将来可能有变化。
  • 加密功能是非确定性的(因为每个上传请求生成的密钥是随机的),API 的用户不应该依赖结果的幂等性;这样,在启用加密的情况下,同样的内容两次上传到 Swarm 所产生的引用是不同的。

PSS

PSS(Postal Service over Swarm,Swarm 上的 Postal 服务)是 Swarm 上的消息传递协议,具有强大的隐私功能。PSS API 通过在该API Reference中所描述的 JSON RPC 接口公开,我们在这里只解释基本概念和功能。

请注意:PSS 仍然是个实验性的功能,正在积极开发中,可从 Swarm 的 POC3 开始使用。预计有些事情会有所变化。

基础知识

通过 PSS,可以发送消息给 Swarm 网络上的任何节点。消息的路由方式和块的检索申请方式一样。PSS 消息不使用块哈希引用,而是在覆盖地址空间中指定目标,与消息的有效负载无关。如果该目标是一个完整的覆盖地址就可以将其描述为一个特定的节点,或者如果它只部分指定其一,则可以描述为邻居。消息通过 DevP2P 对等连接使用 forwarding kademlia 算法进行转发,forwarding kademlia 算法则通过使用 kademlia 路由的中继节点之间的半永久点对点 TCP 连接传递消息。在目标邻居内,该消息利用 Gossip 进行广播。

由于 PSS 消息是加密的,因此,最终收件人可以解密该消息。可以用非对称或对称加密方式进行加密。

消息有效负载通过接收节点分发给消息处理器,并通过 API 分发给订阅用户。

请注意:目前,PSS 不保证消息的订购(尽最大努力传递),也不保证消息的传递(也即,不缓存和中继给离线节点的消息)。

隐私功能

得益于端到端的加密,PSS 也适合私人通信。

PSS 使用了 forwarding kademlia 算法,对发送者进行匿名化处理。

利用部分寻址,pss 提供收件人匿名的可调范围:目标邻居越多,所显示的预期收件人覆盖地址的前缀越小,就越难识别真正的收件人。另一方面,由于暗路由(dark routing)效率低,因此在匿名性和消息传递延迟及带宽(还有因此产生的成本)之间需要折衷,而这留给应用程序来选择。

如果使用 Handshakes 模块,则提供前向保密。

要了解更多 pss 的使用情况,请参阅这里。

架构

请参阅这里以了解更多 Swarm 的架构。

示例 DApp

请参阅 Swarm 去中心化应用实例的详细内容,请参照这里。

注意事项:

  • 敏感内容一定要加密!对于加密内容,上传的数据是“受保护的”,也即,只有那些知道对根块(文件的 Swarm 哈希值和加密密钥)引用的人可以访问该内容。因为发布该引用(在 ENS 上或用 MRU)需要一个额外步骤,只要用户使用加密,就可以轻松地得到保护,防止粗心地发布。Swarm 会删除没有明确受到保护的内容,这是因为 Swarm 中限制了存储容量,Swarm 最终会将这些节点转到垃圾箱内。
  • 直到实施存储保险(请参阅路径图以了解更多)之前,测试网不保证持久保存上传的内容。所有参与的节点都被视为没有任何义务的自愿服务,以其意愿删除内容。这样,在激励系统运行之前,用户在任何情况下都不应该将 Swarm 视作安全存储介质。
  • Swarm 是持久数据结构(Persistent Data Structure),因此,在 Swarm 中没有删除或移除操作的概念。这是因为内容被传播到被激励服务它的 Swarm 节点。

Swarm Reddit | Swarm Twitter | Swarm Github

2. IPFS

状态:

活跃(这是一个激励系统,“Filecoin”是不活跃的)

说明:

IPFS(Interplanetary File System,星际文件系统),是点对点(peer-to-peer,简称 p2p)文件共享系统,旨在从根本上改变信息在全球范围内的传播方式。它跟 Swarm 有点类似,或者,我们也可以说 Swarm 跟 IPFS 有点类似。

IPFS 包含了通信协议和分布式系统的几个创新,它们的组合产生了与众不同的文件系统。因此,为了理解 IPFS 所要尝试达到的广度和深度,重要的是,理解使其变得可能的技术突破和所有它在尝试解决的问题。

IPFS 自诩要取代 HTTP。那么,我们来看看如今互联网的工作原理。

简而言之,现在的互联网是协议的集合,这些协议描述了数据是如何在整个网络中移动的。随着时间的推移,开发人员使用着不同的协议,并在该基础设施上构建他们的应用程序。在这些协议中,其中一个是 Web 的骨架,即 HTTP 或超文本传输协议(HyperText Transfer Protocol)。它是由 Tim Berners-Lee 于 1991 年发明的。

Internet Protocol stack aka. OSI Model

HTTP 是请求 - 响应协议。客户端(例如 web 浏览器)发送一个请求给外部服务器。该外部服务器随后返回一个响应消息,例如,把谷歌的主页返回给客户端。这是位置寻址协议,这意味着,当在浏览器中键入 google.com 时,它被翻译成某个谷歌服务器的 IP 地址,接着,该服务器启动请求 - 响应周期。

How people talk on Internet

HTTP 的问题

假设你正坐在课堂上,教授要求你访问某个特定的网站。课堂上的每个学生都向该网站发出请求,并获得响应。这意味着,完全相同的数据被单独发送给课堂上的每个学生。如果有 100 个学生,那么就有 100 个请求和 100 个响应。很显示,这不是最有效的方法。理想的话,这些学生将能够利用他们的物理位置接近度以更有效地检索他们所需的信息。

如果网络通信线路有问题,那么 HTTP 也会出大问题,客户端就无法连接服务器。如果 ISP 发生中断、某个国家屏蔽了某些内容,或者,如果内容只是被删除了或移走了,都会发生这样的事情。在 HTTP web 上到处都有这些类型的断连。

HTTP 基于位置的寻址模型鼓励集中化。这便于信任少数拥有我们全部数据的应用程序,但是,因为这个原因,在 web 上的大量数据被浪费了。这也使得这些供应商对我们的信息负有巨大的责任以及拥有巨大的权力(比如脸书)。

HTTP 非常适合加载网站,但是,它不是设计用来传输大量的数据(像音频和视频文件)。这些缺陷可能使得像 Napster(音乐共享软件)和 BitTorrent(电影及几乎任何东西的共享软件)这些文件共享系统的替代品出现并成功成为主流。

时间快进到 2018 年,按需高清视频流和大数据正变得无处不在;我们继续生产 / 消费越来越多的数据,同时开发越来越强大的计算机来处理它们。云计算中的重大进步有助于维持这种转变,但是,用于分发所有这些数据的基础设施基本没有变化。

解决方案

IPFS 最初是由 Juan Benet 努力构建的系统,该系统可以快速移动版本化科学数据。它是经过互联网技术(DHTs、Git版本系统和Bittorrent)综合测试的综合体。它创造了允许交换 IPFS 对象的 P2P Swarm 。所有的 IPFS 对象形成了加密身份认证的数据结构(Merkle DAG),同时,该数据结构能够用于构建很多其他数据结构。或者,换句话说,就是:

“IPFS 是个分布式文件系统,它旨在用同一个文件系统来连接所有的计算设备。在某些方面,这和 Web 最初的目标类似,但是,IPFS 事实上更类似于一个交换 Git 对象的 Bittorrent Swarm。IPFS 能够成为互联网新的重要子系统。如果构建正确,它能够补充或取代 HTTP。它能够补充或取代更多东西。这听起来很疯狂。没错,它的确很疯狂。”【1】

IPFS 本质上是版本化的文件系统,能够接收文件并管理它们,也可以把它们存储在某个地方,然后随着时间的推移,跟踪它们的版本。IPFS 也记录了这些文件在网络中的移动方式,因此,它也是个分布式文件系统。

IPFS 有管理数据和内容在网络上移动方式的规则,本质上和 Bittorrent 类似。该文件系统层提供了非常有趣的属性,如:

  • 网站是完全分布式的。
  • 网站没有源服务器。
  • 网站可以完全在客户端的浏览器上运行。
  • 网站不必和任何服务器有联系。

我们来看看这些不同的技术突破是如何协同工作的。

分布式哈希表(Distributed Hash Tables)

哈希表是一种数据结构,它以键 / 值对来存储信息。在分布式哈希表(distributed hash tables,简称 DHT)中,数据分布在计算机网络中,以便有效地协调以实现节点之间的有效访问和查找。

DHT 的主要优点在于去中心化、容错和可扩展性。节点无需中心协调,系统能够可靠地运作,即使节点发生故障或下线,并且,DHT 能够扩展以容纳数百万个节点。基于这些特性,使得 Swarm 比客户端 - 服务器结构更具有弹性。

区块交换(Block Exchanges)

流行的文件共享系统 Bittorrent 能够成功地协调数百万节点之间的数据传输,这是通过依靠创新的数据交换协议完成的,但是,这只限于种子生态系统。IPFS 实现了该协议的通用版本,称为 BitSwap,作为任意类型的数据市场来运营。该市场是Filecoin的基础,Filecoin 是构建于 IPFS 之上的 p2p 存储市场。

Merkle DAG

Merkle DAG 是Merkle 树和有向无环图(Directed Acyclic Graph,简称DAG)的混合体。Merkle 树确保在 p2p 网络上交换的数据块是正确的、没有受到损害的和未被修改的。这个验证是利用加密哈希函数数据块来完成的。这只是一个函数,接收输入,计算出与输入相应的一个独一无二的字母数字字符串(哈希)。对于给定的哈希值,容易检查输入是否能得出同样的值,但是,难以从哈希值推算出输入。

单独的数据块被称为“叶节点”,它们被哈希后,形成“非叶节点”。这些非叶节点然后能够组合在一起进行哈希,直到所有的数据块可以用单独一个根哈希值表示。这是更简单的概念化方法:

Tree vs Merkle Tree

DAG 是一种无周期拓扑序列信息建模的方法。DAG 的一个简单例子就是家族树。Merkle DAG 基本上是个数据结构,其中哈希被用来在 DAG 中引用数据块和对象。这创造了一些有用的功能:IPFS 上的所有内容能够被唯一地标识,因为每个数据块有独一无二的哈希值。此外,数据是防篡改的,因为数据的更改会改变哈希值,如下图所示:

Un-tamperable nature of Merkle tree

IPFS 的核心原则是对生成的 Merkle DAG 上的所有数据建模。这种安全功能的重要性简直难以用言语来形容。打个比方吧,该原则可以保护价值数万亿美元的资产,可见该想法有多么强大了吧。

版本控制系统

Merkle DAG 结构的另一个强大的功能是,它允许构建分布式版本控制系统(version control system,简称VCS)。其典型的一个例子是 GitHub,它允许开发人员轻松地同时协作项目。GitHub 上的文件利用 Merkle DAG 存储和版本化。它允许用户独立复制和编辑一个文件的多个版本,并进行存储,稍后可以把编辑过的版本和原始文件合并。

IPFS 对数据对象使用类似的模型:只要对应于原始数据的对象和任何新版本都可以访问时,就可以检索整个文件历史。鉴于数据块通过网络进行本地存储,并可以无限期缓存,这意味着,IPFS 对象能永久存储。

此外,IPFS 不依赖于对互联网协议的访问。数据可以分布在覆盖网络中,覆盖网络只是构建在另一个网络上的网络。这些功能值得注意,因为它们是抗审查网络的核心要素。它可以成为促进自由言论以对抗全球互联网审查普及制度的工具,但是,我们也应该认识到不良行为者滥用言论的可能性。

自证明的文件系统

我们将要介绍的 IPFS 的最后一个重要组成部分是自证明文件系统(Self-certifying File System,简称SFS)。它是分布式文件系统,无需请求特殊权限进行数据交换。它是“自证明”的,因为提供给客户端的数据是通过文件名来进行身份验证的。结果就是能够利用本地存储的透明度安全地访问远程内容。

IPFS 以此概念为基础,创建了星际命名空间(InterPlanetary Name Space,简称 IPNS)。它是个 SFS,使用公钥加密以自证明通过网络用户发布的对象。我们之前提到,IPFS 上的所有对象可以唯一标识,但是,这也扩展到节点。网络上的每个节点有一套公钥、私钥和节点 ID,节点 ID 是其公钥的哈希值。因此,节点可以使用它们的私钥来“签署”它们发布的任何数据对象,并利用发件人的公钥来验证该数据的真实性。

以下是对关键 IPFS 组成部分的快速回顾:

  • 通过分布式哈希表,节点可以存储和共享数据,而无需中央协调
  • IPNS 允许交换的数据立即进行预验证,并使用公钥密码进行验证。
  • Merkle DAG 可实现唯一标识、防篡改和永久存储的数据

可以通过 ConsenSys 写的文章来查看网络中文件是如何被分发的更多细节(深入了解一下)。另外,还可以查看一下 IPFS 的白皮书。

注意事项:

  • 始终对敏感内容进行加密!对加密的内容,上传的数据是“受保护的”,也即,只有知道对根哈希值(文件的根哈希值和加密密钥)引用的人才能访问内容。
  • IPFS 是持久性数据结构,因此,IPFS 中没有删除或移除操作的概念。这是因为内容被传播到受激励而服务于它的节点。
  • 无法保证上传的数据在网络上持久地存在。所有参与节点应该被视为没有正式义务的志愿服务,并且可以按照它们的意愿删除内容。因此,直到任何激励系统(Filecoin)正常运行之前,用户不应该在任何情况下,把 IPFS 视为安全存储。

IPFS Reddit | IPFS Twitter | IPFS Github

3. Sia

状态:

活跃

说明:

Sia 为租户提供对去中心化云存储平台的访问,租户得以更便宜、更快地使用对任何人都开放且不受单一权威资源管理的数据中心。Siacoin 基于独立的 Sia 区块链,并且,存储租户和供应商之间达成了协议。

文件在上传之前被分割

在上传之前,Sia 软件把文件分割成 30 个片段,然后把每个片段分发给散布于整个世界的主机上。该分发确保不会存在单点故障主机,并加强整个网络的正常运行时间和冗余。

创建文件片段所用的技术名为Reed-Solomon 纠删码,该技术通常用于 CD 和 DVD。纠删码可以使 Sia 以冗余方式分割文件,只要有这 30 个片段中的任意 10 个片段就可以完全恢复整个用户文件。

这意味着,即使这 30 个主机中有 20 个离线,Sia 用户仍然能够下载其文件。

加密每个文件片段

在离开租户的计算机前,每个文件片段都被加密。这确保主机只存储用户数据的加密片段。

这与传统的云存储供应商(如亚马逊)是不同的,亚马逊默认不加密用户的数据。Sia 比现有的解决方案更安全,因为主机只保存加密的文件片段,而不是整个文件。

Sia 采用Twofish算法,该算法是个开源和安全加密标准,是高级加密标准(Advanced Encryption Standard,简称 AES)的竞争对手。

利用智能合约发送文件到主机

利用 Sia 区块链,租户跟主机形成文件合约。这些合约设定价格、正常运行时间承诺以及租户和主机之间关系的其他方面问题。

文件合约是一种智能合约。它们允许我们创建存储在 Sia 区块链上的加密服务级别协议(cryptographic service level agreements,简称 SLAs)。

由于文件合约是由网络自动执行的,因此 Sia 不需要中介或可信赖的第三方。

租户和主机都用 Siacoin 支付

租户和主机都使用 Siacoin,这是基于 Sia 区块链的独特加密货币。租户使用 Siacoin 从主机那里购买存储容量,而主机把 Siacoin 存入每个文件合约作为抵押品。

利用称为支付渠道的技术,微支付在租户和主机之间流通,与比特币的闪电网络类似。租户和主机之间的支付发生在链外,大大提高了网络的效率和可扩展性。

可以点击以下链接,以查看更多关于支付渠道的内容:

侧链与状态通道的区别
两个伸缩方法的完整比较。
(https://hackernoon.com/difference-between-sidechains-and-state-channels-2f5dfbd10707)

由于主机为每个存储合约支付抵押品,因此,它们特别不希望主机离线。

每次用户和托管服务供应商在 Sia 上签署合约时,用户必须提供津贴(以支付托管服务费用),而托管服务供应商必须提供抵押(以确保良好的行为)。合同订立后,软件收取津贴和抵押的 3.9% 作为费用,支付给 Siafunds 的持有人,Siafund 是该协议的第二代币。Nebulous Labs 是开发该协议的公司,拥有大约 90% 的 Siafund。

这确实是个有趣的长期融资模式,是如今流行的“一次性”ICO 模式的替代品;但是,该功能可能会给系统带来结构性成本,使之比竞争对手更昂贵。文件存储似乎会成为一个高度竞争的市场,这将驱使价格大幅度地降低(与目前的集中式存储的选择相比)。一旦数个不同的去中心化云存储平台部署完毕,这些协议将不仅与集中式替代方案竞争,而且相互之间也要竞争。Sia 对津贴和押金都收取 3.9% 的费用,但是,在大多数合约中,是用户支付了这些费用。其他协议没有该结构性成本,这让它们没有那么昂贵,从长期来看,对用户更有吸引力。

价格会发生变化,但是,你可以预期每 TB/ 月的费用约为 109 个 Siacoin 或 1 美元。

合约随着时间的推移而更新

Renter 为文件合约中的存储预先付费,留出固定数量的 Siacoin 用于支付存储和传输数据。文件合约通常持续 90 天。

Sia 在合约处于过期的特定窗口时会自动更新合约。如果合约没有更新,在合约到期时,Sia 把没有使用的代币退回给 renter。

当单个主机离线时,Sia 自动把 renter 的数据移到新主机,这个过程叫文件修复。

主机提交存储证明

在文件合约到期时,主机必须证明其存储着 renter 的数据。这被称为存储证明。如果该存储证明在特定时间范围内出现在区块链上,那么主机获得付款。如果没有,那么主机被罚款。

存储证明是通过被称为 Merkle 树的技术实现的。Merkle 树可以证明一小段数据是一个较大文件的一部分。这些证明的优点是,它们总能保持在很小的尺寸,无论文件有多大。这非常重要,因为证明是永久存储在区块链上的。

最后,Sia 面临着进入的重要障碍。目前,人们必须先购买比特币,然后用它来购买 Siacoin,再把 Siacoin 发送到 Sia 客户端软件以开始使用网络。对那些日常用户来说,如果没有加密货币,就无法使用网络,这是个大的障碍。它也给企业客户带来问题,因为大多数企业出于监管和金融风险的缘故,不愿意持有和交易加密货币。到目前为止,Sia 团队没有优先考虑设计、可访问性或使用的能力,也没有表明这是一个重要的优先事项。

注意事项:

  • 不像 Swarm 和 IPFS,Sia 是分布式云存储系统。它不专注于创建替代 HTTP 的基础设施,而是专注于创建分布式、自我维持且便宜的云存储市场。
  • 与 Swarm 和 IPFS 不同,Sia 为存储用户和存储供应商都提供了全面的激励系统。因此,你对数据有更多的控制权(因为为之付出了代价)。你完全可以保证你提供给网络的数据会被存储而不会丢失(在 Swarm 和 IPFS 中会丢失)。另外,你可以从网络中删除内容,并确保已从网络中完全清除。

关于更多 Sia 技术的内容,请参阅这里。

Sia Reddit | Sia Twitter | Sia Github

4. Storj

状态:

活跃

说明:

Storj(跟单词 stroage 的发音一样)旨在成为抗审查、抗监控或不会停机的云存储平台。它是第一批去中心化、端对端的加密云存储平台之一。

Storj 是一大堆互锁件组成,这些互锁件合作创建了统一的系统。由于人们与系统中不同的部分进行交互,导致他们对 Storj 的理解都不同。家庭用户不需要任何关于 Bridge 或协议的相关知识,就可以共享存储空间,而开发人员不需要知道任何家庭用户的情况下,就可以使用 Storj API。每个人和这个系统交互会有截然不同的体验。那么,什么是 Storj?它是协议,是一套软件,还包括那些设计、构建和使用它的人们。

Storj 协议

Storj 的核心技术是可执行的、点对点的存储合约。它是两个人(或两台计算机)同意在不知道对方的情况下,用钱交换一定数量的存储空间的方式。我们把出售空间的计算机成为“farmer”,而把购买空间的计算机称为“renter”。Renter 和 farmer 会面,协商一个合约,把数据从 renter 那里移到 farmer 那里进行保管。

合约和审计

合约有一定的期限。在此期间,renter 定期检查 farmer 是否可用。Farmer 用加密证明回答其仍然有该文件。最终,renter 为每个其收到和验证的证明支付费用给 farmer。这个挑战 -> 证明 -> 支付的过程被称为审计,因为 renter 在审计 farmer 的存储。在合约到期时,farmer 和 renter 可以自由地重新协商或结束彼此之间的关系。

虽然核心技术允许任何种类的支付,但是某些种类比其他的更合适。传统的支付系统(如 ACH 或 SEPA)不适合按审计付费。它们很慢,难以验证,费用经常很昂贵。最理想的 Stroj 协议的支付方式是加密微支付通道。它允许以极低的费用立即进行可验证和安全的极小支付。这意味着,支付和审计可以尽可能地配对。

执行遵循一个简单的针锋相对的方式:如果 farmer 未通过审计,也即下线或不能证明其仍然有数据,那么 renter 就无需付费。毕竟,renter 不再获得其为之付费的服务。类似的,如果 renter 下线,或未能按时付费,那么 farmer 可以扔掉数据,或者从其他人那里寻求新的合约。只要双方遵循合约的条款,每个人最终都可以享受到各自应有的权益。

将审计和支付之间配对可以最大限度地减小与陌生人交易的风险。如果在合约期内,文件被半途丢弃,那么 renter 只支付实际完成的服务(由审计来证明)。其需要找一个新的 farmer,但是不需要大笔的资金。如果 renter 消失了,或停止付费给 farmer,那么 farmer 也获得了其所有之前服务的费用。Farmer 只少了一笔审计费以及需要再花时间寻找购买那个空间的新 renter 而已。

Storj 网络

为了让 renter 和 farmer 能够彼此会面,合约和协商系统是建立在分布式哈希表上(distributed hash table,简称 DHT)。DHT 基本上是一大堆节点自组织成一个有用网络的方法。我们在使用称为kademlia算法的修改版。

DHT 不是让中央服务器注册每个节点和协调所有合约,而是让 farmer 和 renter 广播它们的合约给一大群节点。感兴趣的节点能够轻松地联系提供合约的人。通过这种方式,farmer 和 renter 可以找到任意数量的潜在合作者,在广泛的无许可市场上购买或出售存储空间。

为了寻找合作伙伴,节点可以签署一个不完整的合约,并发布到网络上。网络上的其他节点可以订阅某种类型的合约(也即,它们也许感兴趣的)并响应这些已被发布的合约。该模型被称为发布 - 订阅或 pub/sub。节点可以轻松地决定哪些合约是它们感兴趣的,并转发给其他它们认为会对此感兴趣的节点。

合约系统和网络一起形成了我们所谓的 Storj 协议。它描述了网络上节点的行为、节点之间通信的方式、合约协商和执行的方式,以及其他和在分布式系统上购买和销售存储空间有关的一切。任何人可以用任何他们喜爱的方式实施 Storj 协议。

Storj 工具包

该协议包含所有安全地制定存储合约的必需工具,但是,它也缺少很多东西。它能工作,但没有用。为了对 renter 有用,系统需要可用性、带宽和以服务等级协议(Service Level Agreement,简称 SLA)形式出现的任何数量的其他承诺。Farming 软件需要管理功能以避免使用过多的资源及自动功能以高效地部署到多个主机。Storj 不是试图把所有这些功能放入核心协议,而是选择在一个额外的软件层解决这些问题。为了让该网络有用和易于交互,Storj 发布了两个工具:Storj Share 和 Bridge。

StorjShare

StorjShare 是引用的 farming 客户端。它允许用户在任何机器上轻松地设置和运行一个 farm。StorjShare 可作为命令行接口(command-line interface,简称 CLI)提供给更高级的用户,还可以实现自动化。该 CLI 允许用户设置参数(如共享的存储空间数量)、存储位置和支付地址。它也处理合约协商、审计响应和其他所有网络通信。

Storj 也发布了 StorjShare 图形化用户接口(GUI)为我们的非技术用户简化 farming 过程。任何人都可以下载 StorjShare GUI,填写几个字段,就加入网络。该 GUI 是 CLI 的包装,可以完成所有的繁重工作。在初始设置之后,用户很少需要与 StorjShare GUI 交互。他们要做的就是设置、最小化,然后让它在后台运行。

如果用户选择进行数据收集,StorjShare 也将收集系统遥测数据。该数据可能包括硬盘容量和利用率,以及网络连接质量的信息。遥测数据被发送回 Storj Labs,因此,Storj 开发人员能够用来改进网络和我们的软件。将来,StorjShare 甚至能够让人们选择特定的服务和程序。

Bridge

为了帮助 renter 使用网络,Storj 还创建了 Bridge。Bridge 被设计成部署到生产服务器,以处理合约协商、审计、支付、可用性和大量其他需求。Bridge 通过应用程序接口(API)和客户端,并通过扩展开放了这些服务和存储资源。该客户端被设计成可以集成到其他应用程序中,因此,任何应用程序可以使用 Bridge 服务器在 Storj 网络上存储数据,而无需成为网络的一部分。

顾名思义,Bridge 是去中心化 Storj 网络的集成桥梁。它的目标是允许传统的应用程序与 Storj 网络进行交互,就像它们使用其他任何对象存储一样。它提炼了 p2p 通信和存储合约协商的所有复杂性以推送和拉取请求。与大多数对象存储不同,Bridge 不直接处理对象,而是引用对象。它存储指针,那些指针指向分布式网络上对象的位置,以及审计这些对象所必需的信息。理想情况下,数据不会通过 Bridge 传输,而是直接传给网络上的 farmer。

Bridge 客户端处理所有客户方面的工作,以有效地使用网络。它在文件进入网络时进行加密,保护隐私和安全。为了确保可用性,它将文件分片,应用擦除编码,并将这些分片分散到多个 farmer 中。然后,客户端与 Bridge 进行通信,以管理网络上的每个分片的地址,并帮助用户在本地管理他们的加密密钥。尽管 Bridge 客户端最初的实现是 Node.js 包,其最终目标是用多种其他语言实现。

Storj API

Storj 核心服务是对象存储,与 Amazon S3 类似。该对象存储是通过一组公共 Bridge 节点管理的。我们维护基础设施来协商合约、管理支付、审计等等。我们的客户通过 Bridge 客户端与我们的 Bridge 进行交互,甚至不必知道他们正在使用分布式网络。该 API 是为可用性而设计的,因此,在幕后处理一切复杂的事物,以提供流畅、可扩展的开发体验。

Storj 利用广泛的网络知识,提供一流的服务质量。其 Bridge 基于与无数 farmer 的历史互动做出决策。Storj 使用与其性能有关的数据及其自报告的遥测数据,以在网络中智能化地分布数据。Storj 优化了高正常运行时间和快速检索。

账户管理功能通过 Bridge 客户端或者 Storj 出色的 web 应用程序可用。同样,GUI 的功能是用来让体验尽可能地流畅。Storj 认为,用户体验(UX)被大多数开发人员导向的服务策略性地忽略了,并且,因为这个原因,他们在设计产品时以简单有用的想法为主导。他们的目标不是提供广泛的云计算和存储服务,而是提供一种优雅的用户体验。

通过 Storj API,他们在尝试为像我们这样的开发人员构建理想工具,我们这些开发人员关心原型开发的时间、高质量的代码和快速迭代。他们希望为小型开发团队、快速扩展的产品和单个开发人员提供工具和支持。他们理解每个开发人员事实上是为自己工作,为其关心的项目工作。这是对我们的爱。Storj 希望构建一个对象存储平台,以便开发人员不必在对象存储上分心,能够专注于构建他们热爱的项目。

可以从 Stroj Labs 了解更多 Storj 的细节。

Storj Reddit | Storj Twitter | Storj Github

from https://www.infoq.cn/article/OQ7hmrRfYE8ih58L_m3q

https://www.infoq.cn/article/vM2_erirO85MMMfkdNyK

未来的互联网存储:5 大区块链存储平台深入比较相关推荐

  1. 雄安,杭州政府自建区块链底层平台 自建、外包、加入三种模式谁是未来

    文丨互链脉搏·黑珍珠号 未经授权,不得转载! 在科技公司为政府开拓出逐渐明确的区块链治理之路后,城市政府开始尝试自建底层平台. 11月17日,雄安发布消息,将积极探索搭建自主知识产权的区块链底层基础平 ...

  2. 为什么叫区块链存储?兼谈IPFSFilecoin, Chia

    什么是区块链存储?可以从两个方面来理解: 1.为区块链应用提供数据服务的存储,包括了公链存储.联盟链存储. 在区块链存储还没有完善之前,私有云存储.公有云存储会在过渡期内,为区块链应用提供数据服务,但 ...

  3. 基于区块链的去中心化存储(区块链存储)的工作流程

    引入 个人电脑上存储有限,而且如果硬盘损坏数据丢失的话,也不容易恢复.因此很多人愿意把数据上传到云盘里,也就是云存储.但是云存储是服务提供商控制的,比如阿里云,百度云等,我们称为中心化的存储 ,人们对 ...

  4. 创业公司、科技巨擎、产业龙头先后涌入 中国区块链技术平台三世同堂

    文丨互链脉搏·金走车 未经授权,不得转载! 中国"第三代"区块链技术平台正在产业公司的推动下快速崛起. 1月19日,吉宏股份发布了关于全资子公司受让深圳众享互联科技有限公司部分股权 ...

  5. 区块链存储进入Gartner技术成熟度曲线 | Gartner发布2019年十大战略性技术趋势

    [编者Peter Ye按] 本篇文章讲述了两件不同的事情. 一. 2018年7月25日,Gartner发布的<Hype Cycle for Blockchain Technologies, 20 ...

  6. 当SDS遇见BlockChain 之二:区块链存储为什么势在必行?(SDS的新赛道 - 暗流涌动的区块链存储)...

    这篇文章是我的原创文章,里面的观点有些是基于之前的认知,有些是根据公开的报告上的数字进行的逻辑推理.可能不够准确,欢迎大家留言.私信,或者在微信群里进行讨论.我也希望借此机会通过朋友们的反馈,来进一步 ...

  7. Yottachain泛圈芝麻云服务器专业级区块链存储技术万众瞩目

    2019年5月份,由珠海市泛圈网络科技有限公司在与YottaChain联合主办的珠海站超级节点大会上,正式发布了自主研发的专注于加密数据存储YottaChain的专业服务器"芝麻云节点&qu ...

  8. Yottachain区块链存储泛圈科技芝麻云节点服务器共同肩负数据存储生态

    Yottachain区块链存储泛圈科技芝麻云节点服务器共同肩负数据存储生态 YottaChain自2018年8月创建起,就在全球范围内开展生态布局.截止目前,YottaChain已有21个全球主超级节 ...

  9. 视频| 什么是区块链,本质、意义和发展 8月22日(本周三)晚8点, 微信群在线讲座---区块链存储(下)...

    [编者按] 封面如下图是,早在2001年(甚至比云计算还要早6年!),就有团队开启构建跨越全球的存储池.向他们致敬. 上周三,由日知录主办,我主讲的<区块链存储 (上) - 什么是区块链,本质. ...

最新文章

  1. leetcode算法题--不用加减乘除做加法
  2. SpringBoot开发最佳实践
  3. SAML简介:安全地共享数字身份信息
  4. matlab som聚类算法,使用SOM对数据进行聚类
  5. Java 7:HashMap与ConcurrentHashMap
  6. 火热报名 |【 6月26日上海站】VCEC沙龙第5期:智能化技术在质量场景落地和实践...
  7. mysql 数据库军规_用尽洪荒之力整理的Mysql数据库32条军规(转)
  8. 117.填充同一层的兄弟节点II
  9. 斯坦福大学公开课IOS 7 学习笔记(2)
  10. skynet:cluster
  11. Mac制作win to go后的驱动文件
  12. Android 使用MediaProjection+ImageReader捕捉屏幕画面
  13. STM32 HAL库之USB
  14. 我是一个线程(修订版)
  15. SKYCC组合营销软件的特色
  16. 大数据概况以及Hadoop生态系统
  17. Discuz!教程之应用中心安装插件提示“数据下载错误(105)”的解决办法
  18. 使用Bento4在ubuntu16.04切片视频并生成MPD
  19. 开关电源一】电源拓扑之buck、boost、buck-boost
  20. 三星s6 android 8.0,再见Android 8.0,三星s6全系列系统都停止了,第一代国王已经倒下了吗?...

热门文章

  1. 主流家庭影院播放器软件横向评比
  2. VCS练习:VCS Debugging Basics
  3. tgp进游戏不显示服务器,TGP饥荒联机版浏览游戏在线服务器显示为0解决方法分享...
  4. 订阅号助手APP怎么插入留言板小程序?
  5. Luogu P1376 机器工厂
  6. c语言三个人的象棋,【C语言小游戏】 中国象棋(示例代码)
  7. (转) 坚持完成这套学习手册,你就可以去 Google 面试了
  8. 【工业物联网基础】工控安全入门分析
  9. 电脑怎样抠图?这几个软件能轻松实现
  10. ElasticSearch详细笔记( 从入门到入土)