世界先于我们而存在,而在我们死了之后,世界依然存在。
也许,我们存在的唯一意义,就是给世界一次变好的机会。

这篇文章我们来聊一聊,作为 Filecoin 矿工,你应该知道的几个重要的 FIP。

可能对于新手矿工来说,你并不知道什么是 FIP,那么我希望这篇文章能让你彻底搞懂它,让你能对 Filecoin 这个项目有一些高级的认知,并从中了解 Filecoin 网络的发展历程,体会一点社区治理的智慧。

什么是 FIP?

FIP 的全称是 Filecoin Improvement Proposal(Filecoin 改进提案)。每一个 FIP 都是一个设计改进提案,提案的内容可以是社区治理,技术问题,经济模型或者是网络恢复等相关话题。

FIP 必须按照固定的格式编写,如必须包含问题的简单描述(当前现状),提案动机,解决方案等。FIP 的发起人负责在社区内建立共识(发起投票)并记录不同意见。

协议实验室建立 FIP 的初衷是希望 FIP 能成为 Filecoin 新增功能主要依据来源,用于收集社区在某个问题上的技术投入,以及记录 Filecoin 涉及的设计决策过程。

FIP 类型

目前来说,FIP 主要分为 3 类:

  1. 技术性 FIP(FTP):主要针对 Filecoin 代码实现上的更改提案,比如网络协议的更改,区块验证或者交易验证规则更改,以及任何影响 Filecoin 的应用程序的互操作性的更改。 技术 FIP 包括三个部分:设计文档,代码实现,以及对正式规范的更新(如果需要的话)。此外,技术FIP可以分为以下几类:
    • 内核:需要共识升级的改进,以及未必一定是共识关键但可能与将来的共识升级相关的更改。
    • 网络:包括对数据传播或任何 Filecoin 网络协议的改进。
    • 接口:比如客户端的 API/RPC 规范和标准的改进,以及某些语言级别的标准,例如方法名称。
    • 信息提案:例如描述 Filecoin 设计问题,或向 Filecoin 社区提供一般准则或信息,但是不一定提出新的功能。

      跟前面几条不一样的是,信息 FTP 并不需要在社区达成共识,它只是一个建议,因此你可以选择遵循也可以自由地忽略他们。

  2. 组织类 FIP(FOP): 围绕Filecoin的流程,或提出对流程(或其中的事件)的更改。适用于 Filecoin 协议以外的区域。FOP 也能会提出 Filecoin 的实现方案,但是不会涉及到代码,一般都需要社区达成共识。 具体包括例如程序,准则,决策流程的更改,FIP 流程的更改以及 Filecoin 开发中使用的工具或环境的更改。

  3. 恢复类 FIP(FRP):

通常在网络或者生态出现异常异常问题,无法通过标准协议解决的时候,就需要通过提出 FRP 来解决。比如在协议错误,或者 Filecoin 存储网络被破坏的情况下。

官方强烈建议建议单个 FIP 只包括一个关键提议或新想法。也就是说你别把多个提议打包到一个 FIP 中,FIP 提案的主题越聚焦,那么提案就越成功,也越容易被接受。

最后,FIP 必须满足某些最低标准。

  1. 提案中比如有你对新增或者改进功能的清晰完整的描述。
  2. 提案的内容必须是提升网络性能或者安全性,便捷性等,而不是降低。
  3. 提案的实现必须是可靠的,而且不能使协议变得过于复杂。也就是你 FIP 实现的代价不要过高,改动不要太大,不能使当前运行的 Filecoin 网络协议变得太复杂。

如何提交 FIP?

参与整个 FIP 提案过程的各方是您(参与讨论的所有成员),FIP 发起人或 FIP 作者,FIP 编辑者 和 Filecoin 核心开发人员。

任何致力于改善 Filecoin 网络的人都可以提交 FIP,操作流程如下:

  1. 找到 FIP 的 GitHub 仓库(文末参考链接有),然后 fork 一份到自己的仓库。
  2. 克隆你 fork 仓库到本地,新建 FIP 文件,命名往后追加就行了,例如当前 FIP 最大编号是 fip-0014,那么你新建一个 fip-0015.md 文件就行。然后完善你的提案文档。
  3. 提交你的更改,并向主仓库(官方)发起一个 PR(pull request),并在适当的论坛中扩大讨论范围,围绕该想法建立社区共识。
  4. FIP 编辑者(一般都是官方人员)会对你的 FIP 进行审核,并会给出审核意见。
  5. 如过审核通过,会进入最终执行阶段。

一个成功的 FIP 的状态流转如下。

[ WIP ] -> [ DRAFT ] -> [ LAST CALL ] -> [ ACCEPTED ] -> [ FINAL ]

