費用機製是區塊鏈的一個重要特徵。像驗證者這樣的網絡維護者擁有有限的資源,因此以反映網絡成本的方式對稀缺資源進行收費非常重要。費用還可以激勵網絡參與者,例如用戶、應用程序開髮人員和驗證者。
在本繫列中,我們將探討 Solana 當前的費用機製,形式化費用機製的設計空間,併分析對 Solana 費用機製的一些擬議變更。
本篇文章是該繫列的第一部。在這裡,我們解釋了 Solana 目前的費用如何運作,重點是基於交易的費用。
這些是理解費用機製所需的 Solana 特定定義。
簽名:每筆交易至少包含一個,通常隻有一個簽名。
Lamport:SOL 的最小原子單元。 1 SOL 等於十億 (10^9) Lamport。
計算單元 (CU):每個 Solana-BPF 指令的計算單元,旨在估算執行指令的成本。類似於以太坊上的燃氣Gas單位。
使用的 CU:用於執行交易的計算單元的數量,僅在執行後才知道。
CU請求:由交易指定;如果事務在執行期間超出此計算預算,則執行將停止併且事務失敗。每筆交易請求(和使用)的最大 CU 爲 1,400,000 個 CU。
賬戶:Solana 區塊鏈上的單個狀態。
Scheduler:連續區塊構建機製,默認包含在 Solana Labs 構建的 Solana 客戶端中。
如今,Solana 交易包含兩項費用:基本費用 和一個優先費。
每個簽名的基本費用固定爲每個簽名 5000 lamports(0.000005 SOL,0.0003 美元,60 美元/SOL);絶大多數 Solana 交易都有一個簽名。
可選的優先權費用在交易中指定,併以每個 CU 請求的Lamport計價。請註意,這不是每個使用的 CU,因爲在執行事務之前,所使用的 CU 是未知的。具有較高優先級費用的交易由調度程序不確定地確定優先級。具體機製描述於Solana 事務的生命周期。
費用在交易執行開始時從費用支付者處扣除。如果付款人無法支付所需費用,則跳過執行,交易被視爲無效,併且不被計入。
對於基本費用和優先費,領導者保留 50% 作爲將交易包含在區塊中的激勵,50% 被銷毀。
在這個交易示例,該交易請求 600,000 個計算單元,併將每個 CU 請求的優先費設置爲 2500 個 microlamport。由於交易隻有一個簽名,因此交易的總費用爲 5000 lamports + 請求的 600,000 CU * 2500 microlamports / 請求的 CU = 6500 lamports,即 0.0000065 SOL。
Solana 還額外收取創建新狀態的費用租金豁免 (舊術語)。當前的租金豁免成本爲每 MB 靜態 6.96 SOL。創建新帳戶時,費用將分配給該帳戶;當帳戶被刪除時,其租金減免費用可以被收回。
由於基本費用對使用的 CU 或請求的 CU 不敏感,因此基本費用沒有動力來優化計算使用,也沒有動力請求接近實際使用數量的 CU。實際上,Solana 上的許多交易請求的 CU 遠多於最終使用的 CU。這會導緻調度程序效率低下。
在上麵的交易示例,該交易請求 600,000 個 CU,但使用量少於 250,000 個。
雖然優先費確實包括減少所請求的 CU 以及因此使用的 CU 的激勵措施,但這種激勵措施在大多數情況下都很弱,併且僅在擁塞期間才會生效。一項簡單的修改是擴大基本費用,要求每個 CU 請求都收取費用。這將激勵開髮人員和交易髮送者減少計算使用量,併僅請求所需的資源。
一個機製是激勵兼容 如果該機製的所有參與者都按照自己的真實偏好行事,從而達到最佳結果。在費用機製的背景下,這大緻意味著驗證者通過運行默認的區塊構建算法來最大化費用,而交易髮送者通過根據其真實的支付意願提交優先費用的交易來最大化福利。
Solana 的費用機製與當今的驗證者和交易髮送者的激勵不兼容。如上所述,50% 的交易費用由領導者保留,50% 被銷毀。由於併非所有費用都歸領導者所有,因此這會激勵交易髮送者與領導者勾結:髮送者可以與領導者創建一項附帶交易來支付交易費用,而不是指定優先費用來穫得優先包含。網外優先費,在仍穫得優先權的衕時減少燒毀。
理論上,運行這種機製的驗證者會收到更多費用,因此可以爲其委托的利益相關者提供更高的獎勵,從而形成中心化力量。
除了直接的垂直整合之外,我們目前在市場上看到這種附帶交易的主要方式是通過 Jito 拍賣。運行 Jito-Solana(Solana Labs 客戶端的修改版)的驗證者打破了連續區塊構建機製,在其時隙的前半部分運行區塊空間拍賣。
目前我們尚未在市場上觀察到其他此類附帶交易。這是因爲:
與大多數其他區塊鏈不衕,Solana 要求交易髮送者指定執行交易需要哪些狀態。這開啟了併行交易執行和本地化費用市場,其中不衕的州根據特定州的爭議程度有不衕的費用。局部狀態熱點不需要增加整個區塊鏈的競爭或費用。
關於 Solana 的一個常見誤解是它現在具有本地費用市場。雖然支付較高優先級費用的交易更有可能被包含在更高的區塊中,併且競爭狀態可能需要更高的優先級,但這種行爲是不確定的,併且是 Solana 默認值實施的結果調度算法。我們對此進行了更多探索Solana 事務的生命周期。
特別是,這種行爲不是通過共識強製執行的,併且無論是通過共識還是通過調度程序實現都不能保證按優先級費用進行確定性排序。 Solana 的連續區塊構建和區塊傳播可防止確定性排序,除非髮生較大變化(例如確定性排序和異步執行)已實施。
基於歷史競爭的、強製執行的、可預測的狀態訪問基本費用可以提高訪問高度競爭狀態的效率和用戶體驗。這會增加垃圾郵件的成本,衕時還會激勵交易髮送者鎖定他們實際需要的最少量狀態。它無法解決垃圾郵件的根本原因,垃圾郵件來自連續的塊構建(因此延遲很重要)和抖動。我們將在本繫列的後麵部分探討這種設計。
由於交易主要按照到達領導者(調度程序)的時間進行排序,併且該順序會受到網絡抖動和併行調度程序實現導緻的抖動的影響,因此當髮送者希望盡快包含交易時,就會有動機髮送垃圾郵件交易。可能的。此類交易以垃圾郵件登陸鏈上的形式給網絡帶來負外部性(截至 2023 年 1 月,Solana 58% 的鏈上計算用於恢覆交易)和垃圾郵件到達領導者。
來自吉托實驗室
在本文中,我們描述了 Solana 的費用機製目前如何運作,及其對網絡的影響。我們已經暗示了理想的費用機製將滿足的一些屬性,例如對調度程序的準確提示(CU 請求)、激勵兼容性和真正的本地化費用市場。在下一篇文章中,我們將爲費用機製應優化的目標定義形式主義。這將用於分析當前的費用機製,以及對該機製的擬議修改,比此處錶達的更加嚴格。
費用機製是區塊鏈的一個重要特徵。像驗證者這樣的網絡維護者擁有有限的資源,因此以反映網絡成本的方式對稀缺資源進行收費非常重要。費用還可以激勵網絡參與者,例如用戶、應用程序開髮人員和驗證者。
在本繫列中,我們將探討 Solana 當前的費用機製,形式化費用機製的設計空間,併分析對 Solana 費用機製的一些擬議變更。
本篇文章是該繫列的第一部。在這裡,我們解釋了 Solana 目前的費用如何運作,重點是基於交易的費用。
這些是理解費用機製所需的 Solana 特定定義。
簽名:每筆交易至少包含一個,通常隻有一個簽名。
Lamport:SOL 的最小原子單元。 1 SOL 等於十億 (10^9) Lamport。
計算單元 (CU):每個 Solana-BPF 指令的計算單元,旨在估算執行指令的成本。類似於以太坊上的燃氣Gas單位。
使用的 CU:用於執行交易的計算單元的數量,僅在執行後才知道。
CU請求:由交易指定;如果事務在執行期間超出此計算預算,則執行將停止併且事務失敗。每筆交易請求(和使用)的最大 CU 爲 1,400,000 個 CU。
賬戶:Solana 區塊鏈上的單個狀態。
Scheduler:連續區塊構建機製,默認包含在 Solana Labs 構建的 Solana 客戶端中。
如今,Solana 交易包含兩項費用:基本費用 和一個優先費。
每個簽名的基本費用固定爲每個簽名 5000 lamports(0.000005 SOL,0.0003 美元,60 美元/SOL);絶大多數 Solana 交易都有一個簽名。
可選的優先權費用在交易中指定,併以每個 CU 請求的Lamport計價。請註意,這不是每個使用的 CU,因爲在執行事務之前,所使用的 CU 是未知的。具有較高優先級費用的交易由調度程序不確定地確定優先級。具體機製描述於Solana 事務的生命周期。
費用在交易執行開始時從費用支付者處扣除。如果付款人無法支付所需費用,則跳過執行,交易被視爲無效,併且不被計入。
對於基本費用和優先費,領導者保留 50% 作爲將交易包含在區塊中的激勵,50% 被銷毀。
在這個交易示例,該交易請求 600,000 個計算單元,併將每個 CU 請求的優先費設置爲 2500 個 microlamport。由於交易隻有一個簽名,因此交易的總費用爲 5000 lamports + 請求的 600,000 CU * 2500 microlamports / 請求的 CU = 6500 lamports,即 0.0000065 SOL。
Solana 還額外收取創建新狀態的費用租金豁免 (舊術語)。當前的租金豁免成本爲每 MB 靜態 6.96 SOL。創建新帳戶時,費用將分配給該帳戶;當帳戶被刪除時,其租金減免費用可以被收回。
由於基本費用對使用的 CU 或請求的 CU 不敏感,因此基本費用沒有動力來優化計算使用,也沒有動力請求接近實際使用數量的 CU。實際上,Solana 上的許多交易請求的 CU 遠多於最終使用的 CU。這會導緻調度程序效率低下。
在上麵的交易示例,該交易請求 600,000 個 CU,但使用量少於 250,000 個。
雖然優先費確實包括減少所請求的 CU 以及因此使用的 CU 的激勵措施,但這種激勵措施在大多數情況下都很弱,併且僅在擁塞期間才會生效。一項簡單的修改是擴大基本費用,要求每個 CU 請求都收取費用。這將激勵開髮人員和交易髮送者減少計算使用量,併僅請求所需的資源。
一個機製是激勵兼容 如果該機製的所有參與者都按照自己的真實偏好行事,從而達到最佳結果。在費用機製的背景下,這大緻意味著驗證者通過運行默認的區塊構建算法來最大化費用,而交易髮送者通過根據其真實的支付意願提交優先費用的交易來最大化福利。
Solana 的費用機製與當今的驗證者和交易髮送者的激勵不兼容。如上所述,50% 的交易費用由領導者保留,50% 被銷毀。由於併非所有費用都歸領導者所有,因此這會激勵交易髮送者與領導者勾結:髮送者可以與領導者創建一項附帶交易來支付交易費用,而不是指定優先費用來穫得優先包含。網外優先費,在仍穫得優先權的衕時減少燒毀。
理論上,運行這種機製的驗證者會收到更多費用,因此可以爲其委托的利益相關者提供更高的獎勵,從而形成中心化力量。
除了直接的垂直整合之外,我們目前在市場上看到這種附帶交易的主要方式是通過 Jito 拍賣。運行 Jito-Solana(Solana Labs 客戶端的修改版)的驗證者打破了連續區塊構建機製,在其時隙的前半部分運行區塊空間拍賣。
目前我們尚未在市場上觀察到其他此類附帶交易。這是因爲:
與大多數其他區塊鏈不衕,Solana 要求交易髮送者指定執行交易需要哪些狀態。這開啟了併行交易執行和本地化費用市場,其中不衕的州根據特定州的爭議程度有不衕的費用。局部狀態熱點不需要增加整個區塊鏈的競爭或費用。
關於 Solana 的一個常見誤解是它現在具有本地費用市場。雖然支付較高優先級費用的交易更有可能被包含在更高的區塊中,併且競爭狀態可能需要更高的優先級,但這種行爲是不確定的,併且是 Solana 默認值實施的結果調度算法。我們對此進行了更多探索Solana 事務的生命周期。
特別是,這種行爲不是通過共識強製執行的,併且無論是通過共識還是通過調度程序實現都不能保證按優先級費用進行確定性排序。 Solana 的連續區塊構建和區塊傳播可防止確定性排序,除非髮生較大變化(例如確定性排序和異步執行)已實施。
基於歷史競爭的、強製執行的、可預測的狀態訪問基本費用可以提高訪問高度競爭狀態的效率和用戶體驗。這會增加垃圾郵件的成本,衕時還會激勵交易髮送者鎖定他們實際需要的最少量狀態。它無法解決垃圾郵件的根本原因,垃圾郵件來自連續的塊構建(因此延遲很重要)和抖動。我們將在本繫列的後麵部分探討這種設計。
由於交易主要按照到達領導者(調度程序)的時間進行排序,併且該順序會受到網絡抖動和併行調度程序實現導緻的抖動的影響,因此當髮送者希望盡快包含交易時,就會有動機髮送垃圾郵件交易。可能的。此類交易以垃圾郵件登陸鏈上的形式給網絡帶來負外部性(截至 2023 年 1 月,Solana 58% 的鏈上計算用於恢覆交易)和垃圾郵件到達領導者。
來自吉托實驗室
在本文中,我們描述了 Solana 的費用機製目前如何運作,及其對網絡的影響。我們已經暗示了理想的費用機製將滿足的一些屬性,例如對調度程序的準確提示(CU 請求)、激勵兼容性和真正的本地化費用市場。在下一篇文章中,我們將爲費用機製應優化的目標定義形式主義。這將用於分析當前的費用機製,以及對該機製的擬議修改,比此處錶達的更加嚴格。