filecoin工作原理

什么是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的概念,actor下也有合约和账户

架构概述

filecoin子系统

image

filecoin协议概述

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

链上交易流程图

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

核心概念

Sectors

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

Pieces

数据单元,是 Filecoin 网络中最小存储单位,每个 Pieces 大小为 512KB, Filecoin 会把大文件拆分成很多个 Pieces, 交给不同的矿工存储。
image

AllocationTable

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

Pledge

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

工作流程

image
通过这张图我们可以从横向(操作)和纵向(角色)来了解整个流程。我们对文件的操作无非就两种,存(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工作原理

发布了14 篇原创文章 · 获赞 0 · 访问量 131

猜你喜欢

转载自blog.csdn.net/kk3909/article/details/104814067