未來波卡網絡將實現 0 手續費,這將有助於波卡進一步走向大眾化。
原用標題:波卡網絡中的交易費用是如何產生,如何計算的?
“波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望通過這樣的努力讓大家能夠正確認知波卡,也讓不了解波卡的人方便快速掌握波卡相關知識,今天是該欄目的第 37 期,為大家介紹波卡網絡中的交易費用是怎樣的。
Gas 費是以太坊首創的概念,當你在區塊鍊網絡中發起交易或者是執行程序時,就需要花費 Gas 費。但這也給以太坊造成了一些問題,導致較為複雜的程序在以太坊上運行會很昂貴。因此波卡採取了與 Gas 費不同的計量模式,極大程度的改善了用戶的體驗。
區塊鍊網絡中的一些資源是有限的,例如,存儲和計算。交易費用可以防止個人用戶消耗過多的資源。Polkadot 使用基於重量(weight-based)的收費模式,而不是 gas 計量模式。因此,在交易執行之前要收取費用;一旦支付了費用,節點就會執行該交易。
Web3 基金會的研究團隊設計了 Polkadot 交易費用系統,基於以下原則:
- 每個中繼鏈區塊都應進行高效的處理,以避免區塊生產的延遲。
- 中繼鏈的增長率應該是有界限的。
- 每個區塊應該為特殊的、高優先級的交易留出空間,比如不當行為的報告。
- 該系統應該能夠處理需求的高峰。
- 費用應該緩慢變化,以便發送者能夠準確預測需要的交易費用。
費用計算
波卡中繼鏈的費用根據三個參數計算:
重量費(Weight)
- 基礎的重量
- 調用的重量
按字節收費(也稱長度費)
tip 小費(可選)
重量(Weight)是在基於 Substrate 的鏈中使用的一個固定的數字,用於管理驗證區塊所需的時間。每筆交易都有一個計算包含開銷(例如簽名驗證)的基礎重量,以及一個用於說明執行交易的時間的調用重量。所有的重量,甚至是基礎重量,都是在某些標準硬件上執行的時間度量。
Runtime 將重量單位轉換為平衡單位,作為費用計算的一部分。
重量費是基礎重量和調用所消耗的總權重之和。
一個交易可以包括多個調用。例如,一個批次可以包含債券和提名,而重量將是一個基本重量,然後是債券和提名的重量之和。
長度費是固定的每字節費用與交易大小(以字節為單位)的乘積。
還有一個有針對性的費用調整,作為一個乘數,根據網絡擁堵情況來調整最終費用。這可以構成調整後的重量費,計算為目標費用調整數乘以重量費。
這些費用共同構成了交易費。交易費是基礎費加長度費加上調整後的重量費。
交易費在交易執行前從發件人的賬戶中扣除。該費用的一部分將歸區塊鏈生產者所有,其餘的將進入國庫。這個比例分別為 20% 和 80%。
小費是一種可選的交易費用,用戶可以添加該費用以提高交易的優先級。小費不是手續費的一部分,是對區塊作者優先處理交易的一種激勵機制,整個小費直接歸區塊作者所有。
區塊限制和交易優先級
Polkadot 中的區塊同時具有最大長度(以字節為單位)和最大重量。區塊生產者將用不超過這些限制的交易填充區塊。每個區塊的一部分(目前為 25%)被保留用於與鏈運營相關的關鍵交易。區塊生產者最多只會用正常交易填滿區塊的 75%。鏈運營交易的一些示例:
- 不當行為的報告
- 理事會的運作
- 對選舉中的成員的操作(例如放棄候選資格)
區塊生產者根據每筆交易的總費用對交易進行優先級排序。由於部分費用將歸區塊生產者所有,因此區塊生產者將費用最高的交易納入其中,以最大化他們的獎勵。
費用調整
區塊鏈上的交易量非常不規則,因此交易費用需要一種機制來調整。從而用戶能夠預測交易費用。
Polkadot 使用帶有提示的緩慢調整費用機制來平衡這兩種考慮。除了區塊限制,Polkadot 還有一個完整的區塊目標。根據當前區塊相對於目標的完整度,下一個區塊的費用會增加或減少。
在 24 小時內,按重量計費最多可變化 30%。這個費率可以捕捉到需求的長期趨勢,但不包括短期的峰值。為了考慮短期峰值,Polkadot 在長度和重量費用之上使用小費。用戶可以選擇在費用中添加小費,以賦予交易更高的優先級。
分片交易
在 Polkadot 分片(平行鍊和平行線程)中發生的交易不會產生中繼鏈的交易費用。分片應用程序的用戶甚至不需要持有 DOT 通證,因為每個分片都有自己的經濟模型,可能有也可能沒有通證。然而,在某些情況下,分片本身在中繼鏈上進行交易。
平行鏈在中繼鏈上有一個用於執行的專用插槽,因此它們的收集者不需要擁有 DOT 來包含區塊。平行鏈本身會進行一些交易,例如,打開或關閉 XCM 通道、參與拍賣以續租其插槽或升級其 Runtime。平行鏈在中繼鏈上有自己的賬戶,需要使用這些資金代表平行鏈進行交易。
平行線程還將生成與平行鏈相同的交易。此外,收集人需要參與拍賣的每一個區塊以推進他們的鏈。收集人需要有 DOT 來參與這些拍賣。
其他資源限制策略
交易重量在執行之前必須是可計算的,因此,只能表示固定的邏輯。有些交易需要用其他策略來限制資源。例如:
債券:某些交易,如投票,可能需要在鏈上事件後將被退回或被 slash。在投票示例中,如果投票人試圖做任何惡意的行為,則在選舉結束時返回或被 slash 懲罰。
存款:有些交易,如設置鏈上身份或索取索引,會無限期地使用存儲空間。這需要一筆押金,如果用戶決定釋放存儲空間(例如清除他們的 ide),則會退還押金。
燒毀:交易可能會根據其邏輯在內部燒毀資金。例如,如果交易創建新的存儲條目,那麼它可能會銷毀掉髮送方的資金,從而增加狀態的大小。
限制:有些限制是協議的一部分。例如,提名人只能提名 16 名驗證者。這限制了 Phragmen 的複雜性。
高級
以上部分僅涵蓋來自普通用戶的交易。但是,如果你在區塊瀏覽器中查看區塊,你可能會看到一些與這些交易不同的 “外部信息”。在 Polkadot(以及任何構建在 Substrate 上的鏈)中,外部信息是來自鏈外部的信息。外部信息分為三類:
- 簽名的交易
- 未簽名的交易
- 固定的
這裡僅介紹簽名交易,這是大多數用戶與 Polkadot 交互的方式。簽名交易來自有資金的賬戶,因此 Polkadot 可以收取交易費用以防止垃圾郵件。
未簽名交易適用於用戶需要從不控制資金的密鑰對提交外部信息的特殊情況。例如,當用戶在創世之後領取他們的 DOT 通證時,他們的 DOT 地址還沒有任何資金,因此使用了未簽名的交易。
驗證者還以 “heartbeat” 消息的形式提交未簽名的交易,以表明他們處於在線狀態。這些 heartbeat 必須由驗證者的 seession keys 之一簽名。seession keys 從不控制資金。未簽名的交易僅在特殊情況下使用,由於 Polkadot 無法為其收取費用,因此每個交易都需要自己的自定義驗證邏輯。
最後,固定的消息(inherents)是未簽名或未包含在事務隊列中的信息。因此,只有區塊作者才能向區塊添加固定消息。僅因為足夠多的驗證者已經同意它們是合理的,所以假定固定消息是 “真實的”。
例如,Polkadot 區塊包含固有的時間戳。沒有一種辦法證明時間戳是真實的,就像希望通過簽名發送資金的方式一樣。相反,驗證者根據他們找到時間戳的合理程度來接受或拒絕區塊。在 Polkadot 中,它必須在自己的系統時鐘的可接受範圍內。
在波卡網絡中,項目團隊會上傳程序,這些程序會以區塊鏈來呈現,通過租賃系統的押金來支付平行鏈的費用,在支付費用後,用戶完全不需要關心通證之類的東西。而未來波卡的目標是完全消除對加密 currency 的使用,實現 0 手續費,這將使得波卡被更廣泛的採用。
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。