速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

未来的互联网存储:5 大分布式存储平台深入比较(下)

  • 2018-12-18
  • 本文字数:7005 字

    阅读完需:约 23 分钟

未来的互联网存储:5大分布式存储平台深入比较(下)

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


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


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


本文为系列文中的《下》篇,我们将接着《》和《》篇,介绍 MaidSafe。

5. MaidSafe

状态:

活跃

说明:

SAFE 网络是用于数据存储和通信的自治分布式网络。它为每个人提供安全访问(Secure Access For Everyone,简称 SAFE)。网络上所存储的数据具有极高的可用性、耐用性、隐私性和安全性。该网络可以有效地扩展,而随着网络的扩展,存储在网络上数据的安全性也随之提高。

为什么要使用 SAFE 网络?

现有的基于服务器-客户端的互联网把数据的所有权给了操作这些服务器的人,而不是创造了这些数据的人。操作者可以限制、修改、移除或出售这些数据,而创造数据的人没有追索权。在有利于创建者的条款上,用以分发用户数据的联合协议的接受度差和可用性不强,从而催生了 SAFE 网络的创建。


客户在 SAFE 网络上存储数据,在默认情况下,受到强大的加密保护,可用通过灵活的权限控制层控制访问。


在 SAFE 网络上检索数据的客户端受安全路由和寻址系统的保护。


客户端受益于安全默认设置,包括内置的端到端加密和安全身份验证。


该网络由一组独立操作的节点(被称为 vault)组成的,这些节点可以验证、存储和传输数据。Vault 运营商可以通过提供磁盘空间和带宽供用户使用,有助于通过网络保留网络数据和网络性能。Vault 运营商可以在任何时候加入或离开网络,不会影响存储在网络上的数据安全性。


该网络的代币被称为 Safecoin,为了激发这些资源的供给,由网络分发给 vault 运营商。然后,这些代币可以用于购买网络存储空间供其使用,或使用网络上的其他资源。这激发了 vault 运营商的善意行为,使网络免受恶意行为的攻击。该网络利用 SHA3-256 标识符来保存 vault 和数据,并结合这些标识符之间的汉明距离来匿名并在全球范围内分发所有的数据和流量。


SAFE 网络改进了很多现有的互联网基础设施,包括寻址、域名系统、传输层安全、分组路由、服务器软件(如 HTTP web 服务器和 imap 邮件服务器)、验证层(如 oauth 和 openid);这些都被默认安全模块取代,这些模块结合起来使 SAFE 网络可以运作。


SAFE 在现有的物理互联网基础设施上运行,但取代了所有来自那里的网络层。它主要针对 OSI 的第 3 层到第 7 层。



The OSI Model

客户端操作(Client Operations)

客户端可用上传数据到 SAFE 网络上,也可以从该网络下载数据。这个部分概述了这些操作是如何进行的。

资源表示符(Resource Identifiers)

想要从 SAFE 下载数据的客户端,需要可以把安全资源标识符翻译成安全网络端点的软件,这跟浏览器把 HTTP 网址翻译成服务器的端点很像。下载数据不需要特殊的许可或访问,只是需要可以定位和解释网络上数据的软件。


资源作为内容可寻址的资源存储在网络上。用于这些资源的标识符是资源内容的 SHA3-256 哈希值。这个 256 位的标识符用于从网络检索资源(因此类似于 IP 地址),允许客户端指定网络的哪个部分可以为其请求服务。


