MEV 與可編程的貨幣

作者:Kiara Bickers

來源:https://blog.blockstream.com/miner-extractable-value-mev-and-programmable-money-the-good-the-bad-and-the-ugly/

比特幣內核的安全模式依賴於這種基本的博弈理論 —— 礦工會拿著自己的電子鎬子、無情地追逐利潤;並且,正是這種追逐讓網絡安全。標準的挖礦作業需要生產區塊來賺取區塊獎勵和交易手續費,但你是否想象過礦工可能有別的辦法來從區塊鏈中抽取價值?區塊鏈上是否有別的獲利機會,是礦工可以憑藉自身的優勢地位來利用的?

什麼是 “MEV”?

工作量證明系統中,“礦工可抽取價值(Miner Extractable Value,MEV)” 指的是礦工可以通過在自己挖掘的區塊中排序、排除、重組和替換交易來獲得的收益。不過,因為以太坊升級到了 “以太坊 2.0”,將網絡遷移到了 “權益證明(proof-of-stake)” 系統,MEV 的概念就得到了一個新的名字,現在在權益證明系統中,指的是 “最大可抽取價值”。在這個語境下,取代了礦工的區塊的提議者(block proposer)—— “見證者” —— 有機會抽取這些價值。

在這些網絡中,礦工(或者以太坊 2.0 中見證者)在以區塊形式確認交易時有特殊的角色。他們的位置,讓他們可以搶在其他用戶前面,並且讓他們可以決定區塊鏈上的交易的 最終 排序。在區塊內,交易一般來說是根據從高到低的手續費來排序的,但總是有那麼一些時候,礦工可以通過策略性地改變交易排序來獲得 額外 的利潤。

你可能會問,這有什麼壞處呢,只是礦工賺取了額外的一點利潤而已?僅在一部分礦工裝備了更高級的分析能力和更強大的計算能力、可以比其他人更高效地定位和利用 MEV 利潤機會時,問題才會浮現。

這些機會不會永遠唾手可得,但是,通過分析區塊鏈可以獲得的收益越大,裝備了機器人的研究團隊就越有動力去做這樣的分析。長此以往,礦工盈利能力的差異會在網絡中創造出中心化的趨勢。最終侵蝕區塊鏈的核心原則:去中心化。

這正是比特幣的開發者社區思考如何在比特幣上釋放更強的表達能力時希望避免的事情。

為什麼我們想要可編程的貨幣?

以往,比特幣一直以相對簡單的智能合約來運作。但是,哪怕是處理稍微複雜一點的交易,這種模式也會束手束腳。Bitcoin Script 只能驗證身份鑑證數據,並沒有能力為交易施加速率限制,也不能定義資金的最終目的地,因為 Bitcoin Script 不能訪問交易數據。

另一個某種程度上獨立的問題是,開發和編寫比特幣智能合約對於沒有完全掌握其安全要求的用戶來說會很難。一個提議中的特性,叫作 “保險櫃(vault)”,致力於通過引入帶有時間鎖條件的交易來解決這一痛點。本質上,保險櫃可以作為一種緊急的 “逃生艙”,讓用戶可以在私鑰被盜時復原資金。但這樣的特性,僅在我們的編程語言擁有更強的表達能力時才能實現。

以太坊協議就因為其高度靈活的腳本編程能力而知名,但也明顯受困於 MEV 。絕大部分用戶一般假設比特幣沒有 MEV,即與以太坊截然相反:以太坊被視作狂野的邊疆。但真是這樣的嗎?

更有表達力的智能合約是否一定帶來更多 MEV 場景?

已知有多種因素催生了 MEV:(1) 透明的交易池;(2)透明的智能合約;(3)智能合約的表達能力。每一個因素都給 MEV 打開了新的窗口;我們會逐一辨析。

壞的:(1)透明的交易池

與比特幣網絡的 “交易池” 一樣,絕大部分區塊鏈的交易池是完全透明、開放、可見的,每個人都能看到哪些交易在等待區塊確認。比特幣區塊一般來說要花 10 分鐘才能挖出,理論上,礦工有同等的時間來搶跑(front-run,搶在其他用戶前面)。

但在現實中,比特幣區塊鏈沒有 MEV 的源頭,因為:(1)比特幣交易足夠簡單,礦工之間不會有巨大的分析能力差異;(2 )比特幣交易一般來說不會執行多種資產的交易,比如資產互換和可以被搶跑的開放式交易。

