昨天談鏈抽象與意圖時停在一個沒解決的地方:意圖沒有消除信任,只是把信任從橋搬到求解者與結算合約,而使用者根本無從判斷自己拿到的報價是不是最好的那一個。今天把這條線往下推一格,處理「執行品質」這件事本身——訂單流拍賣(Order Flow Auction, OFA)用什麼機制逼出好報價、學術界怎麼把「你賺了多少」量化成一個可以檢驗的數字、以及在哪一段這個數字仍然是拍賣人自己說了算。
📖 學
先把整條鏈路攤開。一筆使用者的交易從按下確認到最終被打包,中間至少經過四次不同形式的競價,這條路徑通常被稱作 MEV 供應鏈(MEV supply chain):使用者把訂單交給錢包或前端,錢包把訂單流賣給或路由給某個拍賣人,拍賣人辦一場拍賣讓 solver 或 searcher 出價,得標者把交易組成 bundle 交給 builder,builder 再在 PBS 的區塊建構拍賣裡向 proposer 出價。價值在這條鏈上是往下游漏的:每一層抽一點,剩下的往上游回流。回流比例有多高,取決於那一層的競爭是否真實。
這也是為什麼「訂單流」本身變成一種被明碼標價的商品。錢包手上握有大量沒有被前跑保護的交易,這些交易對 searcher 來說是穩定的回跑(backrun)機會來源。錢包可以把它免費丟進公開記憶池讓 MEV bot 白撿,也可以辦一場拍賣把它賣掉,再把賣得的錢分一部分回給使用者。OFA 的本質就是後者:它不是消滅中間人,而是把中間人放進一個他必須出價競爭的位置。
目前主流的 OFA 大致分成兩個家族,機制差別不小,卻常被混為一談。
| 交易意圖拍賣 | 回跑退款型 | |
|---|---|---|
| 代表 | CoW Protocol、UniswapX、1inch Fusion | MEV Blocker、Flashbots Protect |
| 使用者送出什麼 | 一份簽名的意圖(我要用 X 換至少 Y) | 一筆一般交易,只是改走私有 RPC |
| 誰競價 | solver 競價「給使用者多少 output」 | searcher 競價「回跑這筆交易的權利」 |
| 排序依據 | 使用者剩餘(surplus)最大化 | 出價金額最高 |
| 使用者拿到的形式 | 更好的成交價 | 事後的 ETH 回扣 |
| 失敗風險 | 意圖可能沒人成交、過期 | 交易可能較晚上鏈 |
交易意圖拍賣把「報價」變成競標的標的物,這是它跟傳統聚合器最大的差異。聚合器是自己算一條路由給你,OFA 是讓十幾個獨立的 solver 各自算,然後挑出對你最好的那個。回跑退款型則保守得多,它不動你的交易內容,只是把「你的交易製造出來的套利機會」拿去賣。MEV Blocker 的分潤規則是 90 / 10:得標 searcher 的出價有 90% 退還給使用者,10% 留給 builder 與 validator 作為打包誘因。它目前護送的流量相當可觀,官方說法是佔以太坊主網每日交易的兩成以上。
那麼使用者實際上賺到多少?這裡有一份把它算清楚的研究。Bachu 與 Wan 等人的〈Quantifying Price Improvement in Order Flow Auctions〉建立了一套價格改善(price improvement)的量測框架,並套用在 Uniswap 與 1inch 的真實成交上。結論大致是:UniswapX 與 1inch Fusion 的荷式拍賣部分,平均帶來 5 到 6 個基點(bps)的價格改善;UniswapX 併入 Uniswap 前端之後,對該前端使用者的平均改善約 4.7 bps。
但論文裡最值得記住的是拆解,不是總數。這 5 bps 裡有 3 到 4 bps 來自路由——也就是 solver 能碰到更多流動性來源、能做更聰明的拆單——而不是來自拍賣競爭本身。換句話說,如果你把 OFA 的好處全部歸功於「MEV 保護」,你歸錯功了;它大部分是聚合器就能給你的東西。同一份研究也指出,OFA 與聚合器相較於直接走 Uniswap classic 都有非零的 gas 額外開銷,換算後大約造成 0.5 到 1 bps 的執行品質損耗。
這個 gas 開銷值得自己算一遍,因為它是固定成本,而價格改善是比例成本,兩者交叉的地方決定了 OFA 對你到底划不划算。假設 OFA 的結算路徑比直接呼叫 router 多花 40,000 gas,gas price 5 gwei,ETH 報價 3,000 美元:
40,000 × 5 gwei = 200,000 gwei = 0.0002 ETH
0.0002 ETH × $3,000 = $0.60
這 0.6 美元套在不同金額上,換算成基點差很多:
- 10,000 美元的交易:0.6 / 10,000 = 0.006% = 0.6 bps,相對於 5 bps 的改善,淨賺約 4.4 bps,約 4.4 美元。
- 1,000 美元的交易:0.6 / 1,000 = 0.06% = 6 bps,已經吃光整個改善,淨值大約打平甚至為負。
- 200 美元的交易:0.6 / 200 = 0.3% = 30 bps,穩穩虧損。
把它寫成門檻公式:划算金額下限 = gas 額外開銷(美元)÷(價格改善 bps ÷ 10000)。用上面的數字就是 0.6 ÷ 0.0005 = 1,200 美元。低於這個量級,你為了避免被抽 5 bps 的 MEV,付了 30 bps 的手續費。而且 gas price 一漲,門檻等比例往上跳——10 gwei 的時候門檻就變成 2,400 美元。這是「MEV 保護一定比較好」這個直覺最大的破口。
再來是機制設計上比較深的一層:組合拍賣的公平性。當 solver 可以對一組訂單一起出價(batched bid),就出現一個很微妙的操縱空間——他可以在打包解裡讓 A 訂單少拿一點、B 訂單多拿一點,使整批的總剩餘看起來最大,卻讓 A 的成交比 A 單獨被拍賣時還差。CoW Protocol 的公平組合批次拍賣(Fair Combinatorial Batch Auction)用一條可檢查的約束堵住它:先濾掉那些「對某筆訂單的給付低於同場已有的非打包出價」的打包出價,再從剩下的組合裡挑總剩餘最大的。這條規則把「公平」從口號變成一個具體的下限保證——每筆訂單至少拿到它單獨被拍賣時能拿到的價格。
同一套設計還帶出統一定向清算價(Uniform Directed Clearing Prices, UDP):同一個方向的資產對在同一批次內只有一個成交價。這件事的效果比聽起來大——當同批次內順序不再影響價格,三明治攻擊賴以生存的槓桿就消失了,因為「把你排在我後面」不再產生任何價差。MEV 不是被禁止,是被設計成無利可圖。
最後是承諾與履約之間那道縫。出價是承諾,執行才是結果,中間隔著幾秒到幾十秒的價格波動與鏈上狀態變化。Watts 等人的〈Using “Failure Costs” to Guarantee Execution Quality〉處理的正是這段:在無許可、吞吐量有限的環境裡,理性對手可以送出虛假出價(spoof bid)佔住執行位、卡死競爭者,而拍賣人在鏈下又很難準確模擬每個解的真實結果。他們提出的失敗成本(failure cost)只在一個很窄的條件下觸發——解被執行了,卻沒有付出它所承諾的出價、或沒有滿足訂單——搭配鏈上託管,讓應用可以在結果最終確定之前,就先給使用者一個有保證的最低結果。
均衡分析的結論很漂亮:出價會完整反映投標到執行之間可能的價格上漲,卻只部分反映可能的下跌。原因是三個不對稱疊在一起——得標者的上檔沒有上限、執行失敗的下檔被罰金封頂、落標者則完全不賠。這種不對稱的方向剛好對使用者有利。
那麼還有哪裡是不可驗證的?兩處。第一是拍賣人本身。訂單先進入鏈下的訂單簿,誰能看到、看多久、排名怎麼算,鏈上完全沒有紀錄。CoW 有公開的競賽端點可以查每場拍賣所有 solver 的出價與排名,這是目前透明度最高的做法之一,但那終究是拍賣人自報的資料——你能查證他公布的排名內部一致,查不出他有沒有漏公布某些出價。第二是基準線。價格改善永遠是相對於某個 baseline 算出來的:相對 Uniswap classic、相對某個聚合器報價、還是相對某種「以太坊最佳買賣價」,選哪個基準會讓同一筆成交的數字差好幾倍。看到任何「我們平均給你多 X bps」的宣傳,第一個要問的不是 X 多大,是 X 相對於什麼。
🧠 記
OFA 的核心不是消滅中間人,是把中間人放進一個他必須出價的位置。判斷一個 OFA 好不好,看的不是它宣稱保護了什麼,而是看它的競爭是否真實、公平約束是否可檢查、以及承諾到履約之間有沒有懲罰機制。這三件事分別對應到 solver 數量與集中度、公平組合拍賣那條下限規則、以及失敗成本與託管。
記三個數字就夠了。5 bps——OFA 的平均價格改善量級,其中 3 到 4 bps 其實來自路由而非拍賣。90 / 10——MEV Blocker 回跑退款的分潤比例。1,200 美元——在 5 gwei 的 gas 環境下,OFA 開始划算的金額量級;記住這是隨 gas price 線性移動的門檻,不是固定值。
留一條判準給自己:任何宣稱提供「更好執行」的系統,先問三件事——基準線是什麼、數字是誰算的、算完之後別人能不能獨立重算一次。前兩題大多數專案答得出來,第三題答得出來的很少。而昨天那個「信任只是搬家」的結論,在這一層仍然成立:你可以驗證得標解確實執行了、確實給了承諾的金額,但你驗證不了有沒有一個更好的出價從來沒被公布。
✍️ 實踐
今天做兩件事,加起來大約 25 分鐘。
第一件(約 10 分鐘):把一場真實拍賣的出價名單看過一遍。 打開 CoW Protocol 的 API 文件,找到 orderbook API 那一節。流程是先用 GET /api/v1/orders/tx/{txHash} 拿到某筆結算交易裡的所有訂單與對應的 auction id,再用 solver competition 端點把那場拍賣的完整出價與排名拉下來。隨便從區塊瀏覽器挑一筆 CoW 的結算交易當輸入就行。要看的是三件事:這場拍賣有幾個 solver 出價、第一名跟第二名的差距有多少、以及有沒有出現同一個 solver 長期霸榜的跡象。
第二件(約 15 分鐘):算出你自己的 OFA 門檻。 開一張試算表,把你最近 5 筆 swap 的美元金額列進去。設定三欄:gas 額外開銷(先用 40,000 gas 這個假設,乘上你當時實際的 gas price 與 ETH 價格)、換算後的 bps 成本、以及假設 5 bps 價格改善下的淨值。然後把 gas price 那格改成 5、10、30 gwei 各跑一次,看看門檻金額怎麼移動。跑完你會得到一個很實用的個人規則:低於某個金額,就別為了避免 MEV 而繞路。
🔗 延伸學習
- Quantifying Price Improvement in Order Flow Auctions(arXiv 2405.00537) — 價格改善的量測框架與 UniswapX / 1inch Fusion 的實證拆解,本文的 bps 數字出自這裡。
- Using “Failure Costs” to Guarantee Execution Quality in Competitive and Permissionless Order Flow Auctions(arXiv 2503.05338) — spoof bid、失敗成本與鏈上託管的機制設計。
- Fair Combinatorial Batch Auction | CoW Protocol Docs — 公平約束與 UDP 的官方說明,篇幅短,值得逐句讀。
- Order flow auction | MEV Blocker Docs — 回跑退款型 OFA 的分潤與運作細節。
💬 問 AI
我在研究訂單流拍賣(OFA)的執行品質度量,請幫我做三件事:
1. 用一張表比較 CoW Protocol、UniswapX、1inch Fusion、MEV Blocker 這四者在
以下維度的差異:使用者送出的是意圖還是交易、競價者是 solver 還是 searcher、
排序依據、價值回流給使用者的形式、以及失敗時使用者承擔什麼風險。
2. 「價格改善 5 bps」這個數字的 baseline 選擇會如何影響結論?請列出至少三種
常見 baseline(例如某個 AMM 的即時報價、聚合器報價、跨場所最佳報價),
說明各自會高估或低估什麼。
3. 幫我設計一個檢查清單,用來判斷一個 OFA 的 solver 競爭是不是真實的。
清單要能用公開資料驗證,請標明每一項要去哪裡取數、以及什麼樣的數值
算是紅旗。
請只用公開可查證的機制與論文,不要給投資建議,也不要推薦特定平台。