搜狐首页 科技 刺客列传2

手机搜狐

SOHU.COM

如何实现一个去中心化的云存储

在去中心化计算的应用中,有一个激动人心的应用,在过去的一年里引起了相当大的兴趣,那就是受激励的去中心化在线文件存储系统的概念。目前,如果你想你的文件或者数据安全地在云端备份,你有3种选择:(1).上传它们到自己的服务器,(2). 使用一个中心化的应用,如 Google drive 或者 Dropbox,或者是 (3). 使用已经存在的去中心化的应用,如 Freenet。这些方法都有它们自己的缺点:第一种方法有着昂贵的建立和维护费用;第二种方法依赖于一个单可信任实体,并且常常涉及重大价格上涨;第三种方法速度慢,对每一位用户在空间容量方面有着很高的限制,因为它依赖于用户自愿奉献存储空间。受激励的文件存储协议有潜力成为第四种方法,通过无中心化地激励执行者 (存储用户数据的客户) 参与其中,提供高容量存储与高质量服务。该问题在某种意义上看起来是简单的,所有的工具要么已经存在了,要么正在构建的过程中,我们所需要的就是实现而已。然而,该问题其中的一小部分尤其重要:我们如何合适地引进冗余性?冗余对于安全来说至关重要,尤其是在一个去中心化的网络中,业余爱好者与临时性用户占大部分,我们绝对不能依赖于单节点保持在线。我们可以简单地复制用户数据,让一些节点存储单独的拷贝,问题是:我们能做的更好吗?事实证明,我们当然可以。

Merkle Trees 与 Challenge-Response 协议

在我们进入最为重要的冗余性部分之前,我们首先讲解一些更容易的部分:我们如何创建一个至少激励一个实体保持文件的最为基本的系统?没有激励的系统中,问题将会变得更加容易,你上传文件,等待其它的用户来下载它,当你再次需要该文件的时候,通过文件的哈希来发出一个查询请求。如果我们想引进激励机制,问题某种程度上变得更加困难,但是在大事的计划中,依旧不是那么难。

在文件存储的上下文中,有两种实体你可以激励。第一种是你发出一个下载文件的请求时,实际向你发送文件的实体。这很容易可以做;最好的策略是一种类似于简单的 tit-for-tat 游戏,发送者发送 32 kb,你发送 0.0001 个币,然后发送者发送另一 32 kb,以此类推。注意在没有冗余以及大文件的情形下,这个策略是极易受到敲诈勒索攻击的。一个文件的 99.99% 对于你来说是毫无用处的,所以存储者有机会敲诈你,让你为文件的最后一部分付出高昂的费用。对该问题最聪明的解决办法是,让文件是自冗余的,使用一种特殊的编码来扩展该文件,如文件 11.11% 自冗余,那么该文件的任意 90% 都可以来恢复原文件的内容,并且对存储者隐藏该文件的自冗余百分比。然而,随后针对不同的目的,我们将讨论一个非常类似的算法。所以现在,接受该问题已被解决。

精选