以太坊則相反,其區塊鏈上的公開去中心化交易所(DEX)可以執行一些最複雜的多資產交易。一般來說,以太坊的出塊時間是 15 秒鐘,但在交易池流量高漲的時候,要讓交易立即得到確認所需的 gas 費用(以太坊類型的系統中的交易手續費)可以輕鬆超過 100 美元。結果是,低手續費的交易的等待時間會以分鐘甚至小時為單位。這就給了這些邪惡的搶跑活動很長的時間窗口,又因為以太坊上的各種 layer-2 token 包含了巨大的價值,這樣的活動已經變得非常普遍。

譯者注:在本文中,關於 “token”,作者一直使用同一種表述 “layer-2 token”,這個詞應該更傾向於我們所說的 “鏈上 token 協議” 的意思,而非 “代表 layer-2 項目價值的 token” 的意思(在以太坊等平臺,這樣的 “layer-2 項目” 很多)。

譯者注:作者在這裡的論證是沒什麼道理的。交易池透明或不透明,並不決定是否會出現 MEV 機會,只是決定這些機會向哪些人開放。設想一種完全不透明的交易池(比如一種側鏈的交易池),也完全可以想象其中存在 MEV 機會,但只有能夠看見交易池的區塊打包者才能看見並利用這樣的機會。

壞的:(2) 透明的智能合約

比特幣的 “智能合約” 是得自 Bitcoin Script 的簡單鎖定和解鎖機制。交易的細節(價值、發送者、接收者),在區塊鏈上都是公開可見的。雖然從隱私的角度看,這種完全透明很不理想,但這也是比特幣能讓網絡的所有參與者都驗證區塊鏈的完整狀態的原因之一。任何觀察者都能分析這些合約細節,可能讓特定的 MEV 策略有機可乘。

但比特幣的腳本編程語言,是有意設計得非常侷限的,主要關注發送和接收資金的基本功能,以及用簽名或者哈希鎖來驗證交易。這種簡單天生限制了 MEV 的施展空間,讓這樣的機會相對(其它區塊鏈)來說更加少見。

像以太坊、Solana 和 Cardano 這樣的平臺,都有完全透明的智能合約,但它們與比特幣不同的是,它們都有非常複雜、富有表達能力的腳本編程語言。它們的 “圖靈完備” 的系統在理論上可以執行幾乎任何計算任務,包括:自執行的合約、通過斷言機集成真實世界的信息、去中心化應用(dApp)、token、DEX 中的資產互換,還有自動化做市商(AMM)。它們加在一起,給 MEV 帶來了肥沃的土壤。基於零知識證據的方案,例如 STARKex,理論上可以避免部分問題,但需要付出額外的複雜性。

醜陋的(3):智能合約表達能力

在某些區塊鏈上,MEV 機會是如此豐裕,以至於一些 “MEV 交易公司” 的月利潤高達 “五六位數”。這個趨勢是如此顯著,以至於出現了公開的數據網站,專門掃描以太坊和 Solana 區塊鏈上的獲益機會。他們的盈利能力來自於執行全套 MEV 策略:搶跑、尾隨、三明治攻擊(結合搶跑交易和尾隨交易,將受害者的交易夾在中間)、token 套利,以及清算,等等。每一種策略都利用了不同的原理。

在 layer-1 和 layer-2 上都可以用的部分 MEV 策略:

  1. 廣義的搶跑:機器人掃描交易池中的可以獲利的交易,然後在原交易前搶先執行一筆交易,獲得收益。
  2. 三明治攻擊:攻擊者在一筆大額交易的前面和後面各安排一筆交易,通過操縱資產價格來獲得收益。這種策略利用了大額交易所導致的可預測的價格變動。

僅對 layer-2 token 和智能合約有用的特定策略:

  1. 在不同 DEX 之間套利:機器人利用同一資產在不同 DEX 之間的價格差異來獲利,即低買高賣。
  2. 尾隨 DeFi 自適應價格曲線(Bonding Curve):MEV 機器人通過尾隨在自適應價格曲線上的大額交易之後成交而獲利;在自適應曲線上,大額交易會對價格產生可預測的影響;MEV 機器人可以在價格上漲趨勢中買入,在有利可圖時賣出。
  3. DeFi 清算:MEV 機器人瞄準 DeFi 借貸協議中的機會:在這些借貸協議中,擔保品的價值如果低於某個門檻,他人就可以用更低的價格免到這些被清算的擔保品。

