五种去中心化的分布式存储平台介绍
扫描二维码
随时随地手机看文章
区块链和分布式技术的最重要一部分就是共识算法(整个网络如何达成共同决策)和智能合约(用于执行我们在这个中心化世界中每天使用的应用程序)。
但是当我们在使用日常应用程序时,这些属性是不足以满足当今世界的需求。如果只具备上述两种属性,想在优酷Netflix上面观看喜欢的电影/电视剧、在社交网络facebook上面存储/记录视频/图片、或是在区块链上面玩你最喜欢的游戏,比如DOTA、LOL等,这一切都将很难实现。
我们现在所缺失的是一个强大的、安全的且去中心化的内容存储和分布式系统,来为当前数以亿计的应用程序提供数据存储的服务。
下面我们将探索并评估一些最受欢迎的分布式存储平台(IPFS、Swarm、Sia、Storj、MaidSafe),由于篇幅较长,我们将分成上下部分。
1. IPFS
状态:已上线(其激励系统,“Filecoin”尚未上线)
阐述:IPFS(星际文件系统)一种点对点(p2p)文件共享系统,旨在从根本上改变信息在全球各地的分布方式。
IPFS由通信协议和分布式系统中的部分创新演变而生,这些创新已被组合以产生与众不同的文件系统。因此,要全面了解IPFS试图实现的广度和深度,重要的是要了解将其实现的技术突破以及它试图解决的所有问题。
IPFS的最终目的是取代HTTP,那么,让我们来看看现今的互联网是如何运作的。
简而言之,互联网是一组描述数据如何在网络中移动的协议。开发人员随着时间的推移采用这些协议,并在此基础架构之上构建应用程序。作为Web主干的协议之一是HTTP即超文本传输协议,这是由Tim Berners-Lee于1991年发明的。
HTTP是一个请求-响应的协议,客户端(例如Web浏览器)向外部服务器发送请求, 然后,服务器将响应消息(例如,Google主页)返回给客户端, 这是一个位置寻址协议,意味着当我将google.com键入我的浏览器时,它会被转换为某个Google服务器的IP地址,然后该服务器会启动请求 - 响应周期。
HTTP的问题
假设你正坐在演讲厅,教授要求你去访问指定的网站。讲座中的每个学生都向该网站提出请求并得到回复。这意味着相同的准确数据会单独发送给屋子里的每个学生。如果有100名学生,则有100个请求和100个回复。这显然不是最有效的做事方式。理想情况下,学生将能够利用他们的物理距离优势来更有效地检索他们所需的信息。
如果网络通信线路中存在某些问题并且客户端无法与服务器连接,则HTTP也会出现大问题。如果ISP发生中断,某个国家/地区禁止某些内容,或者内容只是被删除或移动,就会发生这种情况。这些类型的断开链接存在HTTP Web上随处可见。
HTTP的基于位置的寻址模型鼓励中心化,使用我们的所有数据信任少数几个应用程序很方便,但由于这一点,网络上的大部分数据都变得很混乱,这使得这些提供商对我们的信息负有巨大的责任和权力(例如facebook)。
HTTP非常适合加载网站,但它不是为传输大量数据(如音频和视频文件)而设计的。这些限制可能使Napster(音乐共享服务)和BitTorrent(电影共享服务)等替代文件共享系统的出现和主流成功。
快进到2018年,按需高清视频流和大数据正在变得无处不在; 我们正在继续向上生产/消耗越来越多的数据,以及开发越来越强大的计算机来处理数据。 云计算的重大进步有助于维持这种转变,但分发所有这些数据的基础架构基本保持不变。
解决方案
IPFS最初是由Juan Benet努力构建一个能够快速迁移版本化科学数据的系统。它是经过充分测试的互联网技术的综合,如DHT,Git版本系统和Bittorrent。 它创建了一个P2P群,允许交换IPFS对象。 IPFS对象的总体形成加密认证的数据结构,称为Merkle DAG,并且该数据结构可用于模拟许多其他数据结构。 或者换句话说。..。..
IPFS是一种分布式文件系统,旨在将所有计算设备与相同的文件系统连接起来。在某些方面,这类似于Web的原始目标,但IPFS实际上更类似于交换git对象的单个bittorrent群。 IPFS可以成为互联网的一个新的主要子系统。如果搭建正确,它可以补充或替换HTTP,或许补充或替代更多,听起来很疯狂,是很疯狂。
IPFS的核心是一个版本化文件系统,它可以接收文件并对其进行管理,并将它们存储在某个地方,然后跟踪版本。 IPFS还考虑了这些文件如何在网络中移动,因此它也是一个分布式文件系统。
IPFS规定了数据和内容如何在网络上移动,其性质与bittorrent相似。此文件系统层提供了非常有趣的属性,例如:
完全分布式的网站。
没有原始服务器的网站。
可以完全在客户端浏览器上运行的网站。
没有任何服务器可以与之交谈的网站。
让我们看看这些不同的技术突破如何协同工作。
分布式哈希表
哈希表是将信息存储为键/值对的数据结构。在分布式哈希表(DHT)中,数据分布在计算机网络上,并且有效地协调以实现节点之间的有效访问和查找。
DHT的主要优点是去中心化,容错和可扩展性。节点不需要集中协调,即使节点发生故障或离开网络,系统也能可靠地运行,DHT可以扩展以容纳数百万个节点。这些特征共同导致系统通常比客户端 - 服务器结构更具弹性。
区块交换
流行的文件共享系统Bittorrent能够通过依赖创新的数据交换协议成功协调数百万个节点之间的数据传输,但它仅限于torrent生态系统。 IPFS实现了该协议的通用版本,称为BitSwap,它作为任何类型数据的市场运行。这个市场是Filecoin的基础:一个基于IPFS的p2p存储市场。
Merkle DAG
merkle DAG是Merkle树和有向无环图(DAG)的混合体。 Merkle树确保在p2p网络上交换的数据块是正确的,未损坏的和不变的。 通过使用加密哈希函数组织数据块来完成此验证。 这只是一个函数,它接受输入并计算与该输入相对应的唯一字母数字字符串(哈希)。 很容易检查输入是否会产生给定的哈希值,但很难猜测哈希的输入。
各个数据块称为“叶节点”,它们被散列形成“非叶节点”。 然后可以组合和散列这些非叶节点,直到所有数据块可以由单个根哈希表示。这是一种更简单的概念化方法:
DAG是一种模拟没有周期的拓扑信息序列的方法。 DAG的简单示例是族谱。 merkle DAG基本上是一种数据结构,其中哈希用于引用DAG中的数据块和对象。 这创建了几个有用的功能:IPFS上的所有内容都可以唯一标识,因为每个数据块都有唯一的哈希。 此外,数据是防篡改的,因为改变数据就会改变哈希,如下所示:
IPFS的核心原则是对广义Merkle DAG上的所有数据进行建模。这种安全功能的重要性很难夸大。用一个例子来表明这个想法有多么强大,价值数万亿美元的资产受到这一原则的保护。
版本控制系统
Merkle DAG结构的另一个强大功能是它允许您构建分布式版本控制系统(VCS)。最受欢迎的例子是Github,允许开发人员轻松地同时协作项目。 Github上的文件使用merkle DAG进行存储和版本化。允许用户独立复制和编辑文件的多个版本,存储这些版本并且稍后将编辑文件与原始文件合并。
IPFS对数据对象使用类似的模型:只要响应于原始数据的对象和任何新版本都可访问,就可以检索整个文件历史记录。鉴于数据块通过网络本地存储并且可以无限期缓存,这意味着可以永久存储IPFS对象。
此外,IPFS不依赖于对Internet协议的访问。 数据可以分布在覆盖网络中,覆盖网络只是构建于另一个网络之上的网络。 这些特点值得注意,因为这是抗审查网络的核心要素。 可以成为促进言论自由以对抗全球互联网审查普及程度的有用工具,但我们也应该认识到不良行为者可能滥用言论。
自我认证文件系统
我们将介绍的IPFS的最后一个重要组成部分是自我认证文件系统(SFS)。它是一个分布式文件系统,不需要特殊的数据交换权限。它是“自我认证”的,因为提供给客户端的数据是通过文件名(由服务器签名)进行身份验证的。结果?您可以利用本地存储的透明性安全地访问远程内容。
IPFS以此概念为基础,创建了星际名称空间(IPNS)。它是一个SFS,使用公钥加密技术来自我认证网络用户发布的对象。我们之前提到IPFS上的所有对象都可以唯一标识,但这也会扩展到节点。网络上的每个节点都有一组公钥,私钥和一个节点ID,是其公钥的哈希值。因此,节点可以使用其私钥来“签署”他们发布的任何数据对象,并且可以使用发件人的公钥来验证此数据的真实性。
以下是关键IPFS组件的快速回顾:
使用分布式哈希表,节点可以存储和共享数据,而无需中央协调。
IPNS允许使用公钥加密技术立即预先验证和验证交换的数据。
Merkle DAG可实现唯一标识,防篡改和永久存储的数据。
可以通过ConsenSys查看有关文件如何在网络中分发的更多信息(深入了解)。
2. Swarm
状态:已上线
说明:
Swarm是一种分布式存储平台和内容分发服务,是以太坊web3堆栈的本地基础层服务。 Swarm的主要目标是为以太坊的公共记录提供充分去中心化和冗余的存储,特别是存储和分发dapp代码和数据以及区块链数据。 从经济角度来看,它允许参与者有效地汇集其存储和带宽资源,以便为所有网络参与者提供这些服务,同时受到以太坊的激励。
目的
Swarm更全面的目标是为去中心化网络应用程序(dapps)的开发人员提供基础设施服务,特别是:消息传递,数据流,点对点管账,可变资源更新,存储保险,监管扫描和维修证明,支付渠道和数据库服务。
从最终用户的角度来看,除了上传不托管在特定服务器上,Swarm与万维网没有什么不同。 Swarm提供点对点存储和服务解决方案,具有DDoS抗性,零停机,容错和抗审查以及自我维护的特点,因为内置的激励系统使用点对点管账并允许交易资源进行支付。 Swarm旨在与以太坊的devp2p多协议网络层以及以太网区块链进行深度集成,以进行域名解析(使用ENS),服务支付和内容可用性保险。
注意:为了解析ENS名称,您的Swarm节点必须连接到以太坊区块链(主网或测试网)。
请参阅我们的发展路线图,随时了解swarm的进展情况。
概述
Swarm旨在为新的去中心化互联网提供基础层基础架构。 Swarm是节点的点对点网络,通过向彼此提供资源(存储,消息转发,支付处理)来提供分布式数字服务。以太坊基金会运行Swarm测试网络,可用于以类似于以太坊测试网(ropsten)的方式测试功能。每个人都可以通过在其服务器,台式机,笔记本电脑或移动设备上运行Swarm客户端节点来加入网络。有关如何执行此操作,请参阅Swarm入门。 Swarm客户端是以太坊堆栈的一部分,参考实现是用golang编写的,可以在go-ethereum存储库中找到。目前Swarm正在POC(概念证明)0.3版本所有节点上运行。
Swarm提供了一个本地HTTP代理API,dapp或命令行工具可以使用其与Swarm交互。某些模块(如消息传递)仅可通过RPC-JSON API获取。测试网上的基础服务器提供公共网关,用于轻松演示功能并允许自由访问,以便人们可以在不运行自己的节点的情况下尝试Swarm。
Swarm是devp2p网络的节点集合,每个节点在相同的网络ID上运行bzz协议组件。
swarm节点还可以与一个(或多个)以太坊区块链连接以进行域名解析,并使用一个以太坊区块链进行带宽和存储补偿。运行相同网络ID的节点应该连接到相同的区块链进行支付。Swarm网络由其网络id标识,该网络id是任意整数。
Swarm允许上传和离开,这意味着任何节点都可以只将内容上传到Swarm,然后允许其离线。只要节点不丢失或不可用,由于节点在彼此之间连续传递可用数据的“同步”过程,内容仍然可以访问。
公共网关
Swarm提供了一个本地HTTP代理API,Dapp可以使用它与Swarm进行交互。以太坊基金会正在托管一个公共网关,允许免费访问,以便人们可以在不运行自己的节点的情况下尝试使用Swarm。
可以在https://swarm-gateways.net找到Swarm公共网关,并始终运行最新的稳定Swarm版本。
注意:此网关目前仅接受有限大小的上传。在未来,可能无法上传到此网关。
上传和下载数据
上传内容包括将内容“上传”到你的本地Swarm节点,然后你的本地Swarm节点将所生成的数据块与网络中的节点“同步”。同时,下载内容包括你的本地Swarm节点查询网络中的节点以获取相关数据块,然后在本地重新组合内容。
内容解析器:ENS
注意:为了解析ENS名称,你的Swarm节点必须连接到以太坊区块链(主网或测试网)。
ENS是Swarm用于允许通过可读名称引用内容的系统,例如“theswarm.eth”。它的操作类似于DNS系统,将可读名称转换为机器标识符 - 在本例中,是你引用内容的Swarm哈希值。通过注册名称并将其设置为解析你网站根目录的内容哈希,用户可以通过bzz://theswarm.eth/等网址访问您的网站。
注意:目前主流浏览器(如Chrome,Firefox或Safari)不支持bzz方案。如果您想通过这些浏览器访问bzz方案,目前您必须使用HTTP网关,例如https://swarm-gateways.net/bzz:/theswarm.eth/或使用支持bzz方案的浏览器,如Mist。
可变资源更新
可变资源更新是一个高度实验性的功能,可从Swarm POC3获得。 目前正在积极开发,所以让我们静观其变。
我们之前在本指南中已经了解到,当我们在Swarm中对数据进行更改时,上传该数据时返回的哈希将以完全不可预测的方式发生变化。 通过可变资源更新,Swarm提供了一种内置方法,可以为不断变化的数据保留永久标识符。
保持指向更改数据的指标的常用方法是使用以太坊名称服务ENS。 但是,ENS是一个链上功能,它限制了某些领域的功能:
1. 每次更新ENS解析器都会花费你的燃料来执行。
2. 更改数据的速度不可能比新块的开采速度更快。
3. 正确的ENS解析要求你始终同步到区块链。
可变资源更新允许我们在不必使用ENS的情况下为变更数据提供非变量标识符。可以使用创建资源时获得的密钥(MRU_MANIFEST_KEY),像常规Swarm对象一样引用可变资源。更新资源的数据时,MRU_MANIFEST_KEY将指向新数据。
如果将可变资源更新与ENS解析器合约一起使用,则只需要一个初始交易来注册MRU_MANIFEST_KEY。此密钥将解析为最新版本的资源(更新资源不会更改密钥)。
与Mutable资源更新有3种不同的交互方式:HTTP API,Golang API和Swarm CLI。
需要注意的事项:
只有创建资源的私钥(地址)才能更新。
创建可变资源时,必须提供的参数之一是预期的更新频率。指的是你的资源更新的频率(以秒为单位)。虽然您可以以其他速率更新资源,但这样做会减慢检索资源的过程。
Swarm数据加密
现在,在POC 0.3中引入了对称加密,可以与swarm up上传命令一起使用。加密机制旨在保护您的信息,并使得分块数据对于任何Swarm控制节点都不可读。
Swarm使用Counter模式加密来加密和解密内容。将内容上传到Swarm时,上传的数据将拆分为4 KB块。这些块将全部使用分别随机生成的加密密钥进行编码。在本地Swarm节点上加密,未加密的数据不与其他节点共享。单个块(以及整个内容)的引用将是编码数据的哈希和解密密钥的连接。这意味着引用将比标准的未加密Swarm引用(64字节而不是32字节)更长。
当你的节点将内容的加密块与其他节点同步时,不会与其他节点共享完整引用(或任何方式的解密密钥)。这意味着其他节点将无法访问你的原始数据,而且他们将无法检测同步的块是否已加密。
检索数据时,只会在本地Swarm节点上解密。在整个检索过程中,块以加密形式遍布网络,并且没有参与的节点能够将其解密。它们仅在您用于下载的Swarm节点上解密和汇编。
需要注意的事项:
Swarm支持加密。由于无法撤消上传,因此强烈建议不要上传未加密的敏感数据和私有数据。用户应避免上传非法,有争议或不道德的内容。
Swarm目前通过使用--encrypt标志支持加密和未加密的swarm up命令。这在将来可能会发生变化。
加密功能是非确定性的(由于在每个上传请求中生成随机密钥),API的用户不应该依赖于等幂结果;因此,在启用加密的情况下将相同内容两次上载到Swarm将不会产生相同的引用。
PSS
pss(Swarm上的Postal Service)是一种基于Swarm的消息传递协议,具有强大的隐私功能。 pss API通过API Reference中描述的JSON RPC接口公开,这里我们解释了基本概念和功能。
注意:pss仍然是一个实验性功能,正在积极开发中,可从Swarm的POC3开始使用。敬请期待更新。
基本概念
使用pss,您可以将消息发送到Swarm网络中的任何节点。消息的路由方式与检索块请求的方式相同。 pss消息不是块哈希引用,而是在覆盖地址空间中指定目的地,而与消息有效负载无关。如果特定节点是完整的覆盖地址,则该目的地可以描述该特定节点,如果部分指定了一个节点,则到该目的地之前,使用转发kademlia通过devp2p对等连接中继消息(使用kademlia路由通过中继节点之间的半永久性对等TCP连接传递消息)。在目的地邻域内,使用gossip广播消息。
由于pss消息是加密的,因此最终接收者是可以解密消息的人。 可以使用非对称或对称加密方法来完成加密。
消息有效负载由接收方节点分派给消息处理程序,并通过API分派给订户。
注意:pss不保证此时的消息排序(尽力传递)和消息传递(例如,不会缓存和重放到脱机节点的消息)。
隐私功能
由于端到端加密,pss适合私人通信。
由于转发kademlia,pss提供发件人匿名服务。
使用部分寻址,pss提供了收件人匿名的浮动比例:目标邻域越大(显示的预期收件人覆盖地址的前缀越小),识别真实收件人就越困难。 另一方面,由于暗路由效率低,因此在匿名性与消息传递延迟和带宽(因此成本)之间存在折衷。 这个选择留给应用程序。
如果使用Handshakes模块,则提供转发保密服务。
注意事项:
始终对敏感内容使用加密!对于加密内容,上传数据是“受保护的”,即只有那些了解对根块的引用(文件的swarm哈希以及解密密钥)才能访问内容的。由于发布此引用(在ENS或MRU上)需要其他步骤,因此只要用户使用加密,就可以轻松地确保用户不会手误发布。即使不能保证删除,尚未确保安全性的未访问内容最终也会从Swarm中消失,因为节点将被激励,以便在存储容量限制的情况下对其进行垃圾回收。
在执行存储保险之前,不保证上传的内容会持久存储在测试网上(有关详细信息,请参阅路线图)。所有参与节点都应该考虑参与志愿服务而没有任何正式义务,并且应该按照他们的意愿删除内容。因此,在激励系统运行之前,用户在任何情况下都不应将Swarm视为安全存储。
Swarm是一个持久数据结构,因此在Swarm中没有删除操作的概念。这是因为内容被传播到被激励的swarm节点以提供服务。
3. SIA
状态:已上线
阐述:
SIA为租用者提供访问去中心化云存储平台,以便利用更便宜,更快捷的方式使用对任何人开放且不受单一权威来源管理的数据中心。 Siacoin基于独立的Sia区块链,并在存储租用者和提供者之间达成协议。
文件在上传之前被划分
Sia软件在上传之前将文件分为30个段,每个段都用于分发给世界各地的托管方。 此分发确保没有托管方会出现单点故障,并加强了整体网络正常运行时间和冗余。
文件段是使用名为Reed-Solomon擦除编码的技术创建的,通常用于CD和DVD。 擦除编码允许Sia以冗余方式划分文件,其中30个段中的任何10个段可以完全恢复用户的文件。
这意味着如果30个托管方中有20个离线,Sia用户仍然可以下载他/她的文件。
每个文件段都是加密的
在离开租用者计算机之前,每个文件段都是加密的。 这可确保托管方仅存储加密的用户数据段。
这与亚马逊等传统云存储提供商不同,后者默认不加密用户数据。 Sia比现有解决方案更安全,因为托管方只存储加密的文件段,而不是整个文件。
Sia使用Twofish算法,这是一种开源和安全加密标准,是高级加密标准(AES)竞赛的决胜者。
使用智能合约将文件发送给托管方
使用Sia区块链,租用者与托管方形成文件合约。 这些合约规定了租用者和托管方之间的定价,正常运行时间承诺和其他方面的关系。
文件合约是一种智能合约。 允许我们创建存储在Sia区块链中的加密服务级别协议(SLA)。
由于文件合约由网络自动执行,因此Sia不需要中介或受信任的第三方。
租用者和托管方使用Siacoin支付
租用者和托管方都使用Siacoin,这是一种基于Sia区块链的独特加密货币。 租用者使用Siacoin购买托管方的存储容量,而托管方将Siacoin存入每个文件合约作为抵押品。
微支付使用称为支付渠道的技术在租用者和托管方之间产生资产流动,这类似于比特币的闪电网络。 租用者和托管方之间的付款发生在链外,大大提高了网络效率和可扩展性。 您可以在此处查看有关付款渠道的详情:
由于托管方为每个存储合同支付抵押品,因此它们对离线具有很强的抑制作用。
每当用户和托管服务提供商在Sia上签订合约时,用户必须提供津贴(以支付托管费用),并且托管服务提供商必须存入押金(以确保良好的行为)。合约订立后,软件将收取3.9%的津贴和押金,并支付给Siafunds的持有人,Siafunds是协议的次要代币。制定协议的公司Nebulous Labs拥有约90%的Siafunds。
这当然是一个有趣的长期融资模式,是当今流行的“一次性”ICO模式的替代品;但是,此功能可能会给系统带来结构成本,使其比竞争对手费用更高。文件存储可能是一个竞争激烈的市场,显著降低了价格(与目前的中心化选项相比)。一旦部署了若干不同的去中心化云存储平台,这些协议将不仅与中心化替代方案竞争,而且还将彼此竞争。 Sia对津贴和押金分别征收3.9%的费用,但在大多数合约中,两项费用均由用户支付。其他协议没有这种结构成本,长期看来这种方式更优惠并且对用户更具吸引力。
价格会发生变化,但您可以预计在109个Siacoins地区进行支付或者可以选择每个TB每月1美元的价格。
合同随着时间的推移而更新
租用者进行预付款以便在文件合约中存储,留出固定数量的Siacoin用于存储和传输数据。文件合约通常为期90天。
当Sia在某个到期窗口内时,会自动续订合约。如果合约没有续签,Sia会在合约期结束时将任何未使用的金额退还给租用者。
当各个主机脱机时,Sia会在文件修复的过程中自动将租用者数据移动到新托管方。
托管方提交存储证明
在文件合约结束时,托管方必须证明他/她正在存储租用者的数据。称为存储证明。如果存储证明在特定时间范围内出现在区块链上,则托管方将收到付款。如果没有,托管方将受到处罚。
通过称为Merkle树的技术实现存储证明。 Merkle树可以证明一小段数据是较大文件的一部分。这些证明的优点是它们非常小,无论文件有多大。这很重要,因为证明永久存储在区块链中。
最后,Sia面临着入门的重要障碍。目前,必须购买比特币,使用它来购买Siacoins,并将Siacoins发送到Sia客户端软件以开始使用网络。对于尚未持有加密货币的日常用户,这是一个主要障碍。也为企业客户提出了一个问题,因为出于监管和财务风险的原因,大多数企业仍然不愿意持有或交易加密货币。迄今为止,Sia团队没有优先考虑方案,可访问性或我们自身的能力,也没有表明这是一个重要的优先事项。
注意事项:
与Swarm和IPFS不同,Sia是一个分布式云存储系统。它不专注于创建替代http的基础架构,而是专注于为云存储创建分布式,自我维持且价格优惠的市场。
4. Storj
状态:已上线
阐述:
Storj(发音为:storage)旨在成为一个无法审查,监控或停机的云存储平台。它是首个去中心化端到端加密云存储平台之一。
Storj由一系列互锁件组成,共同构成一个统一的系统。当人们与该系统的各个部分进行交互时,他们对Storj的含义有了不同的看法。家庭用户不需要任何Bridge或协议知识来共享存储空间,并且开发人员不需要知道有关家庭用户的任何信息以便使用Storj API。每个人在与同一系统交互时都可以拥有截然不同的体验。那么Storj是什么?它是一个协议,一套软件,也是设计,构建和使用它的人。
Storj协议
Storj的核心技术是可执行的点对点存储合约。这是两个人(或计算机)同意在不了解对方的情况下交换一定数量的存储空间的方式。我们称计算机销售空间为“矿工”,计算机购买空间为“租用者”。租用者和矿工会面,协商协议,并将数据从租用者转移到矿工处进行保管。
合约和审计
合约有一定的期限。在这段时间内,租用者会定期检查矿工是否仍然有闲置空间。矿工用加密证明回答仍在保留文件。最后,租用者向矿工支付其收到并验证过的每份证明。该挑战过程 - 》证明 - 》付款被称为“审计”,因为租用者正在审核矿工的存储。在合约期结束时,矿工和租用者可以自由地重新协商或结束这种关系。
虽然核心技术允许任何类型的支付,但某些类型比其他类型更适合。传统的支付系统,如ACH或SEPA,非常不适合按审计付费。它们很慢,很难验证,并且通常会收取高昂的费用。 Storj协议的理想支付方式是加密货币微支付渠道。支持小额付款,可立即验证和安全,费用最低。意味着付款和审核可以尽可能地配对。
执行遵循一个简单的针锋相对模式:如果矿工未通过审核,即离线或无法证明她仍然拥有数据,则租用者无需支付。毕竟,他没有继续得到相应的服务。同样,如果租用者离线或未能按时付款,矿工可以放弃数据,并向其他人寻找新的合约。只要双方都遵守合约条款,大家就可以愉快地结束交易。
将付款直接与审计配对可以最大限度地降低与陌生人交易的风险。如果文件在合约期内中途被丢弃, 则租用者仅按审计证明支付实际执行的服务。 他需要找到新的矿工,但不能花费太多。如果租用者消失或停止向矿工付款,那么矿工已经收到了她以前所有服务的费用。 只损失一笔审计费用,以及找到新租用者购买该空间所需的时间。
Storj网络
为了使租用者和矿工能够相互遇见,合约和谈判系统建立在分布式哈希表(DHT)之上。 DHT基本上是将一系列节点自我组织成有用网络的一种方式。我们正在使用名为Kademlia的算法的修改版本。
DHT不是让中央服务器注册每个节点并协调所有合约,而是让矿工和租用者将他们的合约通知广播到大量节点。感兴趣的节点可以轻松联系提供合约的人。通过这种方式,矿工和租用者可以找到任意数量的潜在合作伙伴,并在广泛的无权市场上购买或出售存储空间。
为了寻找合作伙伴,节点可以签署不完整的合约并将其发布到网络。网络上的其他节点可以订阅某些类型的合约(即他们可能感兴趣的类型)并响应这些发布的报价。该模型称为publish-subscribe或pub / sub。节点可以轻松确定他们感兴趣的合约,并将合约转发给他们认为可能感兴趣的其他节点。
总之,合约系统和网络共同构成了我们所谓的Storj协议。它描述了网络上的节点如何运作,节点如何与其他节点通信,协议如何协商和执行,以及在分布式系统上买卖存储空间所需的一切。任何人都可以以任何方式实施Storj协议。
Storj工具箱
该协议包含安全地制定存储合约所需的所有工具,但它缺少很多东西。它是有作用的,但还没有开始使用。为了方便租用者使用,系统需要以服务水平协议(SLA)的形式提供可用性,带宽和任何数量的其他承诺。交易软件需要管理功能,以避免使用过多的资源和自动化功能来有效地部署到多个主机。 Storj没有尝试将所有这些功能融入核心协议,而是选择在其他软件层中解决这些问题。为了使这个网络有用并且易于与之交互,Storj发布了两个工具:Storj Share和Bridge。
Storj分享
Storj分享是参考交易客户端。它允许用户在任何机器上轻松设置和运行服务器场。 StorjShare可作为命令行界面(CLI)提供给更高级的用户并实现自动化。 CLI允许用户设置参数,例如要共享的存储空间量,存储位置和付款地址。它还处理合同协商,审计响应和所有其他网络通信。
Storj还发布了StorjShare图形用户界面(GUI),以简化非技术用户的交易过程。任何人都可以下载StorjShare GUI,填写几个字段,然后进入网络。 GUI是CLI的一个包装器,可以完成所有繁重的操作。初始设置后,用户很少需要与StorjShare GUI进行互动。可以进行设置,最小化,并让其在后台运行。
如果用户选择进行数据收集,StorjShare还将收集系统遥测。 此数据可能包括硬盘容量和利用率以及有关网络连接质量的信息。 遥测数据被发送回Storj Labs,以便Storj开发人员可以使用这些数据来改进网络和我们的软件。 在未来,StorjShare甚至可以让人们选择加入特殊服务和计划。
Bridge
为了帮助租用者使用网络,Storj还创建了Bridge。 Bridge旨在部署到生产服务器,以处理合同协商,审计,付款,可用性和许多其他需求。 Bridge通过扩展,应用程序编程接口(API)和客户端的存储资源公开这些服务。客户端旨在集成到其他应用程序中,以便任何应用程序都可以使用Bridge服务器在Storj网络上存储数据,而无需成为网络的一部分。
顾名思义,Bridge是去中心化Storj网络的中心化桥梁。它的目标是允许传统应用程序与Storj网络交互,就像使用任何其他对象存储一样。它提炼了p2p通信和存储合同协商的所有复杂性来推送和拉取请求。与大多数对象存储不同,Bridge不直接处理对象,而是处理对象的引用。它存储指向分布式网络上对象位置,以及审计这些对象所需的信息。理想情况下,没有数据通过Bridge传输,而是直接传输到网络上的矿工。
Bridge Client处理所有客户端工作以有效地使用网络。它在文件进入网络时对文件进行加密,保护隐私和安全。为了确保可用性,它会对文件进行分片,应用擦除编码,并将分片传播给多个矿工。然后,客户端与Bridge通信以管理网络上的每个分片位置,并帮助用户在本地管理其加密密钥。虽然Bridge Client的初始实现是Node.js包,但最终目标是提供多语言版本。
Storj API
Storj核心服务是对象存储,类似于Amazon S3。此对象存储由一组公共Bridge节点管理。我们维护基础架构以协商合约,管理付款,审计等。我们的客户通过Bridge Client与我们的Bridge进行交互,甚至不必知道他们正在使用分布式网络。 API是为可用性而设计的,因此在后台处理所有复杂的内容,以提供流畅,可扩展的开发体验。
Storj利用其广泛的网络知识提供一流的服务质量。Bridge做出的决定是基于与无数矿工的历史互动。 Storj使用与其性能相关的数据以及他们自我报告的遥测数据来智能地在网络上分发数据。 Storj优化了高正常运行时间以及快速检索。
帐户管理功能可通过Bridge Client或Storj的精美网络应用程序获得。同样,GUI的功能使体验尽可能顺畅。 Storj认为大多数面向开发人员的服务都忽略了用户体验(UX),因此,他们在设计产品时考虑了简单性和可用性。他们的目标是提供一种细致的用户体验,而不是提供广泛的云计算和存储服务。
使用Storj API,他们正在尝试为像我们这样的开发人员构建理想的工具:关注时间原型,高质量代码和快速迭代的人。他们希望为小型团队,快速扩展的产品和个人开发人员提供工具和支持。他们理解每个开发人员实际上都是为自己和他/她关心的项目工作。这是对我们爱的传递。 Storj希望构建一个不受影响的对象存储库,以便开发人员可以专注于构建他们喜欢的项目。
5. MaidSafe
状态:已上线
阐述:
SAFE网络是一个用于数据存储和通信的分布式自治网络。为每个人提供安全访问(SAFE)。存储在网络上的数据具有极高的可用性,耐用性,隐私性和安全性。网络有效扩展,网络上存储的数据的安全性随着网络的增长而增加。
为何选择SAFE网络?
现有的基于服务器客户端的互联网为操作服务器的人,而不是创建数据的人提供数据所有权。运营商可以限制,修改,删除或出售该数据,而无需创建该数据的用户。在有利于创建者的条款上,分发用户数据的联合协议的接受度和可用性差,促使创建SAFE网络。
默认情况下,在SAFE网络上存储数据的客户端具有强加密功能,可以通过灵活的权限层控制访问。