來源| barnabe.substack.com
作者| Barnabé Monnot
標題|從第一原理理解rollup 經濟學
以L1 經濟為基礎對資源進行定價
Rollup 是一種令人驚嘆的原語。 Rollup 將成為以太坊未來擴容的首選方案(可以參考文章《圖解以太坊發展路線》),並為以太坊上的操作提供廣闊的設計空間。總的來說,rollup 擴展了它們所建基的協議,並保留了協議的大部分屬性。在整個過程中最重要的是保證鏈下執行的正確性,以及執行背後的數據可用性。而如何實現這兩點取決於設計者。
最近我開始對從經濟學的角度理解rollup 感興趣。這不僅僅是一個理論上的問題。基礎層(L1) 的費用很高,我們應該積極地提供一些空間,以便用戶在此處可以支付得起交易費用。更好的經濟學意味著更合理的定價,用戶也會更滿意。
那我們應該如何具體思考rollup 的經濟學?本文將首先確定rollup 系統中的各部分,它們的角色和職責。接著梳理出rollup 系統中的各種開銷、收益與費用,從而給我們提供一些線索如何探索這個廣泛的設計空間。
Rollup 遊戲中的角色
簡單來說,我們將理想化地分為三個角色:
用戶:用戶可以在L2 網絡上發送交易,和在L1 上一樣。他們在L2 上持有資產,並且與部署在rollup 上的合約進行交互。
Rollup 運行者:這個角色包含了許多其他角色。 Rollup 運行者代表著處理L2 網絡交易需要用到的所有基礎設施。我們現在有發布交易批次(batches) 的定序者、發布斷言(assertions) 的執行者、提出欺詐證明(fraud proofs) 的挑戰者、計算有效性證明(validity proofs) 的證明者(詳細請看這篇論文)…
基礎層:為rollup 發布的數據提供安全性的協議。這樣的協議可以只需保證數據可用性而不需要結算功能(比如,部署在其執行層上的“模板template” 橋接合約),但也可以是像以太坊這樣的通用結算引擎。
這三個角色的運作:用戶在L2 進行交易,運行者連接用戶和基礎層(數據最終發佈在基礎層上)。
Rollup 的開銷
在本文中,我們從“系統” 的角度看待rollup,主要關注其開銷、收益和費用。運行一個系統會產生開銷,這就像“能量庫” (energy sinks),價值從系統內部流向外部。另一方面,系統也會獲得收益,這就是“能量源” (energy sources),價值從系統外部流向內部。費用則在“能量源” 和“能量庫” 之間架起了橋樑,在系統的各個組件之間轉移價值,以便每個組件正確地履行其功能。
比如,在之前我寫的一篇關於EIP-1559 的文章中,我解釋瞭如何分解用戶支付的交易費用:
打包交易的部分費用歸運行者所有:在PoW 基礎層的情況下,礦工費是對礦工的補償,以對沖增加的叔塊風險。這筆費用覆蓋了運行者發佈區塊的開銷,使他們成為網絡的一部分。而這也是當前你在發送交易時默認按1 或2 Gwei 來支付費用。
其餘的費用支付用於使得其交易優先被打包進區塊鏈,即擁堵定價(pricing congestion)。這個費用使網絡和遭受擁堵情況的用戶在系統中激勵相容。這就是在正常情況下L1 的basefee 的作用。
好消息是,我們將使用一些相同的思路來理解rollup 的開銷。 EIP-1559 的開銷只涉及兩部分:用戶和基礎層。由於rollup 和EIP-1559 兩者的架構不同,而運行者位於用戶和基礎層之間,那麼我們必須將運行者的開銷與基礎層的開銷分開。這一點我們在下文中展開討論:
L2 運行者的開銷(L2 operator costs)
Rollup 必須找到願意花費計算資源來處理rollup 數據的運行者,如維護一個交易池、對交易batch 進行排序、計算狀態根/狀態差異/有效性證明等等。這是一種有形的開銷,用來量化運行者運行基礎設施所需要的花費。
L1 數據發布的開銷(L1 data publication costs)
花一些時間研究數據發布的開銷是值得的,因為這確實是rollup 經濟中的新開銷類型。一旦運行者收集了足夠大的交易集,他們就需要在基礎層上發布該交易集的壓縮信息。目前,這個過程還沒能以一種特別優雅的方式完成:數據僅簡單地作為“CALLDATA” 發布,這是一種允許發送者添加一個任意的字節序列交易屬性。
通常,CALLDATA 包含被交易調用的智能合約方法的引用,以及該方法的輸入參數。這樣理解可能會有幫助:rollup 運行者把代表壓縮交易的字節塊作為輸入參數來調用L1 “rollup 鏈“ 智能合約的一些”registerCompressedData” 方法。這裡是Optimism 的“Canonical 交易鏈” 合約的一個例子。
用戶發送交易,運行者壓縮這些交易並將其發布至基礎層的rollup 鏈智能合約中
發布數據的開銷是由基礎層產生的。為了在以太坊上發布數據,目前數據的市場價格由EIP-1559 控制,其中CALLDATA 的每個非零字節消耗16 gas,而每個零字節消耗4 gas。有了多維度EIP-1559 (在Vitalik 寫的簡單的《Sharding-format blob-carrying transactions (用於分片的攜有blob 的交易類型》中有實例),CALLDATA 的價格可以在它自己的EIP-1559 市場中確定,將數據市場與傳統的執行市場分開定價。
在這個Dune analytics dashboard 中,我試著整理由幾個主要rollup 發布的數據。我不確定我是否捕獲了完整的信息,尤其是zk-rollup 的。如果你發現了一些對不上的地方,請告訴我! 🙂
還可以參考Aditi 最近發布的文章Ethereum Rollup Call Data 定價分析和L2fees.info
L2 擁堵開銷(L2 congestion costs)
還有第三個,更無形的開銷。只要rollup 區塊空間的供應不能滿足現有的需求,稀缺資源就必須被分配。在一個由對時間不敏感的用戶組成的球形奶牛世界中,用戶只需排隊等待。擁堵的系統不會造成價值損失。但是當用戶因等待產生成本時,他們應該會想要盡可能地減少交易延遲。對於排在隊列後面的用戶,他們福利的減少對整個rollup 系統來說是增加了的開銷。
依賴費用市場來執行這種分配是典型的(至少在以太坊世界中是如此),使得這種開銷顯現出來[1]。沒有一個費用市場或者某種形式的擁堵定價,用戶要么“用時間支付” (交易被延遲打包)、在鏈下賄賂區塊提議者以打包其交易、或重複發送他們的交易以保證其中一筆交易會被選中打包。在所有這些情況下,用戶都是通過耗費資源來防止擁堵造成的效用損失。
Rollup 收益
現在我們已經清楚rollup 的開銷了,我們將嘗試分析系統收益。在這裡,我們區分兩種主要資源:交易價值和代幣發放。
交易價值
用戶從rollup 上的交易獲得價值而不是其他地方,因此準備為他們獲得的服務支付費用。這裡的價值是指用戶從他們的交易被打包到rollup 上獲得效用(utility)。如果交易被打包我能獲得50 美元的效用,我願意支付這個金額,讓我的交易被打包。如果我們最終支付了2 美元,我的盈餘是48 美元。但從rollup 系統的角度,無論是誰獲得2 美元的收益,最初流入的價值都是50 美元。
第二,只要交易包含正的MEV,例如在有些DEX 上可被三明治夾擊的兌換交易,這個概念也會被添加到我們的交易價值概念中。在這一點上,誰獲得這個價值不重要,無論是定序者提取這個價值,用戶對交易進行三明治夾擊,還是其他。這裡唯一重要的是我們的最初交易給這整個系統帶來的價值比最初這個用戶從這筆交易中獲得的價值更大。這樣,我們得出:
交易價值= 用戶價值+ MEV
代幣發放
收益的第二個來源是“代幣發放”。在基礎層上,出塊者獲得的收益是新鑄造的代幣,增發出塊者幫助維護的網絡的原生加密資產。這些收益抵消他們的基礎設施開銷,只要他們這樣做是有利可圖的,就會有越來越多的出塊者加入。
假設rollup 能夠鑄造它們自己的代幣,且這個代幣價值不為零。 rollup 可以通過發行新代幣支付其部分運作,以履行其職責。這裡的模型比較模糊,有不同方式將收入來源用於rollup 開銷。現在,我們只考慮發行有價值的代幣是可能的,且通過這樣做可以給系統帶來更多價值。
傳遞責任:rollup 版本
綜上所述,一個rollup 系統包括三個相關方:用戶、rollup 運行者和基礎層。運行這個系統會產生三種類型的開銷:運行成本、在基礎層發布數據的開銷和擁堵開銷。這個系統以兩種形式獲得收入:交易價值和代幣發放。
現在剩下的就是匹配誰支付什麼,以及什麼時候支付的遊戲。有些配對是很容易處理的。運行者必須向基礎層支付L1 數據發布的費用。他們必須在他們發布數據的那一刻就支付,而且按照基礎層的報價來支付。[2]
當在費用市場里費用的定價是動態的,L2 擁堵的開銷也是即時的。用戶觀察rollup 區塊空間當前的需求,並基於可用供應調整他們的費用。例如,rollup 可能想在它們的網絡上部署EIP-1559 式的市場機制來管理L2 交易的打包。然後L2 基本費用可以讓用戶輕鬆預估當前的L2 擁堵開銷。
上圖是系統的全貌,流入代表收益(交易價值+代幣發放),流出代表開銷(L2 運行者開銷、L1 數據發布開銷和擁堵開銷)。費用在不同相關方間轉移價值。
預算平衡:傳遞責任的限制
讓我們給我們的系統添加一個新的限制——運行者預算平衡。我們假設rollup 運行者不能虧損運營,也就是說他們的收益必須至少要等於或大於他們的開銷。這個假設可能並不總是成立,然而在我看來,如果我們關心的是在未來運營者集是否足夠去中心化和開放,這是至關重要的。運行者如果是需要虧本運營的,這會把資本較少的參與者擠出市場,且使得運行者集的規模非常受限。[3] 一個小型的運行者集會削弱抗審查的保證,在最壞的情況下,用戶會被迫在基礎層打包他們的交易,必須支付高額費用。
代幣發放作為一個鬆弛變量遲早會被派上用場,以保證預算平衡。每當運行者“太無利可圖”時,他們就會離開這個系統,這會增加剩餘運行者的發放份額,直到再次達至平衡。同樣,當運行者“收益太高”時,就會有新加入者來爭相分一杯羹,直到運行者再次達到預算平衡。
在延遲支付的情況下維持運行者預算平衡
在預算平衡的規則下,我們必須考慮運行者維持非負的平衡。他們的主要流出,即L1 數據發布是可變的,且其費用收取與他們的主要流入(即交易費) 是分開的。我們假設運行者對他們的L2 運行開銷是完全了解的,並在交易時向用戶報出確切價格(類似於他們認知中的叔塊率與其對應的用於補償的礦工費用)。但是,他們應該如何為用戶提供最終的L1 數據發布開銷報價,延遲一點實現?
今天,rollup 應用啟發式方法來避免L1 數據發布開銷可變性帶來的風險。一種情況是,rollup 觀察當前L1 的基本費用(感謝EIP-3198 !) 並把費用往高報了一點,作為額外緩衝,即在一開始的時候對用戶超額收費,以防後來運行者在發布數據時需要支付更多。另一種情況是,按L1 基本費用的流動平均值函數來向用戶收取費用,以拉平長期的波動。
在我看來,合理的解決方案是調用衍生品,即簡單的L1 基本費用期貨合約。在交易時間,用戶被收取一筆費用,用於鎖定以未來的價格支付在基礎層發布數據的開銷。通過減少悲觀(pessimistic) 超額支付,餘額會發回給用戶。關於這種衍生品的最佳設計,目前的研究還沒有定論。
(譯者註:Pessimistic Approach 是並發控制算法的一種方法,即如果在未來的某個時間點上存在衝突,該事務會被延遲。它鎖定數據庫的記錄以進行更新訪問,其他用戶只能以只讀方式訪問記錄或必須等待記錄被“解鎖”。來源)
用戶在交易時給運行者支付費用,但運行者必須按照基礎層的報價支付數據發布費用,而這不是固定的。
擁堵費用怎麼處理?
假設用戶交易時rollup 能完美地對擁堵費用進行定價,那麼現在就會產生擁堵費用形式的收益。今天,在以太坊基礎層上,這些費用會被燒毀。這樣做的首要原因是與激勵相容:如果擁堵費用返回到出塊者手裡,協議的基本費用報價就不再有約束力,破壞了EIP-1559 的目的。但是燒毀基本費用不是保持激勵相容性的唯一選擇。
有人提議把所有的’rollup 廢氣’,即由經濟外部性(例如擁堵或MEV) 引起的費用, 都用於公共物品的資助。[4] 這不是一個壞的解決方案。城市裡的擁堵定價通常會被指定用於改善公共交通系統,也就是說,這些錢是用於補償負外部性的,當這些外部性被進行相應的定價,會帶來這些收益。
請注意,我其實悄悄把MEV 加進來了…為什麼我們應該像擁堵費用那樣思考MEV ?首先,因為MEV 與擁堵一樣是外部性。發出一筆攜有MEV 的交易這樣的簡單舉動對那些想要捕獲的人來說創造了正外部性。[5] 外部性是“沒有得到匹配的價值”,也就是說,它們產生於一些用報酬來平衡有用工作的原始經濟活動(例如,用戶給L2 運行者支付開銷;運行者支付L1 發布開銷),但在這個過程中它們產生或破壞一些額外價值。
這在MEV 競拍的概念裡得到最清晰的說明,在這種設計中,運行者基於他們能從打包區塊提取多少價值去競爭對一個區塊的打包權。這個價值隱含著擁堵開銷,用戶通過互相競爭出價來表現。更明顯的是MEV 本身,這會是運行者要競爭獲得的。再次,假設不允許運行者在虧損的情況下運營,他們的出價必須反映他們從區塊提取價值的真實能力,即運行者會對他們的交易批次中對用戶費用的總和加上他們從這個交易批次裡提取的MEV 進行出價。同時,假設所有的運行者都必須支付等額的L2 運行者開銷,而L1 的數據發布開銷則精確地向用戶收取,我們會得出:
用戶費用= L1 數據發布費用+ L2 運行者費用+ L2 擁堵費用
運行者開銷= L2 運行者開銷+ L1 數據發布開銷
運行者收益= 用戶費用+ MEV
運行者利潤= 運行者收益- 運行者開銷= L2 擁堵費用+ MEV
在運行者在一個有效市場中競爭,以贏得提議區塊的權利的環境裡,運行者必須同時為他們的整個利潤出價,即在他們的交易批次中的擁堵費用和可得的MEV。[6] 這是系統隱含的價值:第一項來自用戶為了免受擁堵帶來的損失而支付的費用,第二項來自初始交易造成的漣漪效應。這些價值從一開始就不屬於任何人,它們為什麼不能被捕獲和再分配呢?
用戶願意為打包支付高達其交易價值的費用。外部性用虛線矩形表示。
探索rollup 經濟學
這篇文章做了很多假設。例如,我假設“運行者預算平衡”,因為我相信社區應該以批判的眼光看待處於虧損狀態的運行者所運行的rollup ,它們有可能還不適合去中心化。代幣發放有助於重新建立預算平衡,儘管這依賴於一個外生的價格信號(代幣價值) 來協調運行者激勵。在這種觀點下,運行者更偏向於盡可能準確地對他們可以定價的東西定價,即他們的L2 運行者開銷和L1 數據發布成本。這就避免了未來收益的錯配,運行者會期望更高的代幣價格來支付他們的運營。[7]
但這並不是在倡導一種特定形式的rollup 經濟學。設計空間仍然是寬廣的。探索L2 運行者開銷發現更多我們還未探索的複雜性,例如,市場機構支持一個去中心化的基礎設施以生成用於zk-rollup 的有效性證明。專注於rollup 上特定類型的用戶(例如,從L2 到L1 或跨L2 橋接的快速提款服務) 還會發現用戶需求的不同面向。在清楚了開銷、收益和費用的概念後,希望現在能更容易分析出rollup 應該實現什麼樣的結果和商業目標,以及實現這些目標的手段。
其他資源
John Adler 的“Wait, it’s all resource pricing?” (此處是幻燈片和視頻) 給出了L2 運行者開銷,執行與數據可用性開銷分離的背景。
Patrick McCorry, Chris Buckland, Bennet Yee, Dawn Song, SoK: Validating Bridges as a Scaling Solution for Blockchains
非常感謝Anders Elowsson、Vitalik Buterin、Fred Lacs 和Alex Obadia 非常多有用的意見。
1
Vitalik 還認為,這種開銷是區塊空間提供者的機會成本。在這種解讀中,如果你的交易被打包了,你應該至少向提供者支付他們本來可以從打包其他交易中獲取的收益。
2
這意味著我們可以進一步解鎖我們的模型。數據發布開銷是通過對基礎層的擁堵情況預測和來報價的,這就與基礎層的運行者,即出塊者一起形成一個整體。
3
運行者集的中心化可能並不如基礎層的出塊者集中心化般糟糕,但對rollup 網絡去中心化權衡的評估留待未來進行。
4
在撰寫時,甚至那些錯配的費用,例如那些從用戶收取的用於支付數據發布開銷的費用,都用作一些公共物品募資,像Optimism 發起的追溯性公共物品募資計劃。
5
有趣的是,gas 價格競拍這種用於捕獲正外部性的競爭卻對整個網絡創造了負外部性,使得網絡必須處理更嚴重的擁堵!
6
請注意,在有些運行者可以獲得私人交易訂單流,或參與跨領域MEV (致敬Alex Obadia!) 的情況裡,失效效率不再是一個公平的假設。在後一種情況裡,在跨域提取者中的市場效率可以在單域構建者競拍中重建市場效率。
7
順便說一下,這種模式並不可怕!這主要是礦工一直以來的運作模式。然而,我們必須記住,任何由運行者承擔的額外風險都是中心化的壓力,除非有可用的風險管理的原語,如衍生品。即使有這樣的選擇來對沖風險,開展良好業務的所需知識可能門檻很高,這會使的技術水平不高的運行者望而卻步。