Filecoin复制证明与时空证明

Filecoin复制证明与时空证明

我们在现实生活中遇到的一个问题是,如何信任他人?现实是,人类天生具有自我保护意识,经济社会网络复杂多样,我们不能地选择不会轻易地相信他人。


比如传统银行给我们办理业务,需要电话、指纹、身份证等诸多信息,或者为了办理证件来回盖章......传统网络中为了证明信任的成本是很高昂的。区块链的初衷之一便是建立一个降低信任成本的社会。






不过区块链并非万能钥匙。它为了创建一个相互信任的网络,需要构建一个信任机制。


在Filecoin网络中,就运用了两个证明机制来保障信任,分别是复制证明和时空证明。




Filecoin本质上是一个存储系统,但它是区块链存储,基于IPFS星际文件系统而成,所有数据加密处理。点击这里详细阅读什么是IPFS


在Filecoin网络中,可以分为两大群体:文件提供者(客户)、文件存储者(矿工)。



一、复制证明

复制证明(Proof-of-Replication,简称PoR)是Filecoin的证明机制一。复制证明允许存储提供者来证明数据已经顺利存储到相应设备中。作为矿工,这里特指存储矿工,需要向Filecoin网络证明自已经完成存储。

复制证明的作用

PoR目的是防范三种常见的攻击:女巫攻击,外源攻击和生成攻击,他们的共同特点是攻击矿工实际存储的数据大小要比声称存储的数据小,这样攻击矿工就能获得本不该他获得的报酬。

1

女巫攻击(Sybil Attack):举例,一个不怀好意的人,名字叫女巫,Ta伪造多个身份,给大家广播说我真的存了100份文件,实际只存在1个。女巫出示自己的100个证明,欺骗了系统,那么女巫就攻击成功。

2

外部数据源攻击(Outsourcing Attack):当攻击者收到检验者要求提供存储了数据证明的时候,攻击者从别的矿工那里生成证明,欺骗大家说自己一直存储了那份数据,但实际上没有存储,攻击成功。

3

生成攻击(Generation Attack):攻击者可以使用某种方式生成数据,当检验者验证的时候,攻击者利用重新生成的数据来完成存储证明,攻击成功。



由于复制证明难以解决所有PoR的问题,如何保证矿工真正的存储了这些数据,Filecoin时限时间限制。


二、时空证明

时空证明(Proofs-of-Spacetime,简称PoS或PoSt)是用户检查存储提供者是否在某一段时间是存储了数据。


一个非常自然的答案是要求用户重复(例如,每分钟)对存储提供商发送请求。然而这样的请求是不现实的。





时空证明提出了证明链proof-chain数据结构,证明链把一些的提问(challenge)和证明(proof)链接起来形成。在证明链的基础上添加上时间段,这样就得到了一段时间内的矿工存储数据的证明,这就是时空证明(Proof of Spacetime,PoSt)。PoSt可以证明在该段时间内矿工存储了特定的数据,并且利用时间戳锚定这些证明链,这样即使验证者(verifier)不在线,也能够在将来去验证矿工在该段时间内生成了证明链,PoSt会被提交到链上用来产生新的数据区块。

Post方案可使有效的证明人P能够说服一个审核人V相信P在一段时间内存储了数据D。PoSt是多项式时间算法的元组: (Setup, Prove, Verify)Setup(1λ, D) → R, SP, SV, 其中SP和SV是为方案专门设定的P和V变量,λ是一个安全参数。PoRep.Setup用来生成副本R,以及给予P和V必要的信息来运行PoRep.Prove 和 PoRep.Verify。一些方案可能会要求证明人或者第三方交互来运算PoRep.Setup。


Prove(SP, R, c) → πc,其中c是审核人V发出的随机质疑, πc是证明人产生的访问R的证明,R是D的特定副本。PoRep.Prove由P运行,为V生成πc。


Verify(Sv, c, πc)→ {0, 1},用来检测证明是否正确。PoRep.Verify由V运行,并使V相信P已经存储了R。


实际上,Filecoin还有其它的证明机制。如下:


基本概念:

  • 挑战(challenge):系统对矿工发起提问,可能是一个问题或者一系列问题,矿工正确的答复,则挑战成功,否则失败。
  • 证明者(prover):矿工向Filecoin系统提供有效的证明,来完成挑战(challenge)。
  • 检验者(verifier):系统代表用户向矿工发起挑战(challenge),来检测是否矿工完成了数据存储任务。
  • 数据(data):用户向矿工提交的需要存储或者矿工已经存储的数据。
  • 证明(proof):矿工完成挑战(challenge)时候的回答。

流程:系统(verifier)向矿工(prover)发起挑(challenge),矿工答复证明(proof),系统检验矿工的答复以判断矿工是否通过本次挑战(challenge)。


Filecoin所有证明

  • 数据持有性证明(Provable Data Possession ,PDP):用户发送数据给矿工进行存储,矿工证明数据已经被自己存储,用户可以重复检查矿工是否还在存储自己的数据。
  • 可检索证明(Proof-of-Retrievability,PoRet):和PDP过程比较类似,证明矿工存储的数据是可以用来查询的。
  • 存储证明(Proof-of-Storage ,PoS):利用存储空间进行的证明。工作量证明的一种,Filecoin上一篇论文使用了这个名字,新的论文则升级为PoRep。
  • 复制证明(Proof-of-Replication,PoRep):新的 PoS(Proof-of-Storage),PoRep可以保证每份数据的存储都是独立的,可以防止女巫攻击,外源攻击和生成攻击。
  • 工作量证明(Proof-of-Work,PoW):证明者向检验者证明自己花费了一定的资源,PoW被用在加密货币,拜占庭共识和其他各种区块链系统。BTC使用的就是这种类型的证明,依赖。巨量的哈希计算和能源消耗来建立共识和保证btc网络的安全性。
  • 空间证明(Proof-of-Space,PoSpace):Filecoin提出的概念,存储量的证明,PoSpace是PoW的一种,不同的是PoW使用的计算资源,而PoSpace使用的是存储资源。
  • 时空证明(Proof-of-Spacetime,PoSt):时空证明,矿工证明自己花费了spacetime资源, 即:一定时间内的存储空间的使用,PoSt是基于PoReps实现的。
  • 复制证明(Proof of Replication,PoRep):PoRep 是PoS的进化版:用来证明 数据(data)已经被矿工存储。


在Filecoin网络中,文件存储者(矿工)相当于供应商,必须让客户相信,客户的数据已经被完好且加密存储。对于原文件提供者,存储者会生成存储证明(Proofs-of-Storage,PoSt)给Filecoin网络(或客户本身),以进行验证是否真实按约定存储了文件。


通过复制证明和时空证明,一方面是保障客户即文件提供者的数据完整且安全地处在分布式的加密存储系统中,他们随时验证自己的文件是否完好且存在某地,保障客户利益。另一方面,两个证明也敦促矿工们在存储文件时保持在稳定有序的状态,保存更多文件也就意味着获得更多的奖励,从而维持系统的公平性。

编辑于 2018-09-21