合約的複雜性還顯著催生了與 MEV 相關的難題。

  1. 重入攻擊:這種攻擊利用了智能合約賬戶的邏輯漏洞,讓攻擊者可以在調用智能合約賬戶的一個函數完成之後重複調用,從而多次取出資金。在 MEV 語境下,有經驗的攻擊者可以從中獲得巨量收益,尤其是在那些保管了大量資金的合約中。
  2. 互聯的合約與全局狀態(Global State):在以太坊這樣的平臺中,智能合約賬戶是可以互動的,因此一筆交易就可以觸發多個合約賬戶之間的連鎖反應。這種互聯特性讓複雜的 MEV 策略成為可能:發到一個合約賬戶的一筆交易可能影響另一個合約、帶來了獲益機會的連鎖反應。

這裡,部分問題在於,由 token 以及建立在這些 token 之上的 dApp 的總價值可能會超過區塊鏈在 layer-1 上的原生資產的價值,從而減少出塊者僅僅基於手續費來挑選和確認交易的激勵。

讓事情變得更糟糕的是,許多這樣的機會並不嚴格屬於出塊者。其他擁有 MEV 掃描機器人的參與者也可以競爭同一個機會,導致網絡擁堵、gas 費用飆升。這種情形給網絡和用戶帶來了負外部性 —— 所有人都受到更高的交易手續費的影響,因為區塊鏈變得更加低效、用起來更貴。DeFi 中的 MEV 機會極為普遍,以至於用戶已經幾乎接受了它、把它當成了對所有人的一種隱形稅收。

那麼,這些 MEV 機會是高表達能力的智能合約的天然副產品嗎,還是說,有別的路徑可以走向完全可編程的貨幣的夢想呢?

除了遠離高表達能力的智能合約和 layer-2 token 協議,用戶還可以通過使用支持 “機密交易” 的協議(比如 Liquid)來避免部分風險;這種技術會隱藏交易的細節。但與這些擁有更高表現力編程語言的平臺不同,比特幣還缺乏實現我們所期待的可編程貨幣的能力。

好的:可編程貨幣的取捨

在考慮比特幣上的智能合約的進化時,我們擁有的選擇有:(1)將複雜性放到鏈下;(2)謹慎地集成狹窄的、或者說侷限的 “限制條款(covenant)” 功能;或者(3)擁抱最大表達能力路線。我們再逐一辨析。

(1)鏈下合約的一種新結構:ANYPREVOUT

鏈下的解決方案,比如閃電網絡,旨在強化比特幣的可擴展性和功能性,而避免加重主鏈的負擔,保持鏈上交易快捷且便宜。這些目標聽起來都很好。

SIGHASH_ANYPREVOUT(APO)是一項關於新型公鑰的提議,這種公鑰讓對交易的某些調整可以在簽名後發生(而不使簽名作廢)。這一提議簡化了更新交易的方式,讓交易可以更容易地索引前序 UTXO,讓閃電網絡通道可以更快、更便宜、更安全,也更直接(尤其在解決通道參與者分歧的時候)。

說到底,APO 是一種新的 sighash 標籤。每一筆比特幣交易都必須有一個數字簽名來證明其合法性。而在創建簽名的時候,你會使用 “sighash 標籤” 來說明自己簽名的是交易的哪些部分。有了 APO,發送者可以只簽名交易的所有輸出,而不簽名交易的輸入,從而只固定交易的輸出,但不固定資金來自哪筆前序交易。

APO 帶來了 Eltoo,它讓用戶可以在鏈下交換預先簽名的交易(譯者注:具體來說,它實際上是讓用戶不必保留對手以往簽過名的交易,只需保留最新一筆)。不過,因為 APO 讓交易可以重新排序,它可能會意外帶來 MEV。只要你允許一個簽名綁定到一個交易圖,那麼你就有能力切換交易。輸入是可以切換的,只要新的輸入依然跟簽名兼容。

(2)限制條款:CAT + CSFS 和 CTV

限制條款讓用戶可以控制資金轉移到哪裡去,可以為交易中的資金施加取款速率約束或設置特定的目的地。有兩種類型的限制條款:遞歸的、非遞歸的。

  1. 遞歸的限制條款讓資金可以回到同一類型的限制條款的約束下。
  2. 非遞歸的限制條款限制了這種控制能力,要求預先完整定義資金的未來轉移路徑。