256 位资源标识符可以用内置的 SAFE DNS(如 safe://www.userX/video.mp4)以人机友好的形式表示。使用能够解释 SAFE DNS 记录的软件,通过在 SAFE 网络上进行查找,可以将文件转换为 256 位标识符。

自加密(Self Encryption)

SAFE 网络上的资源上限是每个 1MB。对于大于 1MB 的文件,客户端将自动把它们的数据分成 1MB 大小的块,随后分发到全网。


这意味着在网络上的典型文件包含几个部分:在文件被分解后,包含 1MB 大小的数据的块,以及存储该文件各部分标识符的数据映射。该网络把数据映射看成是另一个数据块。


客户端保存数据映射资源标识符的记录。因此,尽管文件被分散到很多单个的资源上,也可以通过检索单个资源(也即,数据映射),实现检索整个文件。这样一来,任何资源都可以通过单个资源标识符来寻址。


数据映射也充当其所引用的数据块的加密密钥。数据块通过该密钥加密,因此 vault 不能读取单个的数据块以窥视原始数据的部分信息。这就是自加密(Self Encryption)。


此外,利用客户端软件内置的加密选项,在上传文件之前,用客户端对文件进行加密。这使用了从用户对网络进行身份验证派生出来的唯一安全密钥。这意味着,可以解密文件的密钥永远不会离开客户端,也永远不对网络公开,从而使极其安全地数据存储成为可能,就算通过数据映射访问,也无法通过网络上的任何 vault 解密。


通过自加密分割数据有很多好处:


  • 块本身是没有用的,因此,所有的块都是可替换的,对网络来说,具有同等价值

  • 客户端可以并行下载用于文件的块,提高了性能

  • 块具有独特且广泛分布的名字,因此,不容易相互关联。

  • 广泛分布的块大大降低了单个 vault 脱机时,数据丢失的可能性

  • 基于内容的黑名单是不可能存在的

不可变数据(Immutable Data)

资源标识符是由资源的内容决定的。这意味着,一个资源的两个相同副本将有相同的标识符(也即,电话和笔记本上保存着相同的照片)。这带来几个好处:


  • 资源标识符是通用的、唯一的和永久的(与目前互联网上的网址不同)

  • 资源不能在网络上复制,提高了存储效率

  • 资源的缓存规则是极其简单有效的

  • 加密资源对加密它们的密钥是唯一的,因此,不能通过存储它们的 vault 来解密

网络遍历(Network Traversal)

当客户端连接到网络时,网络为其分配会话标识符。这个会话标识符决定哪个 vault 充当其进入网络的入口点。


当客户端请求资源时,该请求被发送到其入口点 vault,然后,通过在网络上的其他 vault 进行路由,最终到达存有被请求资源的 vault。接着,数据沿着该路由传回客户端。


此路由机制通过最近的汉明距离,逐步遍历 256 位的命名空间。


所请求的资源有唯一的 256 位标识符,该标识符由自加密过程确定。充当客户端入口点的 vault 也有唯一的 256 位标识符(和所有的 vault 一样)。


块标识符与入口点 vault 标识符进行异或。产生的结果是块和 vault 之间的汉明距离。


如果相邻 vault 的标识符离开块有更小的汉明距离,那么请求被传递到那个 vault。


持续遍历下去,直到没有离块有更近汉明距离的 vault。


该块将被存储在离块标识符最近(用距离的异或值衡量)的 vault 中。


该 vault 检查其是否有所请求块的副本,并按照请求来路返回响应。


该过程形成一个请求链,其中每个 vault 只知道链中一步之遥的节点的细节。原始请求和存储块的该 vault 通过该 vault 链隔开,以使请求匿名化。


存储块时会发生相同的网络遍历。块通过其进入口点 vault 进入网络,然后进行传递,直到到达最近的 vault,然后该 vault 存储块。


路由上的节点可以缓存块,因此,如果稍后有另一个这样的请求,可以通过不同的路由,这能更快地响应,无需将请求一直延伸到最终的存储 vault。

消息传递(Messaging)

电子邮件和即时消息是当今互联网上无处不在的体验。SAFE 促进了消息传递,它可以取代 imap/smtp/xmpp 服务器。


消息可以与存储任何资源相同的方式存储在网络上。为了确保消息保持私密,发送消息前可以用接收密钥(该密钥也被当作资源存储在 SAFE 网络上)进行加密。通过同样的方法,联系人之间的连接(如 gpf 信任网)也可以通过资源在网络上表示。这个资源的集合构成了安全消息传递平台的基础。


唯一剩下的步骤是,在收到消息时,通知接收人。在当前的互联网上,新消息通常是通过给用户的收件箱添加新消息来呈现给用户的。因为,收件箱只是消息列表,所以该列表可以表示为网络上的资源。但是,在 SAFE 网络的情况下,该收件箱不是作为不可变数据创建的,而是作为可变数据创建的。后一种数据类型有固定的标识符,其不取决于资源的内容。它结合了权限系统后,允许对该标识符的数据进行更新。


该数据类型允许通过更新位于收件人的收件箱标识符的数据,来通知收件人有新消息。允许创建该收件箱资源,任何人都可以追加新数据。消息的发送方可以将标识符附加到收件人的收件箱,这样,收件人能够定位新消息。


该消息传递系统促进了像电子邮件和即时消息这样的功能的实现,而且也为其他基于消息传递的系统提供了基础,如支付、智能合约、社交网络、进程间信令、动态 web 内容、用于 webRTC 的 STUN 服务器……

可变数据(Mutable Data)

可变数据是网络上呈现的第二种也是最后一种数据类型。它允许修改处于网络上固定位置的数据。


强大的权限层允许可变数据的所有者指出谁可以修改数据以及怎样修改数据。


所有权的验证和可变数据的修改是由网络利用数字签名来实现的。可变数据的所有者可以指明哪些密钥是被允许或被拒绝用来修改数据。


允许或拒绝每个密钥对现有内容的操作。这些操作不是“更新(update)”,就是“追加(append)”。


通过明确定义的权限和加密安全签名的结合,所有者可以严格控制对可变数据的修改。


可变数据的内容可以指向另外的可变数据,允许可变数据链的创建,可变数据链可以用于许多目的,例如版本控制和分支、可验证的历史和数据恢复。

网络操作(Network Operations)

有几个由网络实施的操作允许客户端安全可靠地存储和检索数据。这些操作产生了一个抵抗攻击的自主自愈网络。

密切团体共识(Close Group Consensus)

网络上的节点(称为 vault)主要负责存储数据块。块的可用性对网络的成功来说是至关重要的。


因为任何人在任何时刻都可以添加他们的 vault 到网络或从网络中删除 vault,网络必须能够侦测到恶意行为,并在其引起数据丢失前做出响应。这需要实施一套管理 vault 可接受行为的规则。不符合该规则的 Vault 将被网络拒绝,并且不对客户数据负责。


该规则的实施通过被称为“密切团体共识(Close Group Consensus)”的过程进行。


Vault 形成彼此之间协调的团体,以便就网络上的数据状态达成共识。任何不遵守团体共识的 vault 被拒绝,并由不同的 vault 取代。


团体强制执行的规则是数据:


  • 可以存储

  • 可以检索

  • 尚未修改


这取决于团体中具有以下性质的 vault:


  • 有可用空间以存储新数据

  • 有可用带宽以在被请求时转发该数据

  • 有充分的参与以和团体中的其他 vault 达成共识

Vault 命名

所有 vault 在加入或重新加入网络时,会被网络随机分配一个唯一的 256 位标识符。那些彼此靠近的 Vault(通过其标识符之间的汉明距离衡量)形成团体。团体中的 vault 合作以形成网络上数据的共识,因此可以存储和检索数据。团体以 8 到 22 个彼此靠近的 vault 形成。网络上的 vault 越多,网络上团体的数目就越多。


如果团体中的大多数 vault 是不诚实的,那么该团体中的数据就容易被破坏。


这意味着,团体的大小要进行权衡,既要足够大到难以控制团体中的大多数 vault,也要小到能够快速达成共识。


网络的安全性问题主要是,因为攻击者可能不为其 vault 选择标识符。他们必须反复地加入和离开网络,直到网络给他们的 vault 在团体中分配标识符,该团体是他们试图控制的。他们必须为团体中的大多数 vault 执行该操作,以控制该团体的共识。


因此,控制团体的难度是由网络的规模大小来决定的,随着网络规模的增长,难度成比例地增加。网络越大,团体就越多;而团体越多,就越难加入一个特定的团体。


克服新 vault 的网络分配标识符问题是尝试滥用共识机制的困难的主要来源。

不相交的部分(Disjoint Sections)

实际要考虑的团体的形成是,团体内部消息传递的效率(也即,团体成员的共识,而不是单个 vault 行为的共识)。


团体的形成基于其标识符的前导位的相似性(标识符的该部分被称为该 Section 的前缀)。


这让 vault 的离开或加入团体的协调更简单。


如果团体保持成员数量是 8 个 vault,那就需要在新 vault 加入和离开的时候,重新组织团体之间的独立 vault。这也许会对附近的团体产生连锁反应。


与其做这个连锁的重新组织,不如把团体的规模控制在 8 到 22 个 vault 之间。如果团体成员超过 22 个 vault,它就分成两个新团体,如果它的成员小于 8 个 vault 时,那么就和最近的团体合并。


这种组织团体的方法被称为不相交的部分(Disjoint Section)。

流失(Churn)

在网络上随机位置上建立 vault,以防止对团体共识机制的攻击。这个安全性通过间歇性的 vault 重定位得到进一步的强化。必须发生了对团队的攻击后,才能重定位。


一个 vault 通过网络重新分配一个新的随机标识符进行重定位。这导致了其离开现在的团体,并成为新团体的一部分。它之前存储的所有块变成不同 vault 的责任,并由团体共识机制自动处理。该重定位的 vault 现在必须存储离它的新标识符最近的块,并继续与新的 vault 团体构建共识。


该机制被称为流失(churn),是在新 vault 加入网络或现有 vault 离开时发生的相同过程的延伸。

耕作(Farming)

Vault 运营商加入网络和为安全数据存储而合作的动机是由网络代币激发的。该代币(称为 safecoin)可以兑换网络上的资源或用来与网络上提供的其他资源进行交互。该代币的激发作用和区块链上的代币类似,以确保合作参与比不合作参与更合理。


代币是由网络上的不可变数据表示。网络定义了总共 232 个不可变数据资源作为 safecoin 对象,最初不存在拥有者,因此不存在要考虑的代币经济。


网络通过资源证明机制间歇性地分配无归属的 safecoin 给网络的参与者,这引起了代币的总体数量随着时间的推移而增长,充当了代币和网络存储经济的引导机制。


用 safecoin 交换网络资源时,分配的 safecoin 的总体数量也可能缩减。用户必须交换 safecoin 以在网络上存储数据。这涉及向网络提交 safecoin,然后,网络删除 safecoin 的拥有者,并分配网络存储空间给该用户使用。这个机制被称为代币回收,通过资源证明为分配的 safecoin 的增长提供了平衡。


通过数字化签名,把 safecoin 可变数据资源的所有权转移到接收者的密钥上,实现在用户之间的 safecoin 的转移。利用存储在可变数据资源中的现有拥有者的密钥,可以轻松地验证数字化签名。一旦所有者的信息被更新,转移过程就完成了,这使得 safecoin 的转移极其快速、有效和安全。

资源证明(Proof Of Resource)

当网络观察到 vault 的合作行为时,vault 就有权要求拥有一个 safecoin。每个声明的特定 safecoin 标识符是网络随机生成的。


如果该标识符的 safecoin 当前没有归属,那么网络就把它分配给该 vault 的所有者,从而将“铸造(minting)”一个新 safecoin 到该经济体系中。


如果该标识符的 safecoin 已经有归属,那么不会有进一步的行动。从这个意义上说,与区块链工作证明非常类似,safecoin 的 farming 有个机会因素,其会导致与所提供的资源成比例的均匀分布。


分配 safecoin 的速率的调整方式和区块链难度机制类似。该调整旨在平衡网络上的资源可用性。在需要的时候,它鼓励提供更多资源,并在过度供应的时候,通过降低奖励来减少过度的浪费。


Safecoin 支付算法尚未正式指定或实施。


网络把合作行为定义为带宽和存储空间的可靠供应,并继续参与达成共识。与区块链工作证明不同,其最终用户从挖矿能力的进一步增长中得到的收益递减,资源证明机制持续为最终用户提供与网络资源增长成比例的效用。

结论

SAFE 网络是用于可靠数据存储和通信的自治网络。健壮的数据存储和消息传递系统的组合形成了互联网大多数的现有基础设施的安全和私有替代方案。


利用内容可寻址资源标识符和自加密,可以有效且可靠地把数据存储在网络上。


数据能得以保存而不会遭到破坏,可以在任何时候通过密切团体共识(close group)和不相交部分(disjoint sections)进行检索。


在所达成的系统阻止恶意行为的规则范围内,网络分配代币以激励资源的供应,并确保对未来的客户持续的资源供应。该分布基于资源证明机制,该机制难以作弊,并表现出积极的外部性。


该网络随着更多 vault 的加入,提高了速度、安全性和可靠性,使得规模的快速增长成为优势而非问题。


最终用户受益于默认安全模块和灵活的权限层,以最适合其需要的方式控制访问。SAFE 网络将很多独立模块组合在一起,为所有人创建具有安全访问的网络。


MaidSafe Reddit | MaidSafe Twitter | MaidSafe Github

小结

本文是《未来的互联网存储:5 大分布式存储平台深入比较》之《下》篇,介绍的是 MaidSafe。SAFE 网络是用于数据存储和通信的自治分布式网络。它强调为每个人提供安全访问,并且随着网络的扩展,安全性也会提高。文中解释了为什么使用 SAFE 网络,并对以下概念进行了详细的说明介绍:客户端操作、资源表示符、自加密、不可变数据、网络遍历、消息传递、可变数据、密切团体共识、Vault 命名、不相交的部分、流失、耕作、资源证明等。


《未来的互联网存储:5 大分布式存储平台深入比较》之《上》篇介绍的是 Swarm 和 IPFS。有兴趣的读者请点击这里进行阅读。


《未来的互联网存储:5 大分布式存储平台深入比较》之《中》篇介绍的是 Sia 和 Storj。有兴趣的读者请点击这里进行阅读。


以上就是本文全部内容了。如果您发现任何遗漏或错误,欢迎在评论区指出。谢谢阅读。


作者简介:Vaibhav SainiTowardsBlockchain的联合创始人,TowardsBlockchain 是麻省理工剑桥创新中心孵化的初创公司。


他是一位高级区块链开发人员,参与多个区块链平台的工作,其中包括:以太坊、Quorum、EOS、Nano、Hashgraph 以及 IOTA 等等。


阅读英文原文StoragePedia: An Encyclopedia of 5 Blockchain Storage Platforms


2018-12-18 09:303178
用户头像

发布了 199 篇内容, 共 85.7 次阅读, 收获喜欢 295 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

第一周作业1-食堂就餐系统设计

Geek_10

架构师训练营第一周命题作业

whiter

极客大学架构师训练营

软件设计方法论

而立斋

学习 思维导图 软件设计 设计实践

驳《阿里「Java开发手册」中的1个bug》?

王磊

Java 性能优化 性能

【练习】食堂就餐卡系统设计

张金峰

极客大学架构师训练营

架构师 week 1 作业二

iLeGeND

数仓系列 | Flink 窗口的应用与实现

Apache Flink

大数据 flink 流计算 实时计算

作业二

姜 某某

如何从 0 到 1 参与 Flink 社区?

Apache Flink

大数据 flink 流计算 实时计算

第一周学习总结

Thrine

01周-就餐卡系统设计

dao

极客大学架构师训练营 实验品

第一周作业二:架构师第一周上课总结

Geek_10

Flink 1.10 Container 环境实战

Apache Flink

大数据 flink 流计算 实时计算

作业一

姜 某某

架构师训练营-第一章 心得总结

Linkin

架构设计文档的一些心得

elfkingw

架构师训练营第一周总结

好名字

总结 极客大学架构师训练营

01.食堂就餐卡系统简要设计以及学习总结

昵称

食堂就餐卡系统架构设计

时来运转

极客大学架构师训练营

第一周学习感想

heeeeeeyZ25

食堂就餐卡系统设计

heeeeeeyZ25

直播 | 阿里、快手、Databricks、网易云音乐...国内外大数据大佬齐聚一堂要聊啥?

Apache Flink

大数据 flink 流计算 实时计算

食堂就餐卡系统设计 UML

Kun

极客大学架构师训练营

redis线程模型

wjchenge

极客时间架构课Week01-作业一:食堂就餐卡系统设计

yulyulcl

TypeScript:重新发明一次 JavaScript

LeanCloud

Java node.js typescript 大前端

食堂就餐卡系统设计

互金从业者X

for 语句

Hello

【架构】— 写在前面的话

不二架构

总结 感悟 极客大学架构师训练营

架构师训练营第一周学习总结

时来运转

极客大学架构师训练营

架构师是怎样炼成的

彭阿三

架构

未来的互联网存储:5大分布式存储平台深入比较(下)_区块链_Vasa_InfoQ精选文章