FIP-10 对 Gas 费的影响可能因为新的算力增长而被抵消。
原文标题:《原力研究 | Gas 费现状以及 FIP-10 影响》
撰文:IPFS 原力
北京时间 3 月 4 日,Filecoin spec-actor v3 的升级生效,伴随的是 Lotus v1.5.0 的强制性全网升级及其附带的 FIP-10 生效。FIP-10 提案主要是针对 SubmitWindowedPoSt 证明进行 Gas 费优化,最开始方案有两种:提供快速通道或者批量验证,最终确认快速通道。FIP-10 通过快速通道来提高链的利用率,减少 SubmitWindowedPoSt 证明所有的链上证明步骤,通过激励以及惩罚手段来监督时空证明。
因为目前全网所有矿工未全部更新 Lotus v1.5.0, 很难实际预测真实的发生场景。不过初步观察可以分析,目前 SubmitWindowedPoSt 一天消耗不超过 1000 FIL、信息条数 3 万多条(占全网信息 3% 左右),直观表现对全网影响降低 Gas 费可能不会很大。
真实情况需要进一步结合全网实际情况,不过根据市场需求,即便是降低了 Gas Fee,每日会涌出新的算力增长,可能会很快覆盖该部分信息量。
总得来说以上只是初步分析,具体结果需要等全网更新完才能有结论,这次我们先回顾一下目前 Gas 费的消耗,深入解读 Gas 现状。
全网 Gas 费惩罚:Filecoin 网络迭代的试错成本,未来可能会进一步扩大
根据 2 月 8 日数据统计,当时全网规模 2.377EiB,在销毁近 1700 多万 FIL 中,其中有约 11 万 FIL (不超过全网燃烧的 1%)超额燃烧。在 1185 名矿工当中,全网规模前一百名惩罚占比 92.7%,绝大多数都是大矿工惩罚所致,主要原因有以下:
矿工算力与累计惩罚数量对比,来源:IPFS 原力区,2021-03
-
Filecoin 网络早期变动导致的惩罚行为。 Filecoin 从太空竞赛至今,Louts 版本从 v0.5.0 迭代至今 v1.5.0 升级超过 20 次,FIP 提案超过 10 个。Filecoin 网络在逐步成熟,而这个过程中,早期矿工也伴随着网络的不稳定支出对应的惩罚。
-
早期矿工的小步试错惩罚。 矿工在不同的版本中会一直寻求最优的解决方案,主要针对惩罚为:算力下跌和打包不该打包订单的三倍惩罚,矿工在寻求最优解的过程中需要支付尝试成本。
-
小矿工的运维不稳定惩罚。 在目前阶段,大矿工具备条件和经验寻找到最为适合的 Gas 调控算法;而小矿工会因为运维经验或者技术不足,难以快速找到解决方案,从而导致惩罚,甚至出现一批小矿工的累计惩罚甚至大于大矿工的累计惩罚(图中红框部分:左边小矿工累计惩罚>右边大矿工累计惩罚)。
以上惩罚主要归咎于 Filecoin 网络的不稳定以及矿工的试错成本导致,不过随着网络趋于稳定,累计惩罚增减缓慢,只有新进场的矿工重蹈覆辙,习惯惩罚规则。
不过该部分随着 FIP-10 生效后,SubmitWindowedPoSt 无需上线即时证明,因为「侥幸心理」的影响,可能会有出现一类新的惩罚现象(发现故障扇区最低罚款为 20FIL),会进一步扩大惩罚累计。
Gas 主要费用组成(基础燃烧和 ProveCommit):FIP 提案优化和调整减少无谓损失
截至 2 月 8 日,Filecoin 全网基础燃烧、超额燃烧以及矿工小费累计共 980 万枚 FIL,其中基础燃烧占比 95.03%、超额燃烧占比 4.76% 和矿工小费占比 0.21%,大部分占比主要为基础燃烧。
Filecoin 总燃烧费用纵向组成,来源:IPFS 原力区,2021-2-8
从横向对比,Filecoin 主要燃烧分为 PreCommit、ProveCommit 和 SubmitWindowedPoSt,其中 ProveCommit 在该三者占比中,占比最高为 69.49%。
Filecoin 总燃烧费用横向组成,来源:IPFS 原力区,2021-2-8
总结以上横纵相对,可知 Filecoin 的主要消耗为基础燃烧,而基础以 ProveCommit 为主要消耗,所以目前矿工在针对 FIP-13 的批量 ProveCommit 聚合提交上链以及根据 Gas Fee 来调整系数来减少整体基础燃烧的体量。
其中 ProveCommit 取决于 Filecoin 网络增速,即短期内全网算力增速平均每个小时 1PiB 增长,目前网络较为拥堵,短期难以骤降,只能针对一些无谓消耗来进行优化,如 ProveCommit 中的失败信息(占 ProveCommit 约 2%)以及超额燃烧(占 ProveCommit 约 2%),主要的解决方式参考如下:
-
失败率主要是信息积压所致,从而导致过多过期信息上链,其中提高信息 Gas 费来提高推送利用率是一个方向;
-
超额燃烧主要是 GasLimit/GasUsed 参数,既能够保证信息被顺利接受又能减少过多的燃烧。
超额燃烧:SubmitWindowedPoSt 比 ProveCommit 更值得关注
2 月 8 日数据显示,即便超额燃烧占所有燃烧占比不超过 5%,但是 FIP-10 在提案尚未生效期间,仍有很多问题值得分析和解决,如 SubmitWindowedPoSt 总体燃烧比 PreCommitSector 少近 20% 以上,但针对在超额燃烧比重却约是 PreCommitSector 的 3 倍左右,所以针对 SubmitWindowedPoSt 的超额燃烧在 FIP-10 之前是值得探究解决的问题。
超额燃烧对比,来源:IPFS 原力区,2020-2-8
针对 SubmitWindowedPoSt 超额燃烧解决思路在《Filecoin 挖矿如何「节流」》曾经提及,目前 ForcePool 已实现 SubmitWindowedPoSt 为 0 的超额燃烧。
Gas 费的重要影响因子以及解决思路
总的来说,Gas 费过高或者超过平均水平的主要有:Gas Used 过高、GasLimit/GasUsed 参数调整不合理、GasFeeCap 阀门式的参数调整、节点扇区大小、失败率和惩罚。
-
Gas Used 过高:控制集群体量及算力增长产量效果较为明显,以降低超额燃烧和基础燃烧。 Gas Used 高昂主要为大矿工的 Gas Used 普遍会比小矿工高,替换小集群算力增长是一种改变方式。除此之外,节点严格控制增速以及节点数据信息适当「瘦身」。
-
GasLimit/GasUsed 参数调整为最优值。 针对超额燃烧设置 GasLimit/GasUsed 为合理参数,主要是避免过高地设置 GasLimit,让 GasLimit 接近 GasUsed,即可减少或者避免超额燃烧,针对该部分可针对以下规则调整。
来源:Filecoin GitHub,2020-11-17
-
GasFeeCap 阀门式的参数调整。 不同的矿工对于其成本会有一定的把控,可针对其成本的核算来设定 GasFeeCap 阀门,根据实际的 BaseFee 情况来决定是否做算力增长。
-
节点扇区大小:32/64GiB 扇区做算力增长。 根据 Base Fee 的浮动,来采取 64GiB 扇区与 32GiB 扇区产量配置来解决或缓解 Gas 问题,以动态调控 Gas 及封装速度。
-
失败率:降低失败发送次数。 失败率主要是因为信息失败发送而无谓损耗,权衡失败损耗以及过高使用燃烧费用成为关键,取决于如何设定 GasFeeCap。
-
惩罚:三倍惩罚不该打包订单以及 SubmitWindowedPoSt 链下证明惩罚仍然值得关注。 针对算力惩罚已经宽松了,矿工可在有效时间内恢复;三倍惩罚不该打包订单经过订单筛选打包即可;而对于 SubmitWindowedPoSt 链下证明惩罚最低为 20FIL 值得矿工时刻保证扇区的故障以及修复。