首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Filecoin的终极指南(二)

上一篇我们对FileCoin网络的工作原理进行了概述,这篇我们将深度剖析FileCoin协议,filecoin白皮书中未讨论的其他部分,以及FileCoin协议有待改进的地方。

深度剖析Filecoin协议

An In-depth Study on Filecoin Protocols

Filecoin引入了分散存储网络(DSN)的概念。DSN是一种具有独立客户端和存储提供商的网络。DSN聚合了由多个独立的存储提供商提供的存储,并进行自我协调,为客户提供数据存储和数据检索。协调是去中心化的,因此不需要可信的各方:这些系统的安全操作是通过协调和验证执行各方的操作的协议实现的。DSN可以根据系统的需求采用不同的协调策略,包括拜占庭协议、八卦协议或CRDT。

DSN涉及三个功能的实现:放置、获取和管理。Put允许客户机在唯一标识符下存储数据。get允许客户端使用标识符检索数据。通过测量可供租用的空间、审核提供程序和修复可能的数据故障来管理协调网络。管理协议通常需要存储供应商与客户机或审计员网络一起运行(这涉及下面讨论的拜占庭式错误)。

DSN有几个属性。前2个基本上是必需的。

数据完整性意味着客户机总是收到与存储相同的数据,也就是说,存储供应商无法使客户机收到错误数据,而可检索性仅仅意味着客户将能够随时检索其数据。

DSN的可选属性:

公共可验证性:网络上的每个人都可以在不知道数据本身的情况下验证数据是否被存储。

可审计性:可以验证数据是否存储在正确的时间段内。

激励相容性:致力于奖励丰厚的服务提供商,惩罚奖励少或者没有奖励的服务提供商。

实现保密性:将数据私有化的客户必须在将数据提交到网络之前对其数据进行加密。

容错

DSN容忍两种可能的故障:

管理故障:这些故障是由管理协议中的参与者(存储供应商、客户和审计员)引起的拜占庭式故障。DSN方案依赖于其底层管理协议的容错性。违反管理故障的容错假设可能会危及系统的活跃性和安全性。例如,考虑一个DSN方案,其中管理协议要求拜占庭协议(因为节点可以谎称其审核)审核存储提供程序(如果它们正在存储根据商定条件应存储的所有数据)。在这种协议中,网络从存储提供商处接收存储证明,并运行拜占庭协议(BA)以认同这些证明的有效性。如果BA在n个节点中最多能容忍f个故障,那么DSN可以容忍f

存储故障:存储故障是拜占庭式的故障,会阻止客户检索数据:即存储矿工丢 失他们的工件,检索矿工停止提供工件。如果成功的Put执行使其输入数据存储在m个独立的存储提供程序中(总共n个),并且可以包容最多f个拜占庭提供程序,则它是(f,m)容忍的。参数f和m取决于协议实现情况;协议设计者可以修复f和m,或者留给用户,从而将put(数据)扩展到put(数据,f,m)。如果故障存储提供程序少于f个,则对存储数据执行get成功。例如,在这种方案中,输出协议的设计是使每个存储提供者存储所有数据。在这个方案中,m=n,f=m−1,但它总是f=m-1吗?不,某些方案可以使用擦除编码进行设计,其中每个存储提供程序存储数据的特殊部分,因此需要m个存储提供程序中的x个来检索数据;在这种情况下,f=m−x。

共识算法

Filecoin DSN协议可以在任何允许验证Filecoin证明的共识协议之上实现。工作证明方案通常需要解决那些解不可重用或需要大量计算的难题。

不可重复使用:大多数无权限的区块链都要求矿工解决计算难题,例如反转哈希函数。通常,这些难题的解决方案是无用的,除了保护网络之外没有任何内在价值。一些区块链,如以太坊(执行智能合约逻辑)和PrimeCoin(寻找新的质数),试图利其计算能力来做有用的工作。

浪费:从机器成本和能源消耗的角度来看,解决困难可能非常昂贵,尤其是在这些难题完全依赖于计算能力的情况下。当挖掘算法令人难堪地并行时,解决这一难题的普遍因素是计算能力。

减少浪费:理想情况下,网络的大部分资源应该花在有用的工作上。一些工作要求矿工使用更节能的解决方案。例如,spacemint需要矿工们专门分配磁盘空间而不是计算;虽然更节能,但这些磁盘仍然“浪费”,因为这些磁盘充满了随机数据。另外,可以以传统的拜占庭协议取代难题,该协议基于股权证明,利益相关者对下一个区块的投票与其在系统中的货币份额成比例。

