對於 filecoin 的質押機制,大家都不陌生。為了減輕礦工的負擔至最低來滿足對質押的多種需求,filecoin 有三種不同的質押機制:初始質押,區塊獎勵質押以及市場質押。
初始質押,是礦工必須為每個扇區提供 filecoin 作為初始承諾。區塊獎勵質押,是透過區塊獎勵鎖倉,來減少初始代幣質押的要求。市場質押,是在礦工和使用者之間建立激勵機制,使礦工在市場上脫穎而出。
今天我們來了解初始質押,探究它怎麼組成?如何計算?怎樣估算其真實成本?
初始質押的組成
首先,filecoin的初始質押=儲存質押+共識質押。
儲存質押為使用者保障網路的服務質量並在出現懲罰時為扇區提供啟動擔保。它遵循以下原則:小到可以讓礦工加入網路,同時足夠大到質押可以應對早期故障罰款的費用。當前 filecoin 儲存質押的 fil 費用為 20 天的預期收益。在封裝流程中,precommit2(簡稱p2)步驟完成後,提交precommitsector訊息時,會向miner錢包轉入這筆儲存質押費用。
我們用某節點驗證舉例:某節點1000t的挖礦收益約為每天110fil左右。其封裝1000t,儲存質押費用約為2270fil,約為日挖礦收益的20倍左右。
共識質押又是什麼呢?隨著 filecoin 儲存規模的不斷增加,單位儲存空間所獲得的收益將不斷降低,也就是儲存質押會越來越少,為了維持較高的共識成本,filecoin 網路增加初始質押的後半部分,即共識質押。共識質押取決於該扇區加權位元組算力和網路流通供應量。在封裝流程中,sealcommit2(簡稱c2)步驟完成後,提交provecommitsector訊息提交時,會向miner錢包轉入該筆共識質押費用。
初始質押費用怎麼看?
首先,我們先去驗證precommitsector和provecommitsector訊息(以下簡稱pre訊息和prove訊息)是否真的繳納了這兩筆錢:
開啟雅典娜雲池的瀏覽器(https://explorer.atpool.com/),找一個封裝中的節點,找到提交時間接近的兩條pre和prove訊息:
我們假定這兩條訊息都屬於同一個扇區。那麼兩條訊息的質押金額之和,可以視為單扇區的初始質押成本。該節點扇區大小為32gib,則其平均單t的初始質押成本約為10.17fil/tib。
注意,這裡埋一個包袱:很多讀者注意到,很多頭部礦工節點,其pre和prove訊息金額是0。難道頭部礦工不交質押費?稍後解釋。
初始質押的預估質押費用和實際質押量
得到平均單t的初始質押成本約為10.17fil/tib後,疑問就來了。明明全網資料可得出,平均一個扇區的質押量明明只有9fil/tib左右?難道是pre和prove訊息所提交的質押費用,不等於最後實際的質押量?
(資料來源:雅典娜雲池瀏覽器)
是的!我們在訊息裡看到的pre和prove訊息提交的質押費用,不等於實際質押費用。結論原因請看初始質押流程:
1.提交pre訊息前,根據當前全網總算力、算力增長趨勢和實際增長趨勢,計算得到當前高度的儲存質押量(預知每個高度的質押量如何計算,請期待雅典娜雲池研發中心下一次為你揭秘:如何科學解讀初始質押成本的計算公式)。為了減少計算誤差,會將計算得出的儲存質押量乘以1.1倍,作為預估儲存質押量,透過pre訊息時預先劃撥至miner錢包;
備註:之所以要多劃撥0.1倍,是因為提交訊息的高度,和本條訊息被打包的實際高度,並不一致,本條訊息被打包的高度,肯定高於提交訊息的高度(也就是測算質押量的高度),所以,官方程式碼為了避免實際打包的時候的質押量發生變化而導致質押金額不足,進而導致質押失敗的情況出現,多劃撥了0.1倍測算量。
2.miner錢包僅對實際儲存質押量進行鎖倉,即所謂的“定金”。預估質押量的多餘部分不鎖倉(小於等於0.1倍測算質押量的那部分);
3.經過150個區塊高度才可提交prove訊息。提交前,透過公式得到當前高度的初始質押量(所謂“總價”),同樣乘以1.1倍。本次透過prove訊息劃撥數額=1.1倍的初始質押量-實際儲存質押量(即“尾款=總價-定金”)。
4.最後一步:
miner錢包將儲存質押量(“定金”)退回可用餘額;
此時miner錢包中的餘額=1.1倍總價-定金+(退回可用餘額的)定金+多餘的定金;
miner錢包對初始質押量(“總價”)進行鎖倉;
初始質押量被鎖倉後,富餘的預估質押量不鎖倉。
綜上所述,pre和prove訊息提交的僅僅是預估質押量,而且是富餘的。你所花費的fil,一分也沒有少,都在miner錢包中。
為何頭部礦工們pre和prove訊息的質押金額為0?
現在我們可以解答之前的疑問:為何很多頭部礦工們pre和prove訊息的質押金額都是0?
透過第三部分,我們可以得到原因了:pre和prove所提交的質押費用都是預估值,除了可以每封裝一個扇區,都向miner錢包提交預估初始質押費外,改為提前預存足夠的初始質押費用。且透過修改程式碼,每一次提交pre和prove訊息時,不再臨時向miner錢包轉賬。
總結
正確計算初始質押成本的方式,是根據pre和prove訊息提交的區塊高度,去對應那個高度的“扇區質押量”,而不是直接累加pre訊息和prove訊息中提交的預估值。如何正確計算自己已花費的初始質押成本,你學會了嗎?