3WebDAO

Posted on Dec 27, 2021Read on Mirror.xyz

从技术角度分析Filecoin算力增速加快的原因

众所周知,Filecoin项目本身是一个存储市场,Filecoin网络算力由全网数据存储量来衡量。算力越大代表存储量越大,也进一步地说明Filecoin生态越强大。就在9月1日,Filecoin算力正式突破10EiB。这是一个历史性里程碑级别的突破,截至撰稿时间,filecoin全网有效算力为10.32 EiB,这一数据已经远远超过了许多大型中心化存储服务商的容量。根据历史数据显示,Filecoin全网算力从1EiB到5EiB,历时近6个月,而从5EiB到10EiB,总历时仅仅不到4个月时间。

全网算力增速加快的原因有很多,比如市场回暖、Filecoin生态雏形开始展现、Gas费大幅降低使入场成本降低等等。本文主要从技术角度深度分析Gas费大幅降低的原因。

从Filecoin官方Github(https://github.com/filecoin-project/lotus/releases/tag/v1.10.0)可以知道6月24号发布了Lotus v1.10.0版本。这是一个强制升级的版本,即所有存储提供者必须在区块高度为892800 (北京时间2021-07-01 06:00:00)之前更新相应的客户端软件版本。此次更新引入了Filecoin network v13,代号为HyperDrive。主要升级内容包含实现以下几点:

FIP-0008:添加存储提供者批量提交 PreCommitSector消息的方法

FIP-0011:从上报共识故障中删除奖励拍卖

FIP-0012:更改Filecoin Plus中客户端地址请求获取DataCap 管理

FIP-0013:添加 ProveCommitSectorAggregated 方法以减少链上拥塞

FIP-0015:恢复 FIP-0009(免除 WindowPoSts 时销毁BaseFee )

其中FIP-0008的实现是通过 filecoin-project/specs-actors/actors/builtin/miner/miner_actor.go 中添加

PreCommitSectorBatchParams结构体

内容为原有的SectorPreCommitInfo结构体数组,SectorPreCommitInfo结构体为存储提供者提交pre-committing消息时提供的信息,包含扇区编号、CID等等信息。此实现逻辑即是将原有单个PreCommitSector方法需要填充的信息进行再一次封装成数组提交,达到可以一次性提交多个扇区pre-commit的目的。注意单个批量提交的pre-commit扇区数限制为 256 。

在此之前存储提供者密封扇区的Gas费=PreCommitSector+ProveCommitSector GAS费。并且PreCommitSector GAS费也是占比较大,故FIP0008有效地降低了pre-commit 消息提交时的GAS费。

同理,FIP-0013添加一个ProveCommitSectorAggregated方法,原理也是允许存储提供者一次性提交多个扇区的ProveCommitSector证明,目的降低了prove-commit消息提交时的GAS费。FIP-0013的实现是通过添加ProveCommitSectorAggregatedParams结构体的方法来实现。

由于时空证明采取乐观的态度相信存储提供者不会作恶,故采用链下验证的方式。故链上先相信所有存储提供者提交的时空证明为合法的,后续由链下验证参与者检查证明的合法性。Filecoin网络为了激励链下验证参与者去验证时空证明合法性,对上报共识错误的账号提供一定的奖励。在此之前奖励采用荷兰式拍卖的方法进行。FIP0011举报的奖励会进行反向拍卖(荷兰式拍卖)。FIP-0011提案指定取消此拍卖机制,奖励从 0.005 ~0.25个等额的预期区块奖励变成固定的0.25个等额的预期区块奖励,并立即提到账。奖励机制的改变和奖励额度的增加,从某种程度上也激励了链下验证参与者的活跃度,这有利于Filecoin网络健康的发展。

进而FIP-0012提出了更改Filecoin Plus中客户端地址请求获取DataCap 管理的方式。具体规格为客户端地址能够接收对指定地址的额外分配的 DataCap 。其具体实现方案是在filecoin-project/specs-actors/blob/master/actors/builtin/verifreg/verified_registry_actor.go中如下图所示

取消在AddVerifiedClientParams.Address中对 客户端是否为VerifiedClient 的检查。

如果链上地址没有 DataCap:为此新地址添加AddVerifiedClientParams.Allowance。如果链上地址当前是已验证客户端:则为此新地址添加AddVerifiedClientParams.Allowance 的DataCap余额。客户端地址应该能够接收对指定地址额外分配的 DataCap 。需要考虑的情况:链上地址,从未收到 DataCap 当前机制没有变化 - 客户端能够请求 DataCap。链上地址,之前收到的 DataCap 的客户端应该能够再次请求 DataCap。DataCap 应该被视为对现有余额的补充 。Existing DataCap Balance = Existing DataCap Balance + New Allocation。

由于之前FIP-0009提案对 SubmitWindowedPoSt 时空证明基本费用不做销毁(即,不销毁baseFee*gasUsed)并退回给存储提供者。作为短期权宜之计,以减少基础费用上涨对现有存储时空证明的 GAS 成本的影响。但是“免费”的 Window Posts gas 市场带来了扭曲影响,降低了矿工将尽可能多批处理SubmitWindowedPoSt

时空证明的动机,使得链带宽被占用变大。故FIP-0015对FIP-0009进行回退,即不返还时空证明的基础费用,照常进行销毁。虽然正常情况下单次时空证明销毁的GAS费用不多,但是随着Filecoin网络和生态的发展,时空证明消息会越来越多,销毁的FIL也会越来越多,当FIL销毁量>释放量,FIL将正式进入通缩。

最后再回到主题,FIP-0008和FIP-0013相结合,真正地降低存储提供者密封扇区时付出的GAS费成本,入场成本显著降低,可以显着提高 Filecoin 网络上的存储速率。这将有利于更多有用的数据存储在网络上,减少网络拥塞,并降低网络基本费用。FIP-0011激励了越来越多的链下验证参与者加入网络。FIP-0012降低了Filecoin Plus中客户端开发操作门槛。FIP-0015是FIL增加销毁量,减少FIL流通量。以上对于Filecoin生态、存储提供者、用户来讲都是利好信息,越来越多的存储提供者加入为全网提供算力。这也是Filecoin主网进行 v13 HyperDrive 升级后全网算力在近两个月增速加快的重要原因之一。