CAT + CSFS 是一種限制條款提議,讓腳本可以構造(或者說定義)未來一筆交易的特定部分。CHECKSIGFROMSTACK(CSFS)會驗證對一個數據的簽名,而 OP_CAT 可以構造這樣的數據。通過使用 CSFS 來要求籤名與 OP_CAT 動態構造出的數據相匹配,我們可以定義這些 UTXO 在未來可以如何花費,並創造出一種遞歸限制條款(雖然有些笨拙)。

OP_CHECKTEMPLATEVERIFY(CTV)則是一種創建非遞歸的限制條款的方法。它不會定義和驗證一筆交易的特定部分,只是約束資金可以如何花費。它定義的是下一筆交易必須符合的 “模板”。

遞歸限制條款的一個風險在於,它可能會帶來一種情形:資金必須服從一組規則,並且困在一個循環中不斷重複、不得逃脫。另一個風險在於,因為限制條款是透明的,也是自執行的,可能會在比特幣上打開一些已經在其它鏈上看到過的 MEV 機會。

那麼好消息是什麼呢?

好消息是,這些提議都會帶來新的表達能力!

那麼,我們可以得到的表達能力極限在哪裡?

(3)全面表達能力:Simplicity

Simplicity 是一種基於區塊鏈的編程語言,它跟其它腳本編程語言都不同,它是非常底層的。它不是建立在 Bitcoin Script 之上的一種語言,也不是 Bitcoin Script 中的一種新的操作碼,而是 Bitcoin Script 的一種替代。理論上,Simplicity 內部可以實現所有的限制條款提議,並實現密碼朋克們希望可編程貨幣擁有的許多其它合約,但其負外部性會比以太坊更少。

視頻:https://youtu.be/n4iLNNF3sU0

Simplicity 保持了比特幣的自包含交易(self-contained transactions)的設計哲學,即,程序不能訪問交易之外的任何信息。從最強表達能力和安全性的設計目的觸發,Simplicity 支持形式化驗證和靜態分析,給了用戶更加可靠的智能合約。

Simplicity(Simfony)CAT + CSFSCTV以太坊SolanaCardano
模式UTXOUTXOUTXO賬戶賬戶EUTXO
圖靈完備性
支持遞歸合約
允許靜態分析部分部分部分
允許形式化驗證

Bitcoin Script 的限制條款提議,雖然比 Simplicity 更加簡單,但也缺乏在 Script 中處理手續費估計的表達能力,因為比特幣缺乏算術函數。Bitcoin Script 沒有乘法和除法,也沒有條件或堆棧操作操作碼;為給定的一個合約(或者限制條款)估計合理的手續費也非常困難。用戶最終會得到意大利麵條一樣的代碼,其中 80% 的邏輯都用來推測合理的手續費是多少。這會讓這些限制條款合約非常複雜並且難以分析。

以太坊虛擬機有循環構造,讓 gas 用量的靜態分析非常困難。但在 Script 和 Simplicity 中,你只需統計有多少操作碼,或者說遞歸地把每一個函數的代價加起來,就可以了。因為 Simplicity 有一個形式化模型,你可以形式化分析程序的行為。但在 Script 中,這是做不到的,雖然你可以靜態分析資源的用量。

Simplicity 將給用戶提供最大程度的表達能力,以及其它有價值的特性,比如靜態分析和形式化驗證。用戶會被鼓勵(而非限制)開發抵抗 MEV 的智能合約。此外,不同合約的結合可能會帶來 MEV,即使它們中的每一個自身都不會。這代表了一種根本的取捨。

視頻:https://youtu.be/rv1YNI-0BXk

增強比特幣的智能合約功能的想法無疑前景光明,而且令人興奮。但重要的是知道,所有這些提議都會帶來一定程度的 MEV 風險 —— 雖然不至於到其它區塊鏈的那個程度。在我們思考如何為比特幣加入更多可編程特性時,我們要回答這些問題:

  • 我們能夠開發出沒有 MEV 風險的協議嗎,還是說這是一個無法企及的理想呢?
  • 給定許多提議的內在的 MEV 風險,何種程度是可以接受的?
  • 最後,最簡單、但能帶來最大表達能力的提議是哪一個?

每一項提議都會有自己的優點和缺點。但是,不論我們採取什麼方向,我們的分析都應該最先考慮安全性、支持去中心化的原則。

注:本文最初發表於 Bitcoin Magazine

(完)

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論