技术

深度剖析IPFS/Filecoin复制证明论文

 

7月16号刚发出柏林会议总结,Twitter上就收到 Filecoin 项目的新消息,小编虽然没有第一时间补发文,但是依旧第一时间在社区里通知大家这个好消息了,今天小编来给大家普及一下复制证明这个论文对于 Filecoin 项目的重要意义。

 

Filecoin 项目

  IPFS 是一个去中心化存储网络, Filecoin 是 IPFS 存储的激励层, Filecoin 作为生态激励来保证  IPFS  节点的运行。

 

Filecoin 项目主要组成部分

1、去中心化存储网络DSN

2、复制证明PoRep

3、构建两个可验证市场,即存储市场和检索市场

今天我们主要说说复制证明。在 Filecoin 协议中,存储供应商要让他们的客户相信,客户所付费的数据已经被他们存储,存储供应商通过生成“复制证明”(PoRep)和“时空证明”(PoST)给区块链网络或者客户来验证存储的真实性。而我们说的复制证明和时空证明就是来实现这一验证功能的基础算法。

复制证明(Proof of Replication)

复制证明是一个新型的存储证明。它可以让证明人提供存储证明给用户,证明用户的数据已经被复制存储到证明人唯一的专用物理存储设备上了。

复制证明也是一种交互式协议。当证明人承诺存储某数据的n个不同的副本(独立物理副本),然后通过响应协议来说服验证者,证明人确实已经存储了每个副本。PoRep改善了PDP(数据持有性验证)和PoR(可获取性证明)方案,并且阻止了女巫攻击、外包攻击、生成攻击。(详解见附言注释)

 

此处是分割线……以上是白皮书中的解释,下面以小编的理解给大家普及一下。

1、假设我要存一个文件到某度云盘上,如果某度云服务器宕机了,假设我把文件只存在了该服务商,可能我的文件就拿不到了。而去中心化使我们不依赖于单一中心节点,即使某个节点宕机,我们还可以从其他的节点获取我们的文件,这就是去中心化的意义之一。
2、假设我存一个文件在 IPFS 某个存储提供者,我的文件内容肯定是不想让他看到的,那么就可以把我存储的文件加密,这样存储商只会存储我的文件但却看不知道我存储的究竟是什么,隐私可以得到有效保护。
3、如何确保存储提供者真的保存了我的文件呢?此时需要存储提供者定时向我或者链上提供他存储该文件的证明(POS)。而我可以通过该证明来验证他是否真的存储了我的文件。
4、假设我要把一个文件存储10份,如何确保存储提供商真正的存储了10份,而不是只存储了一份,等到验证的时候再复制出9份呢,这时候就需要给这9份文件加些不同的特征,可以认为这就是通常说的“加盐”。为了保证存储商不会从某份文件中生成出其余9份文件,我们可以使用一个编码慢而解码快的函数。其中一种实现就是Cipher block chaining,可以成功避免生成攻击。

小编来解释一下为什么只能使用编码慢而解码快的函数?还是为了防止作弊( Filecoin 团队为了避免这些作弊及攻击问题也真是煞费苦心呀)

客户为了加强数据安全性,他要求存10份完整的文件在服务提供商的物理机器上。如果编码时间小于解码时间的话,存储提供者可以只存储一份,在系统需要验证真伪时,完全有时间直接生成(on the fly)其余9份文件,然后用这些生成的文件产生一个证明,用来应对系统的验证。

 

Cipher block chaining

Cipher block chaining算法又是如何做到编码慢而解码快呢?为了达到编码时间远大于解码时间,编码过程是sequential的,也就是后一个节点的编码依赖于前面一个节点的编码所得结果。图一是一个有向图,也就是一个上有节点和箭头的图形。

图一

节点n2的编码是要依赖于n1的编码的。我们不可能同时编码n1和n2,图上的其他箭头也是如此。为了完成下图节点对应的数据的编码,我们需要持续编码8次。这样我们的整个延长了编码时间,而解码则可以并行,也就是说我们可以一次解码从n1到n8的所有节点对应的数据。这样大大提升了解码速度。但该算法仍有弊端,依赖关系比较单一,也就是后面的节点仅仅依赖于前一个节点。所以 filecoin 团队在最新的论文里提出了用depth robust graph来编码数据,depth robust graph 上节点之间的依赖关系更强,可以更好的抵御攻击。下图同样是一个含有8个节点的有向图,但是节点之间的依赖关系更多。

 

 Filecoin 的论文提出了ε-rational replication的概念,论文作者花了很长的篇幅来证明怎样找到一个ε-rational replication。ε-rational replication可以有效地避免生成攻击。

ε-rational replication是将某个文件的两种复制所占存储容量之差不能太小的这个概念形式化。具体为:假设σ和σ’为这个文件两个k-复制,也即我们可以从σ和σ’得到k份这个文件,那么σ和σ’所占的存储空间之差不能小于σ所占存储空间的ε倍,其中ε一个很小的正实数。

虽然论文已经论证ε-rational replication的存在性并且给出了一个构造ε-rational replication模型的方法,但要真正实现ε-rational replication还是有很长的路要走的。然而复制证明论文的理论意义是非常大的,它为 Filecoin 项目实施提供了扎实的理论基础。无怪乎 filecoin 官方在 twitter 上面称这篇论文为 Important new milestone。

 

 

Nicola Greco也再次发文说到了验证的重要性及市场前景,论文中也提到了关于公开验证会使用Zcash项目的zkSNARKs算法,具体应用方案还没有说明,不过理论基础已经出来了,Filecoin 离我们还会远么?

注释:
女巫攻击,指利用社交网络中的少数节点控制多个虚假身份,从而利用这些身份控制或影响网络的大量正常节点的攻击方式,Douceur指出这种攻击将破坏分布式存储系统中的冗余机制。在 Filecoin 中作恶矿工可能通过创建多个女巫身份假装物理存储很多副本(从中获取奖励),但实际上只存储一次。
外包攻击,依赖于可以快速从其他存储提供商获取数据,作恶矿工可能承诺能存储比他们实际物理存储容量更大的数据。
生成攻击,作恶矿工可能宣称要存储大量的数据,相反的他们使用小程序有效的生成请求,如果这个小程序小于所宣称要存储的数据,则作恶矿工在 Filecoin 获取区块奖励的可能性增加了,因为这是和矿工当前使用量成正比的。