所以,Filecoin矿工制造时空证明是而不是奢侈的工作证明以参与共识。

有用的工作:如果计算结果对网络有价值,我们就可以认为矿工在共识协议中所做的工作不仅仅是保护区块链,还有其他贡献。

Filecoin提出了一个实用的工作共识协议,其中,网络选择矿工创建新块的概率(我们将其称为矿工的投票权)与他们当前使用的与网络其余部分相关的存储成正比。FileCoin协议的设计使矿工宁愿投资于存储,而不是计算能力,以并行挖掘计算。矿工提供存储和重复使用计算,证明数据正在存储,以参与共识。

采矿建模电力

电力故障容限:在技术报告中,电力故障容限是一个抽象概念,根据参与者对协议结果的影响重新界定拜占庭式故障。每个参与者都控制着某种力量,其中n是网络中的总力量,f是由错误或敌对参与者控制的力量的一部分。

filecoin中的功率:在filecoin中,时间t时矿工m的功率p是m的存储分配的总和。m的影响i是m的功率占网络中总功率的一部分。在FileCoin中,Power具有以下特性:

公用:网络中当前使用的存储总量是公用的。通过读取区块链,任何人都可以计算每个矿工的存储分配-,因此任何人都可以计算每个矿工的功率和任何时间点的总功率。

可公开验证:对于每个存储分配,矿工需要生成时空证明,证明正在提供服务。通过阅读区块链,任何人都可以验证矿工声称的权力是否正确。

变量:在任何时间点,矿工可以通过承诺新的扇区并填充该扇区,向网络添加新的存储。通过这种方式,矿工们可以通过时间来改变他们拥有的能量。

要了解更多关于这种能力如何在共识算法中(数学上)发挥作用的信息,请参阅白皮书。

防止恶意矿工可能利用的三种攻击:Sybil攻击、外包攻击、代攻击。

Sybil攻击:恶意矿工可以通过创建多个Sybil身份来假装存储(并获得报酬)比物理存储的副本多,但只存储一次数据。

外包攻击:恶意矿工可能承诺存储的数据超过其物理存储量,这是由于从其他存储提供商那里快速获取数据。

生成攻击:恶意矿工可能声称他们存储了大量数据,而不是使用一个小程序高效地按需生成。如果程序小于据称存储的数据,这会增加恶意矿工在filecoin中赢得区块奖励的可能性,而filecoin与矿工当前使用的存储成比例。

存储供应商必须说服客户,说明他们存储了其应该存储的数据。在实践中,存储提供商将生成区块链网络(或客户本身)验证的存储证明(POS)。

为了使存储行为能够公开验证,FileCoin引入了两种共识算法:复制证明(porep)和时空证明(post)。如果你对共识算法还不熟悉,或者想了解更多,那么可点击进入此网站:

https://hacker noon.com/consensuspedia-an-encyclopedia-of-29-consensus-algorithms-e9c4b4b7d08f

复制证明(porep)是一种新的存储证明,允许服务器(即prover p)说服用户(即verifier v)将某些数据D复制到自己唯一专用的物理存储中。我们的方案是一个交互式协议,其中证明者P:(a)承诺存储某些数据D的n个不同的副本(物理上独立的副本),然后(b)说服验证者V,P确实是通过挑战/响应协议存储每个副本。porep改进了por和pdp方案,防止了sybil攻击、外包攻击和代攻击。

时空证明:存储方案证明允许用户检查存储提供商在挑战时是否存储外包数据。我们如何使用POS方案来证明某些数据是在一段时间内存储的。这个问题的答案是要求用户反复(例如每分钟)向存储提供商发送挑战。但是,每个交互中所需的通信复杂性可能是系统(如FileCoin)的瓶颈,存储供应商需要向区块链网络提交证明。

为了解决这个问题,我们引入了一个新的证明,即时空证明,在这个证明中,验证者可以检查验证者是否在一段时间内存储其外包数据。直觉要求证明者:

生成存储的顺序证明(在我们的例子中是复制证明),作为确定时间的一种方法。

递归编写执行以生成短期证明。

柱状图

验证程序从验证程序接收一个随机挑战(c),并按顺序生成复制证明,将证明的输出作为另一个的输入,用于指定的迭代次数t。从而确保完成的所有工作都是可重用的(如上所述)。

post&porep使用zk-snarks,制作的证明非常简短,易于验证。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190201A14WHY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券