用户快速转账时,需要确保 Gas Fee Cap 是否比 Base Fee 大,以及 Gas Premium 是否足够大,这样才能确保转账被即使执行。

原文标题:《原力研究 | 如何核算 Filecoin 网络上的 Gas 费》
撰文:Tony

之前撰写了一篇《一文读懂 Filecoin Gas 费供需现状与超额燃烧》文章,收到一些用户的反馈。基于有部分用户不太理解如何运用该公式,这次我们分享一下如何一步步核算 Gas 费,从矿工的角度来看如何支付 Gas 比较适合,避免转账失败或迟到账的情况。

首先我们先回顾下 Filecoin 网络的近况。

居高不下的信息数量超过 100 万

信息数量过多是导致网络拥堵的直接原因,其本质是 Filecoin 网络 TPS 不足,每个区块只能够完成几百笔信息的打包,间接影响了 Block Gas Limit。

原力研究 | 如何核算 Filecoin 网络上的 Gas 费图一,11 月 14 日-12 月 13 日 Filecoin 信息数量,来源:IPFS 原力区,2020-12-15

假如一个区块的 Block Gas Limit 只能容纳 100 箱子,市场上五个矿工分别有 10、20、30、40、50 (Gas Limit)个箱子需要打包运输,因区块只能打包不超过 100 的数量。那么在这个区块只能装(10+20+30+40)或者(40+50)。

那么大家会问,能否提高区块的容纳量?目前来说很难实现,主要从安全性和经济收益说起。

安全性。我们都知道「蒙代尔不可能三角定律」:效率、安全性和「去中心化」无法同时实现。在目前技术水平上,升级其中一个指标不可避免地牺牲其他两个指标。假如提高 TPS,很多数据不能及时上传的话,会逐步削弱去中心化的性能,在影响去中心化的同时也影响着网络的共识和安全性。

经济收益。假如提高区块链的容纳量,就会导致很多信息延迟上传,就容易出现空块或者孤块,降低矿工收益。即便是延长区块时间,Filecoin 网络原本每日 2880 高度,减少每日产块无疑是减少区块奖励。所以从经济收益角度上看,扩大容纳量会降低矿工的收益。

从安全和经济收益角度看,目前尚未有一种可直接降低 Gas 的策略,不过最近官方也提及到 FIP-08 提案聚合提交 PreCommitSector 消息,通过合并消息降低网络拥堵,减少 Gas 消耗;还有一种提高 TPS 但是不失安全性的方式,即是扩容区块,从而实现 Block Gas Limit 上限的提升,同时提高矿工硬件的性能,继续投入新的硬件,这种方式对矿工来说不太友好。

Gas 费 = 基本燃烧费(BaseToBurn)+小费(Miner Fee)+超额燃烧费(OverEstimateToBurn)

之前超额燃烧文章有提及过,协议实验室官方不太提倡使用过高的 Gas 费,所以会对超额的部分做一些惩罚,即是超额燃烧费。下文,我们以某一 Gas 费为例子,展开计算说明。

原力研究 | 如何核算 Filecoin 网络上的 Gas 费图二,来源:filfox.info,2020-12-14

小费(Miner Fee)

当 BaseFee + GasPremium > GasFeeCap,Miner Fee=Gas Limit*(GasFeeCap-BaseFee)

当 BaseFee + GasPremium ≤GasFeeCap,Miner Fee=Gas Limit*GasPremium

BaseFee、GasPremium 和 GasFeeCap 分别是三种费率,BaseFee 针对基本燃烧费,GasPremium 针对小费费率,GasFeeCap 针对总的支付费率。官方对小费设定了一个参数,主要是为了让 GasFeeCap 与两者的关系 BaseFee + GasPremium,尽可能地支付更少的小费。

目前按市场上的消息小费都是 BaseFee + GasPremium ≤GasFeeCap,即是 Miner Fee=Gas Limit*GasPremium,代入上图数据得出

原力研究 | 如何核算 Filecoin 网络上的 Gas 费

因为图二的 Burn Fee 是包含基本燃烧费和超额燃烧费,所以我们需要计算出两个值。

基本燃烧费(BaseToBurn)

我们都知道 BaseToBurn=Base Fee*Gas Used,代入图二数据计算得

原力研究 | 如何核算 Filecoin 网络上的 Gas 费

超额燃烧费(OverEstimateToBurn)

对于超额燃烧费 Filecoin 为 gas 设定了一个指标 Over,主要是为了避免使用过高的 Gas 费,其中 Over=Gas Limit-11/10*Gas Used。

原力研究 | 如何核算 Filecoin 网络上的 Gas 费图三,Over 指标,来源:IPFS 原力区,2020-12-15

根据之前文章的内容可知,整理后,我们需要得知 Gas Limit/Gas Used 的范围。图三是我们整理了 11 月 14 日-12 月 14 日的 Gas Limit/Gas Used,大多数都是在 1.2-1.3 范围内,所以可用以下公式。

原力研究 | 如何核算 Filecoin 网络上的 Gas 费

以上图二的数据为例,先求得 Gas Limit/Gas Used=439951486/352018389=1.24979688490081,符合图三条件,代入 Over 求得超额燃烧费

原力研究 | 如何核算 Filecoin 网络上的 Gas 费

代入以上求出的 OverEstimateToBurn 和 BaseToBurn,Burn Fee=OverEstimateToBurn+BaseToBurn=0.0515588402332158+1.37788616484047=1.4294450050FIL,即是图二的 Burn Fee 费用。

所以实际总支付的 Gas 费为 OverEstimateToBurn+BaseToBurn+Miner Fee,多余的部分会被退回去。

如何设定费用能驱动矿工打包?

矿工打包两个主要步骤:检查 Gas Fee Cap 是否比目前 Base Fee 大,以及 Gas Premium 是否足够大。

Gas Fee Cap 是否比目前 Base Fee 大。因为 Gas Fee Cap 是用户能支付的最大费率,假如费率过低会三倍惩罚矿工。例如,本来一笔转账用户需要支付 10 元,但是用户填写了最大能支付 9 元,但是矿工由于忽略打包完成了,差额 1 元需要矿工支付,同时还要额外 2 倍惩罚,即 2 元,所以总的来说差额部分会对矿工造成三倍惩罚(3 元)。因为现在一天信息超过百万条,矿工有可能会因为忽略了这一点造成严重的 FIL 惩罚。

确保了信息可以打包后,矿工需要权衡自己的利益是否最大?

Gas Premium 是否足够大。这块主要是涉及矿工的利益,Gas Premium 越大矿工获得手续费会较多(当 BaseFee + GasPremium ≤GasFeeCap 时),因为 Miner Fee=Gas Limit*GasPremium,即使矿工获得利益最大。否则就会如图二的数据,Gas Fee Cap 为 19.57nanoFIL 很大,但是 Gas Premium 为 1 attoFIL,实际给到矿工的利益很小,市场行为就会延后打包。

所以用户需要快速转账时,需要先确保 Gas Fee Cap 是否比 Base Fee 大,以及 Gas Premium 是否足够大,这样才能确保转账被即使执行。

该以上建议适合用户使用,对于矿工仅供参考。因为矿工每日需要打包信息较多,需要更为精密的计算才能保障 Gas 费的合理使用,由于过于复杂,不在此展开。

本文主要为用户解答一些问题,虽然 Filecoin 网络过于拥堵,导致矿工无法顺利增长算力。但是笔者相信随着 FIP 提案优化,机制或者技术会逐步解决 Gas 费高昂的问题。

因为 Filecoin 的夙愿是成为 Web 3.0 的基建,未来道阻且长,希望众投资者耐心等候。