每个状态更改均由 FIP 作者提出,并由 FIP 编辑者进行审查。使用 GitHub 的 PR 来更新状态。你需要提供一个链接,指向人们应继续讨论您的FIP的位置。FIP 编辑者将根据以下条件处理这些请求。

  • Active: 信息提交完成,进入讨论阶段。如果初审通过,FIP 审核者将为FIP分配一个编号并合并你的 PR,进入Draft(草案)阶段。如果拒绝的话,审核者也会写明原因。
  • Draft:合并第一份草稿后,你仍然可以提交具有进一步更改的 PR 请求。如果你认为 FIP 已经成熟,就可以申请进入下一个阶段, 如果同意,FIP 审核者将分配 Last Call 状态并设置审核结束日期(review-period-end),通常是14天后。
  • Last Call:此阶段该FIP将在 Filecoin 网站上显眼列出,如果是非技术类的核心 FIP,那么整个流程就基本结束了。
  • Accepted:仅核心 FIP 会经历这个阶段,这个阶段由 Filecoin 核心开发人员掌控,他们决定是否将其编码为共识,并强制矿工升级。
  • Final:表示该 FIP 代表了当前的最新技术水平。后期不能再更新,如果是错误勘正。

几个重要 FIP

目前为止(2021-04-05), 大部分 FIP 都是技术类的(Technical),FOP 和 FRP 很少。Filecoin 毕竟刚刚上线不久,因此项目前期一般都是先解决技术性的问题。 我们一起来看看截止目前为止矿工比较关注的那几个 FIP。

fip-0002

该 FIP 当前状态: Final(已生效),主要内容如下:

  1. 首次丢失 WindowPost deadline(没有按时提交时空证明)的扇区,只扣除算力,不罚款。
  2. 错误的扇区,在已经提交了恢复声明后,仍然无法按时提交时空证明的,这些扇区将产生 SectorFaultFee(罚款)。
  3. 将错误扇区的 SectorFaultFee(罚款)更新为预期的整体 3.51 天的出块奖励,之前是 2.14 天。

fip-0004

该 FIP 当前状态: Final(已生效),主要内容如下:

将矿工的出块奖励的 25% 立即释放,剩下的 75% 180天内线性释放。在此之前是所有的奖励都是 180 天线性释放。

fip-0009

该 FIP 当前状态: Final(已生效),主要内容如下:

豁免 SubmitWindowPost 消息燃烧的 base-fee。

简单来说就是说现在提交时空证明消息不需要受当前网络的 base-fee 影响了,Gas 费涨得再高,跟时空证明消息都没有关系了。 时空证明提交的成本几乎变得免费了。

fip-0010

该 FIP 当前状态: Final(已生效),主要内容如下:

在无需验证的情况下在链上乐观地接受所有矿工提交的时空证明,从而允许链下验证者稍后对它们进行验证挑战。

该 FIP 主要针对 fip-0009 做出一些改进。从 FIP-0009 开始,SubmitWindowedPoSt 消息是免费的,这是一个不完善的权宜之计,因为这虽然减小了矿工的负担(不用承担 SubmitWindowPost 的 gas 费用), 但是并没与减少网络本身的负担,因为网络还是要对矿工提交的时空证明进行链上验证,这浪费了大约 13% 的网络带宽。

FIP-0010 建议把时空证明的验证放到链下进行,这样可以节省这 13% 的网络带宽。主要实现流程如下:

  1. 除了那些恢复中的错误扇区的那些以外,新提交的时空证明都乐观地认为是正确的,并直接增加算力,但是在状态树中记录了一个验证期。
  2. WPoStProofDisputeWindow 到来之前,第三矿工可以通过调用 DisputeWindowedPoSt 对矿工提交的时空证明提出异议和挑战,如果挑战成功,那么矿工将失去对应扇区的算力,并承担罚款, 挑战者将获得 4FIL 的检举奖励。

fip-0013

该 FIP 当前状态: Draft(草案阶段),主要内容如下:

为矿工添加一种在单次提交中提交多个扇区证明提交消息的方法。

目前是每个扇区质押都需要提交 2 条消息,PreCommitSectorProveCommitSector。链上证明随着网络的增长呈线性增长,矿工越来越多,这导致需要打包的消息越来越多。 但是区块的大小不可能无限制的增长,一个区块能打包的消息数量是有限的,大家都抢着上链,这势必会导致较高的 base-fee

fip-0013 就是提出一种方法,把多个扇区的 PreCommitSectorProveCommitSector 打包放在一条消息里面,这样消息的数量将会大大减少,整个链的 TPS 也就上来了。

聚合消息中包含的扇区证明数量在 50-819 之间。该 FIP 如果实现的话,矿工质押 Gas 费的负担会小很多。

fip-0014

该 FIP 当前状态: Final(已生效),主要内容如下:

允许将 V1 证明扇区延长到最长 540 天的生命周期。

主要是针对 SR1 阶段的扇区,协议实验觉得有安全问题,所以当时就禁止 2020年11月24以前扇区延长生命周期,也就是说这些扇区将在 4 月份到期,这些扇区总算力有 1.3xEB,因此拥有这些扇区的矿工算力也会大大被削减。 但是那些参与 SR1 的老矿工不怎么乐意,他们就联合发起了这个 FIP,要求允许延长 V1 扇区的生命周期,好让他们可以继续赚取爆块收益。

这个 FIP 大家应该都很熟悉,就前段时间的那个投票搞得沸沸扬扬的,值得一提的是这次投票的结果是老矿工以 98% 压倒性完胜。因为很多新矿工觉得自己算力小,投票也改变不了结果,所以都没有去参与投票。

个人觉得还是应该发出自己的声音,即使改变不了结果,但是可以表明一下你的立场,本人也默默了投了几票反对票。O(∩_∩)O~

参考文献

https://github.com/filecoin-project/FIPs