什么是filecoin

概念

  • Filecoin是基于区块链机制的分布式存储网络。
  • Filecoin 矿工可以选择提供网络存储,通过定期产生证明其正在提供指定容量的加密证明来获得Filecoin加密货币(FIL)
  • Filecoin使各方能够通过Filecoin区块链上共享账本中记录的交易来交换FIL货币。
  • 加密货币FIL是沟通资源使用者(用户)和资源提供者(矿工)的中介桥梁,filecoin协议拥有两个交易市场,数据检索和数据存储,双方在市场里面提交自己的需求,达成交易。
  • Filecoin并没有使用Nakamoto风格的工作量证明来维持对链的共识,而是使用存储证明本身:矿工在共识协议中的能力与其所提供的存储量成正比。
  • Filecoin区块链不仅维护FIL交易和帐户的状态,而且实现Filecoin VM,这是一种复制状态机,在网络参与者之间执行各智能合约

filecoin与ifps的关系

  1. IPFS不是区块链项目,它是一种分布式的、点对点的新型超媒体传输协议,对标目前的互联网 HTTP 协议,主要作用是提供数据的存储和传输。ipfs是一个协议也是一个p2p网络,它类似现在的bt网络,只是拥有更强大的功能,使得ipfs可以拥有了取代http的能力。所以,IPFS 可以成为区块链的底层基础设施,为区块链、DApp 提供数据存储服务。
  2. Filecoin 是运行在 IPFS 上的一个激励层,是一个区块链项目。Filecoin 和 IPFS 一样,两者均由Protocol Labs创建。 。filecoin是一个分布式存储网络,把云存储变为一个算法市场,代币和区块链在这里面起到很重要的作用。
  3. ipfs有巨大存储需求和节点需求,我们都知道p2p网络节点越多下载越快,如果没有激励机制,谁愿意贡献如此多的节点和存储呢,于是filecoin来了。filecoin可以为ipfs贡献很多很多节点,同时filecoin带着一个巨大的分布式存储空间,同时解决了ipfs的存储问题。

filecoin与eth的相似之处

1.以太坊有evm,filecoin也有 filecoin vm
2.以太坊有交易(tx)的概念,对应filecoin的message
3.以太坊有外部账户和合约账户概念,对应filecoin的actor

架构概述

filecoin子系统

filecoin工作原理_ipfs&filecoin

filecoin协议概述

无法上传svg,点击下载,用浏览器打开

链上交易流程图

无法上传svg,点击下载,用浏览器打开

核心概念

Sectors

扇区,矿工提供存储空间的最小单元,也就是说在我们创建矿工的时候抵押存储空间大小必须是 Sector 的整数倍。目前测试网络一个 Sector 的大小是 32GB。

Pieces

数据单元,是 Filecoin 网络中最小存储单位,每个 Pieces 大小为 512KB, Filecoin 会把大文件拆分成很多个 Pieces, 交给不同的矿工存储。
filecoin工作原理_服务器_02

AllocationTable

数据分配追踪表,它记录了每个 Pieces 和 Sector 的对应关系,如某个 Pieces 存储在了哪个 Sector. 当某个 Sector 被存满(Fill)了之后,系统将会把该 Sector 封存(Sealing the Sector),然后生成存储证明,这是一个缓慢的操作

Pledge

抵押,矿工必须需要向 Filecoin 网络抵押 FIL 代币才能才能开始接受存储市场的订单。

工作流程

filecoin工作原理_服务器_03
通过这张图我们可以从横向(操作)和纵向(角色)来了解整个流程。我们对文件的操作无非就两种,存(Put)和取(Get), 而这两种操作分别对应两种角色,客户和矿工。 外加一个区块链网络和市场管理者(Manage), 这就构成了整个 Filecoin 的 DSN 网络,具体交易流程如下:

(1)客户和矿工分别发送一个竞价订单和出价订单到交易市场(Market),这里需要注意的是,如果是 bid order, 需要注明你这个文件的存储时间(比如三个月), 以及需要备份的数量(比如 3 份),备份数量越多,文件丢失的概率就越低,当然价格也就更高一些。

(2)交易网络管理中心(Manage)分别验证订单是否合法,如果是竞价订单,系统会锁定客户资金,如果是出价订单,系统会锁定矿工的存储空间。

(3)分别执行 Put.MatchOrders 和 Get.MatchOrders 进行订单撮合,成功之后会运行 Manage.AssignOrders 来标记该订单为Deal Orders(成交订单), 并在 AllocationTable 中记订单的 Pieces 和 Sector 信息。

(4)执行文件的 Put 操作,即把文件存储到矿工的硬盘,并生成 PoRep(复制证明)发送给交易网络存储到区块链。

(5)矿工需要定期(every epoch)需要向交易网络发送PoSt(时空证明)来证明你这段时间确实存储了指定的文件,交易网络在验证之后,支付你相应费用(FIL).

核心算法

复制证明

“复制证明”(PoRep)是一个新型的存储证明。它允许服务器(证明人P)说服用户(验证者V)一些数据D已被复制到它唯一的专用物理存储上了。

PoRep协议其特征是多项式时间算法的元组:(Setup, Prove, Verify)
• PoRep.Setup(1λ, D) → R, SP, SV, 其中SP和SV是P和V的特点方案的设置变量,λ是一个安全参数。PoRep.Setup用来生成副本R,并且给予P和V必要的信息来运行PoRep.Prove 和 PoRep.Verify。一些方案可能要求证明人或者是有互动的第三方去运算PoRep.Setup。
• PoRep.Prove(SP, R, c) → πc,其中c是验证人V发出的随机验证,πc是证明人产生的可以访问数据D的特定副本R的证明。PoRep.Prove由P(证明人)为V(验证者)运行生成πc。
• PoRep.Verify(Sv, c, πc) → {0, 1},用来检测证明是否是正确。PoRep.Verify由V运行和说服V相信P已经存储了R。

时空证明

“时空证明”(PoSt)使得有效的证明人P能够说服一个验证者V相信P在一段时间内已经存储了一些数据D。

PoSt其特征是多项式时间算法的元组:(Setup, Prove, Verify)
• PoSt.Setup(1λ,D)->Sp,Sv,其中SP和SV是P和V的特点方案的设置变量,λ是一个安全参数。PoSt.Setup用来给予P和V必要的信息来运行PoSt.Prove和PoSt.Prove。一些方案可能要求证明人或者是有互动的第三方去运算PoSt.Setup。
• PoSt.Prove(Sp, D, c, t) → πc,其中c是验证人V发出的随机验证,πc是证明人在一段时间内可以访问数据D的证明。PoSt.Prove由P(证明人)为V(验证者)运行生成πc。
• PoSt.Verify(Sv, c, t, πc) → {0, 1},用来检测证明是否是正确。PoSt.Verify由V运行和说服V相信P在一段时间内已经存储了R。

参考文献

filecoin白皮书
filecoin spec
ipfs和filecoin的关系
filecoin工作原理