時間:2023-08-13|瀏覽:209
今天我們來了解如何核算Gas費,從礦工的角度看如何支付Gas費比較合適,避免轉賬失敗或遲到賬的情況。
如今,F(xiàn)ilecoin網(wǎng)絡中信息數(shù)量超過100萬,這是導致網(wǎng)絡數(shù)量擁堵的直接原因,本質是Filecoin網(wǎng)絡TPS的不足,每個區(qū)塊只能夠打包完成幾百筆信息,間接影響了BlockGasLimit。
舉個簡單的例子,如果一個BlockGasLimit只能容納100箱子,而市場上的5個礦工分別有10,20,30,40,50個箱子需要打包運輸,因區(qū)塊只能打包不超過100的數(shù)量,那么這個區(qū)塊只能裝(10+20+30+40)或者(40+50)。目前Filecoin當前就面臨這樣的困境。
那么是否通過技術手段提升區(qū)塊的容納量呢?但目前很難實現(xiàn),這點需要從安全性和經(jīng)濟收益說起。
安全性:眾所周知所有區(qū)塊鏈項目都遵循“蒙代爾不可能三角定律”:效率、安全性和“去中心化”無法同時實現(xiàn)。以目前的技術水平,升級其中一個指標就不可避免的犧牲其他兩個指標。假如提高TPS,很多數(shù)據(jù)不能及時上傳的話,會逐步削弱去中心化的性能,在影響去中心化的同時也影響著網(wǎng)絡的共識和安全性。
經(jīng)濟收益:若提高區(qū)塊鏈的容納量,就會導致很多信息延遲上傳,出現(xiàn)空塊或者孤塊的概率就高,直接影響礦工收益。即便是延長區(qū)塊時間,F(xiàn)ilecoin網(wǎng)絡原本每日2880高度,減少每日產(chǎn)塊無疑是減少區(qū)塊獎勵。所以從經(jīng)濟收益角度上看,擴大容納量會降低礦工的收益。
綜合安全性和經(jīng)濟性,目前很難有行之有效的策略降低Gas費。官方接下來FIP-08提案的解決方法是聚合提交PreCommitSector消息,通過合并消息降低網(wǎng)絡擁堵,減少Gas消耗;還有一種提高TPS但是不失安全性的方式,即是擴容區(qū)塊,從而實現(xiàn)BlockGasLimit上限的提升,同時提高礦工硬件的性能,繼續(xù)投入新的硬件,這種方式對礦工來說不太友好。
Gas費=基本燃燒費(BaseToBurn)+小費(MinerFee)+超額燃燒費(OverEstimateToBurn)
目前官方團隊并不倡議大家使用過高的Gas費,所以會對超額部分作出懲罰,即超額燃燒費。
小費(MinerFee)
當BaseFee+GasPremium>GasFeeCap,MinerFee=GasLimit*(GasFeeCap-BaseFee)
當BaseFee+GasPremium≤GasFeeCap,MinerFee=GasLimit*GasPremium
BaseFee、GasPremium和GasFeeCap分別是三種費率,BaseFee針對基本燃燒費,GasPremium針對小費費率,GasFeeCap針對總的支付費率。官方對小費設定了一個參數(shù),主要是為了讓GasFeeCap與兩者的關系BaseFee+GasPremium,盡可能地支付更少的小費。
目前按市場上的消息小費都是BaseFee+GasPremium≤GasFeeCap,即是MinerFee=GasLimit*GasPremium
基本燃燒費(BaseToBurn)
我們都知道BaseToBurn=BaseFee*GasUsed。
超額燃燒費(OverEstimateToBurn)
對于超額燃燒費Filecoin為gas設定了一個指標Over,主要是為了避免使用過高的Gas費,其中Over=GasLimit-11/10*GasUsed。
根據(jù)之前文章的內(nèi)容可知,整理后,我們需要得知GasLimit/GasUsed的范圍。
以上圖二的數(shù)據(jù)為例,先求得GasLimit/GasUsed=439951486/352018389=1.24979688490081,符合圖三條件,代入Over求得超額燃燒費。
代入以上求出的OverEstimateToBurn和BaseToBurn,BurnFee=OverEstimateToBurn+BaseToBurn=0.0515588402332158+1.37788616484047=1.4294450050FIL,即是圖二的BurnFee費用。
所以實際總支付的Gas費為OverEstimateToBurn+BaseToBurn+MinerFee,多余的部分會被退回去。
如何設定費用能驅動礦工打包?
礦工打包兩個主要步驟:檢查GasFeeCap是否比目前BaseFee大,以及GasPremium是否足夠大。
GasFeeCap是否比目前BaseFee大。因為GasFeeCap是用戶能支付的最大費率,假如費率過低會三倍懲罰礦工。例如,本來一筆轉賬用戶需要支付10元,但是用戶填寫了最大能支付9元,但是礦工由于忽略打包完成了,差額1元需要礦工支付,同時還要額外2倍懲罰,即2元,所以總的來說差額部分會對礦工造成三倍懲罰(3元)。因為現(xiàn)在一天信息超過百萬條,礦工有可能會因為忽略了這一點造成嚴重的FIL懲罰。
確保了信息可以打包后,礦工需要權衡自己的利益是否最大?
GasPremium是否足夠大。這塊主要是涉及礦工的利益,GasPremium越大礦工獲得手續(xù)費會較多(當BaseFee+GasPremium≤GasFeeCap時),因為MinerFee=GasLimit*GasPremium,即使礦工獲得利益最大。否則就會如圖二的數(shù)據(jù),GasFeeCap為19.57nanoFIL很大,但是GasPremium為1attoFIL,實際給到礦工的利益很小,市場行為就會延后打包。
所以用戶需要快速轉賬時,需要先確保GasFeeCap是否比BaseFee大,以及GasPremium是否足夠大,這樣才能確保轉賬被即使執(zhí)行。