如何核算Filecoin网络上的Gas费

如何核算Filecoin网络上的Gas费
之前撰写了一篇《一文读懂Filecoin Gas费供需现状与超额燃烧》文章,收到一些用户的反馈。基于有部分用户不太理解如何运用该公式,这次我们分享一下如何一步步核算Gas费,从矿工的角度来看如何支付Gas比较适合,避免转账失败或迟到账的情况。首先我们先回顾下Filecoin网络的近况。1)居高不下的信息数量超过100万信息数量过多是导致网络拥堵的直接原因,其本质是Filecoin网络TPS不足,每个区块只能够完成几百笔信息的打包,间接影响了Block Gas Limit。(图一)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上限的提升,同时提高矿工硬件的性能,继续投入新的硬件,这种方式对矿工来说不太友好。2)Gas费=基本燃烧费(BaseToBurn)+小费(Miner Fee)+超额燃烧费(OverEstimateToBurn)之前超额燃烧文章有提及过,协议实验室官方不太提倡使用过高的Gas费,所以会对超额的部分做一些惩罚,即是超额燃烧费。下文,我们以某一Gas费为例子,展开计算说明。(图二),来源:filfox.info,2020-12-14小费(Miner Fee)当 BaseFee + GasPremium > GasFeeCap,Miner Fee=Gas Limit*(GasFeeCap-BaseFee)当 BaseFee + GasPremium ≤GasFeeCap,Miner Fee=Gas Limit*GasPremiumBaseFee、GasPremium和GasFeeCap分别是三种费率,BaseFee针对基本燃烧费,GasPremium针对小费费率,GasFeeCap针对总的支付费率。官方对小费设定了一个参数,主要是为了让GasFeeCap与两者的关系BaseFee + GasPremium,尽可能地支付更少的小费。目前按市场上的消息小费都是BaseFee + GasPremium ≤GasFeeCap,即是Miner Fee=Gas Limit*GasPremium,代入上图数据得出Miner Fee=439951486*1*10-9=0.439951486nanoFIL因为图二的Burn Fee是包含基本燃烧费和超额燃烧费,所以我们需要计算出两个值。基本燃烧费(BaseToBurn)我们都知道BaseToBurn=Base Fee*Gas Used,代入图二数据计算得BaseToBurn=3.914244846*352018389*10-9=1.37788616484047FIL超额燃烧费(OverEstimateToBurn)对于超额燃烧费Filecoin为gas设定了一个指标Over,主要是为了避免使用过高的Gas费,其中Over=Gas Limit-11/10*Gas Used。(图三)Over指标,来源:IPFS原力区,2020-12-15根据之前文章的内容可知,整理后,我们需要得知Gas Limit/Gas Used的范围。图三是我们整理了11月14日-12月14日的Gas Limit/Gas Used,大多数都是在1.2-1.3范围内,所以可用以下公式。(图三)《一文读懂Filecoin Gas费供需现状与超额燃烧》,来源:IPFS原力区,2020-11-08以上图二的数据为例,先求得Gas Limit/Gas Used=439951486/352018389=1.24979688490081,符合图三条件,代入Over求得超额燃烧费代入以上求出的OverEstimateToBurn和BaseToBurn,Burn Fee=OverEstimateToBurn+BaseToBurn=0.0515588402332158+1.37788616484047=1.4294450050FIL,即是图二的Burn Fee费用。所以实际总支付的Gas费为OverEstimateToBurn+BaseToBurn+Miner Fee,多余的部分会被退回去。3)如何设定费用能驱动矿工打包?矿工打包两个主要步骤:检查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的基建,未来道阻且长,希望众投资者耐心等候。PS:本文仅给用户提供一种计算方案,不做投资建议。