谈到区块链和分布式计算,最重要的是共识算法和智能合约。但是,谈及日常应用程序,这些属性还不足以支持当今世界的需求。如果我们只依靠上述这两项,就难以想象像在 Netflix 上那样观赏喜爱的电影或电视剧、像在脸书上那样存储或分享值得纪念的视频或照片,或在区块链上玩喜爱的在线游戏(如 DOTA)。
我们缺少一个强大、安全和去中心化的内容存储以及分发系统,服务于当今的应用程序。
下面,我们将探索和评估一些最流行的分布式存储平台。
本文为系列文中的《中》篇,我们将接着《上》篇,介绍 Sia 和 Storj。
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
小结
本文是《存储百科全书:5 大区块链存储平台的百科全书 所有主要分布式存储平台的深入比较》之《中》篇,介绍的是 Sia 和 Storj。Sia 是分布式云存储系统,专注于创建分布式、自我维持且便宜的云存储市场。文中详细介绍了 Sia 的一些特点,如:文件在上传之前被分割、每个文件片段都被加密、发送文件到主机则是利用智能合约、租户和主机都用 Siacoin 进行支付、合约随着时间的推移而更新。而 Storj 属于第一批去中心化、端对端的加密云存储平台,是由互锁件组成的。文中对 Storj 协议、合约和审计、Storj 网络、Storj 工具包、StorjShare 及 Bridge 进行了详细的说明。
《未来的互联网存储:5 大分布式存储平台深入比较》之《上》篇介绍的是 Swarm 和 IPFS。有兴趣的读者请点击这里进行阅读。
《未来的互联网存储:5 大分布式存储平台深入比较》还有《下》篇,将为大家介绍 MaidSafe。敬请读者们期待。谢谢。
作者简介:Vaibhav Saini是TowardsBlockchain的联合创始人,TowardsBlockchain 是麻省理工剑桥创新中心孵化的初创公司。他是一位高级区块链开发人员,参与多个区块链平台的工作,其中包括:以太坊、Quorum、EOS、Nano、Hashgraph 以及 IOTA 等等。
阅读英文原文:StoragePedia: An Encyclopedia of 5 Blockchain Storage Platforms
评论 1 条评论