以太坊 MEV 實證研究:Transaction-Level 攻擊重構、量化收益分析與 PBS 未來演化
本文深入探討以太坊 MEV 生態系統的真實運作機制,透過 Transaction-Level 的實際攻擊案例重構、數學推導和量化數據分析,揭示搜尋者-建構者-提議者三層市場結構的實際運作邏輯。我們詳細分析三明治攻擊、套利機器人、結算機器的實際操作步驟,並探討 PBS (Proposer-Builder Separation) 的深層機制設計、加密 mempool 的密碼學原理、以及 MEV 對以太坊網路安全性的深層影響。
以太坊 MEV 實證研究:Transaction-Level 攻擊重構、量化收益分析與 PBS 未來演化
說真的,聊 MEV 這麼久,我一直覺得網路上大部分文章都在霧裡看花。要嘛把 MEV 吹成區塊鏈的救世主,說什麼釋放了被鎖住的價值;要嘛把它妖魔化,覺得這就是以太坊的癌症。但真相從來都在兩個極端的中間。今天這篇文章,我不打算給你什麼中庸之道——我要帶你直接看鏈上數據,把那些三明治攻擊、套利機器人、結算機器的實際操作步驟一個步驟一個步驟地拆開來看。看完之後,你對 MEV 的理解大概會跟之前完全不一樣。
一、我們要怎麼追蹤 MEV?方法論與工具鏈
在開始拆解實際攻擊案例之前,得先說清楚我們從哪裡拿數據、怎麼驗證這些數據是真的。
1.1 數據來源與驗證框架
MEV 研究最大的挑戰是什麼?是你看到的東西永遠都是別人想讓你看到的。搜尋者提交的 Bundle 在上鏈之前是加密的,建構者的區塊構造邏輯是商業機密,普通用戶壓根不知道自己的交易被折騰了幾遍才最終確認。
但鏈上數據是無法竄改的。我們能看到的包括:
可用數據維度:
┌─────────────────────────────────────────────────────────────┐
│ 鏈上可觀測數據 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 交易層面: │
│ ├── Transaction Hash(交易哈希) │
│ ├── From/To Address(發送/接收地址) │
│ ├── Input Data(輸入數據,可解碼) │
│ ├── Gas Used / Gas Price(Gas消耗/單價) │
│ ├── Block Number & Timestamp(區塊號/時間戳) │
│ └── Status(成功/失敗) │
│ │
│ 區塊層面: │
│ ├── Block Hash(區塊哈希) │
│ ├── Gas Limit / Gas Used(Gas上限/消耗量) │
│ ├── Transactions Root(交易樹根) │
│ └── Receipts Root(收據樹根) │
│ │
│ 事件層面(Event Logs): │
│ ├── Transfer Events(轉帳事件) │
│ ├── Approval Events(授權事件) │
│ ├── Swap Events(交換事件) │
│ └── 自訂事件(合約觸發) │
│ │
│ traces/mempool(需特殊節點): │
│ ├── Internal Calls(內部呼叫追蹤) │
│ ├── State Changes(狀態變更) │
│ └── Pre-Filtered Mempool(交易池快照) │
│ │
└─────────────────────────────────────────────────────────────┘
1.2 實際使用的分析工具棧
我個人用的工具鏈大概是這樣:
# MEV 分析工具棧示範
from web3 import Web3
import pandas as pd
from dunepy import DuneAPI
import numpy as np
class MEVAnalyzer:
"""
這不是生產環境代碼,只是展示思路
"""
def __init__(self, rpc_url: str, dune_api_key: str):
self.w3 = Web3(Web3.HTTPProvider(rpc_url))
self.dune = DuneAPI(dune_api_key)
# 重要合約地址
self.flashbots_relay = "0xA4108bA7E1Fa0A7dE8b6C45C5c4b8C0b7e8F6a1D"
self.uniswap_v2_factory = "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f"
def get_block_mev_opportunities(self, block_number: int) -> dict:
"""分析單一區塊的 MEV 機會"""
block = self.w3.eth.get_block(block_number, full=True)
# 解析所有交易
txs = []
for tx in block.transactions:
decoded = self._decode_transaction(tx)
txs.append(decoded)
# 識別 MEV 相關交易模式
sandwiches = self._detect_sandwiches(txs)
arbitrages = self._detect_arbitrages(txs)
liquidations = self._detect_liquidations(txs)
return {
"block": block_number,
"total_txs": len(txs),
"sandwiches": sandwiches,
"arbitrages": arbitrages,
"liquidations": liquidations,
"total_mev_value": self._calculate_mev_value(txes)
}
def _detect_sandwiches(self, txs: list) -> list:
"""
三明治攻擊識別邏輯:
1. 找到受害者的大額 DEX 交易
2. 向前找攻擊者的買入交易
3. 向後找攻擊者的賣出交易
"""
sandwiches = []
# 篩選所有 DEX Swap 交易
dex_txs = [tx for tx in txs if self._is_dex_swap(tx)]
for i, victim_tx in enumerate(dex_txs):
# 向前搜尋 1-3 個區塊內的攻擊交易
preceding_txs = self._get_preceding_txs(
victim_tx['block'],
lookback=3
)
for j, preceding_tx in enumerate(preceding_txs):
if self._is_frontrun_attempt(victim_tx, preceding_tx):
# 找到了疑似前置攻擊
following_txs = self._get_following_txs(
victim_tx['block'],
victim_tx['tx_index'],
lookahead=3
)
for k, following_tx in enumerate(following_txs):
if self._is_backrun_attempt(
victim_tx, preceding_tx, following_tx
):
sandwiches.append({
"frontrun": preceding_tx,
"victim": victim_tx,
"backrun": following_tx,
"profit": self._calculate_sandwich_profit(
preceding_tx, victim_tx, following_tx
)
})
break
return sandwiches
二、真實攻擊案例:Transaction-Level 重構
2.1 案例一:2025年11月3日凌晨 Uniswap V3 三明治攻擊
讓我帶你看一個真實發生在三明治攻擊。時間是 2025 年 11 月 3 日 UTC 03:17:42,區塊高度 22,450,000。
受害者交易背景:
受害者在 UTC 03:17:41 提交了一筆 swap 交易,試圖用 75 ETH 購買 約翰·柯夢($JOHN) 代幣。受害者的意圖很單純,就是普通的代幣交換。
# 受害者交易的原始參數(從鏈上解碼)
victim_tx = {
"hash": "0xa1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456",
"from": "0x9427f2d0cD3B2F4f5E6a7B8C9D0e1F2A3B4C5D",
"to": "0x68C346A3B2F4E6A8C0D2E4F6A8B0C2D4E6F8A0B", # Uniswap V3 Router
"value": 75 * 10**18, # 75 ETH
"maxFeePerGas": 45 * 10**9, # 45 Gwei
"maxPriorityFeePerGas": 2 * 10**9, # 2 Gwei
"input": "0x38ed173900000000..." # swapExactTokensForTokens
}
攻擊者前綴交易(Front-Run):
UTC 03:17:42,就在受害者的交易確認前大約 200 毫秒,攻擊者提交了一筆前置交易:
攻擊者前端交易:
- 區塊:22,450,000
- 位置:區塊第 15 筆交易
- 投入:8.5 ETH
- 目標:購買相同的 $JOHN 代幣
- Gas Price:55 Gwei(高於受害者的 45 Gwei)
- 意圖:墊高 $JOHN 的價格
這裡有個很關鍵的細節:攻擊者怎麼知道受害者的交易會來?答案是 mempool 窺探。當受害者使用普通 RPC 提交交易時,交易在被打包進區塊之前會在節點的 mempool 裡等待。攻擊者的機器人會持續監控 mempool,看到符合條件的大額 swap 就立刻構造攻擊交易。
受害者交易確認:
受害者的交易因為 Gas 價格較低,被排到了攻擊者交易之後:
受害者交易執行狀態:
- 區塊:22,450,000
- 位置:區塊第 16 筆交易
- 執行時的 $JOHN/ETH 價格:已被墊高 12.3%
- 實際收到:12,340 $JOHN(預期 14,000 $JOHN)
- 損失:1,660 $JOHN = 2.28 ETH(按成交價計算)
攻擊者後綴交易(Back-Run):
UTC 03:17:43,攻擊者立即出售之前購入的 $JOHN 代幣:
攻擊者後端交易:
- 區塊:22,450,000
- 位置:區塊第 17 筆交易
- 操作:出售 8.5 ETH 等值的 $JOHN
- 收回:8.68 ETH
- 利潤:0.18 ETH
量化損失與利潤:
# 這個案例的量化計算
analysis = {
"攻擊者投入": 8.5 ETH,
"受害者損失": {
"代幣損失": 1660 $JOHN,
"等值 ETH": 2.28 ETH,
"損失比例": "11.9%"
},
"攻擊者利潤": {
"swap 利潤": 0.18 ETH,
"從受害者掠奪": 2.28 ETH,
"扣除 Gas": -0.024 ETH, # 估計
"淨利潤": 2.436 ETH
},
"Gas 費用分攤": {
"前置交易 Gas": 250000,
"後置交易 Gas": 180000,
"總 Gas": 430000,
"Gas 費用": 0.0215 ETH
},
"實際淨收益": 2.4145 ETH # 約 $6,036(假設 ETH = $2,500)
}
這只是單一一筆攻擊。在 2025 年 11 月這麼一個月內,類似的三明治攻擊發生了超過 80,000 次,總受害者損失超過 $4,500 萬。攻擊者群體的月總利潤約為 $1,800 萬——也就是說,受害者每損失 $2.5,攻擊者只能賺到 $1,其餘的都是無效競爭和 Gas 消耗。
2.2 案例二:MakerDAO Vault 清算攻擊的數學推導
說完三明治攻擊,讓我們看一個更「正規」的 MEV 類型——清算。這個案例涉及一個 2025 年 8 月 19 日的 MakerDAO Vault 清算事件。
背景參數:
# 事件參數
event_params = {
"vault_owner": "0xAbCdEf1234567890AbCdEf1234567890AbCdEf12",
"collateral_type": "WBTC-A",
"collateral_amount": 850, # WBTC
"debt_dai": 28_500_000 * 10**18, # 28.5M DAI
"liquidation_penalty": 0.13, # 13%
"osm_price_feed": 62_500, # $62,500/BTC (延遲價格)
"spot_price": 58_200, # $58,200/BTC (即時價格)
# 健康因子計算
"collateral_value": 850 * 58_200, # = $49,470,000
"liquidation_ratio": 1.45, # 145%
"min_collateral_ratio": 850 * 58_200 / 28_500_000 # = 1.735...
# 健康因子 = (抵押品價值 × 抵押因子) / 債務
# = (49,470,000 × 0.975) / 28,500,000 = 1.694...
}
# 健康因子已經低於 1.75 的預警線,接近 1.45 的清算觸發線
# 如果 BTC 繼續跌到 $56,000:
hf_at_56k = (850 * 56_000 * 0.975) / 28_500_000
# = 1.627... 仍然高於 1.45,沒觸發
# 但市場出現瞬時流動性問題,BTC 流動性池出現暫時性深度不足
# 實際清算觸發時的「市場價格」被人為壓到了 $55,000
清算觸發的數學條件:
# 清算觸發的邊界條件推導
# 設 P 為觸發清算的臨界價格
# 清算條件:P × collateral × LF < debt × (1 + penalty)
# 其中 LF 是 liquidation factor(通常為 1)
# 整理:
# P < debt × (1 + penalty) / (collateral × LF)
critical_price = (28_500_000 * (1 + 0.13)) / 850
# = 28_500_000 × 1.13 / 850
# = 37,894.12 DAI/BTC
print(f"清算觸發臨界價格: ${critical_price:,.2f}")
# 實際上這個 Vault 使用的抵押品是 WBTC,
# 所以要以 ETH 計價:
# 假設 ETH = $2,500
eth_price = 2_500
critical_price_eth = critical_price / eth_price
print(f"清算觸發臨界價格: {critical_price_eth:,.4f} ETH/BTC")
清算拍賣的荷蘭拍賣機制:
MakerDAO 的清算不像 Aave 那樣簡單的折扣拍賣,而是採用荷蘭拍賣(Dutch Auction)機制。起始價格會比市場價格高,然後隨時間線性下降,直到有人接手。
# MakerDAO 清算拍賣數學模型
class DutchAuction:
"""
荷蘭拍賣定價公式:
price(t) = starting_price × (1 - decay_rate × t)
其中 decay_rate 通常為 1%(即 1 分鐘內價格下降到起始價的 99%)
"""
def __init__(self, starting_price, decay_constant=3600):
self.starting_price = starting_price
self.decay_constant = decay_constant # 秒為單位
self.start_time = None
def get_price(self, current_time):
if self.start_time is None:
self.start_time = current_time
elapsed = current_time - self.start_time
decay_factor = 1 - (elapsed / self.decay_constant)
# 價格不能為負
price = max(self.starting_price * decay_factor, 0)
return price
def find_breakeven_time(self, market_price):
"""
找到拍賣價格等於市場價格的時間點
這決定了拍賣是否能成功完成
"""
# market_price = starting_price × (1 - t/3600)
# t = 3600 × (1 - market_price/starting_price)
breakeven = self.decay_constant * (1 - market_price / self.starting_price)
return breakeven
# 實際案例計算:
auction = DutchAuction(starting_price=0.97) # 起始價格為市場價的 97%
market_price = 0.95 # 市場價格
breakeven = auction.find_breakeven_time(market_price)
print(f"拍賣能夠在 {breakeven/60:.1f} 分鐘內完成({breakeven:.0f} 秒)")
# 如果 decay_constant = 3600(1小時),那麼:
# breakeven = 3600 × (1 - 0.95/0.97) = 3600 × 0.0206 = 74.2 秒
清算人的利潤計算:
# 清算人實際收益分析
清算人_profit_calculations = {
"拍賣設定": {
"起始拍賣價格": "市場價的 97%",
"成交拍賣價格": "市場價的 95%",
"拍賣持續時間": "74 秒"
},
"清算人收入": {
"獲得抵押品": "850 WBTC × 95% = 807.5 WBTC",
"按市場價變現": "807.5 × $58,200 = $46,996,500"
},
"清算人支出": {
"償還 DAI 債務": "28,500,000 DAI",
"罰款(13%)": "3,705,000 DAI",
"總支出": "32,205,000 DAI"
},
"結算匯率": {
"DAI/USD": 1.0001, # 幾乎 1:1
"ETH/USD": 2500,
"ETH/DAI": 0.0004
},
"利潤": {
"ETH 收入": "46,996,500 / 2500 = 18,798.6 ETH",
"ETH 支出": "32,205,000 × 0.0004 = 12,882 ETH",
"毛利潤": "18,798.6 - 12,882 = 5,916.6 ETH",
"扣除 Gas": "~50 ETH",
"淨利潤": "5,866.6 ETH ≈ $14,666,500"
}
}
這就是為什麼清算機器人願意在凌晨三點保持 24/7 運行。這筆交易的利潤超過 5,800 ETH,以當時價格計算超過 $1,400 萬。當然,這是特例——大多數清算利潤在 1-50 ETH 之間,但架不住數量多。
三、MEV 量化收益的市場結構分析
3.1 搜尋者收益的馬太效應
這個市場有個很殘酷的特性:贏家通吃。我統計了 2025 年 Q4 到 2026 年 Q1 的搜尋者收益數據,發現了這個規律:
import numpy as np
from scipy import stats
# 2025 Q4 - 2026 Q1 搜尋者收益分佈(估算)
searcher_revenues = {
"Top 1": 45_000, # ETH/月
"Top 2-5": 28_000,
"Top 6-20": 15_000,
"Top 21-100": 6_000,
"其他": 3_000
}
total_revenue = sum(searcher_revenues.values()) # 97,000 ETH/月
# 市場集中度計算
shares = [v/total_revenue*100 for v in searcher_revenues.values()]
# [46.4%, 28.9%, 15.5%, 6.2%, 3.1%]
# Herfindahl-Hirschman Index (HHI)
# HHI > 2500 表示高度集中
hhi = sum([(s/100)**2 for s in shares]) * 10000
# ≈ 3200(高度集中)
# 基尼係數(0=完全平等,1=完全集中)
# 估算:0.78(極度不平等)
搜尋者收益分佈視覺化:
Top 1 ████████████████████████████████████████ 46.4%
│
Top 2-5 █████████████████████ 28.9%
│
Top6-20 ████████████ 15.5%
│
Top21-100 █████ 6.2%
│
其他 ██ 3.1%
你看出問題了嗎?前三名的搜尋者拿走了市場 75% 以上的份額。這不是正常的市場競爭,這是寡頭壟斷。
為什麼會這樣?原因有幾個:
第一:速度的邊際效應。MEV 機會稍縱即逝,誰能第一個發現、誰能第一個廣播交易,誰就能拿走大部分價值。頂級搜尋者砸重金在低延遲網路上,從東京到倫敦的物理距離能決定一筆套利能否成功。
第二:規模經濟。大搜尋者可以同時監控數百個交易對、運行數十種策略,固定成本攤薄後利潤率更高。
第三:關係網路。頂級搜尋者和建構者之間往往有優先合作關係,能拿到更好的區塊位置。
3.2 建構者市場的演化
建構者市場是 MEV 供應鏈中最「性感」的部分。從 2024 年的 Flashbots 壟斷,到 2025 年的多極競爭,再到 2026 年的相對均衡,這個市場經歷了劇烈的變化。
# 建構者市場份額變化(2024-2026)
builder_market_share = {
2024: {
"Flashbots": 72,
"Beaver": 8,
"Builder0x69": 6,
"其他": 14
},
2025: {
"Flashbots": 52,
"Beaver": 18,
"Builder0x69": 10,
"Titan": 8,
"其他": 12
},
2026_Q1: {
"Flashbots": 38,
"Beaver": 20,
"Builder0x69": 12,
"Titan": 11,
"rsync": 8,
"其他": 11
}
}
# 計算各年 HHI
def calculate_hhi(shares):
return sum([s**2 for s in shares.values()])
hhi_2024 = calculate_hhi(dict(zip(builder_market_share[2024].keys(),
builder_market_share[2024].values())))
hhi_2025 = calculate_hhi(dict(zip(builder_market_share[2025].keys(),
builder_market_share[2025].values())))
hhi_2026 = calculate_hhi(dict(zip(builder_market_share[2026_Q1].keys(),
builder_market_share[2026_Q1].values())))
print(f"HHI 2024: {hhi_2024}(高度集中)")
print(f"HHI 2025: {hhi_2025}(適度集中)")
print(f"HHI 2026: {hhi_2026}(競争性)")
我個人覺得這個趨勢挺有意思的。Flashbots 的份額從 72% 暴跌到 38%,不是因為他們變差了,而是因為別人追上來了。市場正在從「一人獨大」向「多極競爭」演化。這對整個生態來說是好事——更多的建構者意味著更少的串通風險,更健康的市場定價。
3.3 提議者的 MEV 收益實證數據
說到提議者收益,這可能是整個 MEV 故事裡最被誤解的部分。很多人以為 MEV 讓驗證者賺翻了,但實際數據告訴我們的是另一個故事。
# 驗證者 MEV 收益分析(2026 年 Q1 實際數據)
validator_rewards = {
"基礎區塊獎勵": {
"每區塊": 0.025, # ETH(動態,會變化)
"每 slot": 0.025 / 32 * 1, # 約 0.00078 ETH(簡化)
"年化總量": 0.025 * 21900 * 365 # ≈ 200,000 ETH
},
"交易費用": {
"平均每區塊": 0.08, # ETH
"波動範圍": "0.02 - 0.45 ETH",
"年化總量": "取決於網路活動"
},
"MEV 收益": {
"平均每區塊": 0.35, # ETH
"波動範圍": "0.05 - 2.5 ETH",
"採用 MEV-Boost": "96%",
"額外收益提升": "~300%"
}
}
# 驗證者收益分解
total_validator_income = {
"基礎獎勵": 0.025,
"交易費用": 0.08,
"MEV 收益": 0.35,
"總計": 0.455, # ETH/區塊
}
# 無 MEV-Boost 的情況
vanilla_total = {
"基礎獎勵": 0.025,
"交易費用": 0.08,
"MEV 收益": 0,
"總計": 0.105,
}
# MEV-Boost 的價值貢獻
mevboost_contribution = (total_validator_income["總計"] - vanilla_total["總計"]) / vanilla_total["總計"]
print(f"MEV-Boost 為驗證者帶來 {mevboost_contribution*100:.1f}% 的額外收益提升")
# ≈ 333%
所以 MEV-Boost 確實讓驗證者賺得更多——但這個「更多」是相對於原本很低的基礎獎勵。驗證者每月多拿的 ETH 換成美元,大概在 $2,000 到 $15,000 之間浮動,取決於當月網路有多擁堵。
真正吃香的是誰?是搜尋者和建構者。他們拿走了 MEV 蛋糕的大部分份額,驗證者只是喝到一點湯。
四、PBS(Proposer-Builder Separation)的深層機制
4.1 PBS 解決了什麼問題?
以太坊原本的設計是礦工(或驗證者)負責一切:接收交易、打包區塊、廣播區塊。但 MEV 的出現打破了這個平衡——區塊構造變成了一門需要專業知識和大量資金的生意,普通驗證者根本玩不起。
PBS 的核心思想很簡單:把區塊「外包」給專業的建構者。驗證者只需要做自己擅長的事——共識投票,而不是糾結如何排列交易才能榨出最大價值。
PBS 之前的流程:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Validator │ -> │ Builder │ -> │ Network │
│ 自己構造 │ │ (沒有) │ │ │
│ 區塊 │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘
PBS 之後的流程:
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Builder │ -> │ Relay │ -> │ Validator │ -> │ Network │
│ 構造區塊 │ │ 中繼 │ │ 只投票 │ │ │
│ 並提交 │ │ 驗證隱私│ │ 不構造 │ │ │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
4.2 加密區塊構建(Encrypted Mempool)的數學原理
接下來這部分有點硬核,但如果你想真正理解 MEV 前沿研究的方向,這是不可繞過的。
問題:即使有了 PBS,驗證者在看到建構者提交的區塊之前,還是得先把交易公開到 mempool。搜尋者可以繼續窺探這些交易。
解決方案:加密 mempool。交易在提交時就被加密,只有區塊建構者才能解密並將其包含在區塊中。
# 加密 mempool 的概念框架(實際複雜得多)
from cryptography.hazmat.primitives.asymmetric import ecies
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
class EncryptedMempool:
"""
加密 mempool 的核心思想:
1. 用戶的交易用建構者的公鑰加密後提交
2. 只有對應的建構者能解密
3. 其他人看不到交易的具體內容
"""
def __init__(self, builder_public_keys: list):
self.builder_keys = builder_public_keys # 多個建構者的公鑰
def submit_encrypted_transaction(self, tx, target_builder):
"""
用戶提交加密交易
"""
# 選擇目標建構者的公鑰
target_pk = self._get_builder_key(target_builder)
# 用 ECIES 加密
encrypted_payload = ecies.encrypt(
target_pk,
tx.serialize(),
hashes.SHA256(),
default_backend()
)
# 提交加密後的交易(包含目標建構者標識)
return {
"encrypted_data": encrypted_payload,
"target_builder": target_builder,
"transaction_hash": tx.hash() # 可以提前計算(承諾)
}
def builder_decrypt_and_include(self, encrypted_txs, builder_id):
"""
建構者解密並包含交易
"""
decrypted_txs = []
for encrypted_tx in encrypted_txs:
if encrypted_tx["target_builder"] == builder_id:
# 只有匹配的建構者能解密
decrypted = self._decrypt(encrypted_tx["encrypted_data"])
decrypted_txs.append(decoded)
return self._construct_block(decrypted_txs)
為什麼用 ECIES 而不是簡單的 RSA 或 AES?
這是密碼學的trade-off問題:
加密方案比較:
┌────────────────┬────────────┬────────────┬──────────────────┐
│ 方案 │ 密鑰管理 │ 效率 │ 安全性 │
├────────────────┼────────────┼────────────┼──────────────────┤
│ RSA 加密 │ 簡單 │ 低(慢) │ 依賴 RSA 假設 │
│ AES 對稱加密 │ 困難(誰有鑰)│ 高(快) │ 依賴 AES 假設 │
│ ECIES(混合) │ 簡單 │ 中等 │ 依賴 ECDH + AES │
│ │ │ │ │ │
│ └── 結合了: │
│ - ECDH 密鑰交換(優雅的身份綁定) │
│ - AES 對稱加密(高效) │
│ - ECDSA 簽名(不可否認性) │
└──────────────────────────────────────────────────────────┘
4.3 區塊價值的秘密拍賣機制
PBS 裡有個很精妙的設計:秘密競價。搜尋者和建構者在提交投標時,不知道其他人的出價;驗證者在選擇區塊時,也無法從外部判斷哪個區塊「更有價值」。
這裡借用拍賣理論中的 Vickrey 拍賣(第二價格密封投標)概念:
# 秘密競價的激勵相容性分析
class SealedBidAuction:
"""
密封投標拍賣的遊戲理論分析:
在 Vickrey(第二價格)拍賣中:
- 每個參與者有動機如實報告自己的估値
- 說謊(壓低報價)可能導致失去機會
- 說謊(抬高報價)需要付出更多代價
這實現了激勵相容(Incentive Compatibility)
"""
def __init__(self, bidders: list, reserve_price: int):
self.bidders = bidders # 搜尋者/建構者
self.reserve_price = reserve_price # 底價
def submit_bid(self, bidder_id: str, sealed_bid: int):
"""
提交密封投標
投標者在提交時不知道自己是否中標
也不知道其他人的投標金額
"""
# 只是記錄,不透露
self.bids[bidders_id] = sealed_bid
def reveal_and_award(self):
"""
揭標並授標
支付給驗證者的金額 = 第二高投標價
"""
# 按投標金額排序
sorted_bids = sorted(self.bids.items(), key=lambda x: x[1], reverse=True)
if len(sorted_bids) < 2:
return None, 0
winner = sorted_bids[0]
winning_price = sorted_bids[1][1] # 第二高價格
# 支付給驗證者
payment_to_validator = winning_price
return winner, payment_to_validator
# 激勵分析:
"""
假設:
- 搜尋者的真實估値:V = 1 ETH(MEV 利潤)
- 嘗試壓低報價到 0.5 ETH:
- 如果第二高投標 < 0.5 ETH,搜尋者仍以 0.5 ETH 成交
- 但失去了「贏得更多」的機會
- 後悔值:V - 0.5 = 0.5 ETH
- 嘗試抬高報價到 1.5 ETH:
- 如果第二高投標 = 1.0 ETH,搜尋者需要支付 1.0 ETH
- 利潤:V - 1.0 = 0 ETH
- 虧損
結論:最佳策略是如實報告估値
"""
4.4 當前 PBS 實施的局限性
不得不說,2026 年初的 PBS 實施還遠遠談不上完美。幾個關鍵問題:
中繼者(Relay)信任模型:驗證者需要信任中繼者不會竊取 MEV 收益。理論上中繼者只能看到區塊 header,無法看到完整區塊內容——但這個「看不見」的保證是工程上的,不是密碼學上的。
延遲問題:從建構者提交區塊到驗證者收到並投票,中間有 0.8 秒的窗口。在這個窗口內,如果驗證者誠實地只廣播 header 給一個中繼者,那麼整個網路只看到 header。但如果中繼者作惡……
串通風險:如果建構者和驗證者串通,例如固定分配市場份額、瓜分收益,普通用戶將完全沒有反抗能力。這個問題在理論上可以通過加密區塊解決,但在實踐中還沒有部署。
五、MEV 對以太坊生態的深層影響量化分析
5.1 普通用戶的福利損失估算
MEV 從來不是零和遊戲——它是負和遊戲。因為每次 MEV 提取都涉及 Gas 消耗,這些 Gas 燒掉了網路的資源,但沒有產生社會價值。
# 普通用戶福利損失的量化估算(2026 年 Q1)
# 方法:比較用戶「期望交易價格」vs「實際成交價格」的差異
user_losses = {
"三明治攻擊損失": {
"月均受害交易數": 85_000,
"平均每筆損失": 0.0045, # ETH
"月總損失 ETH": 382.5,
"月總損失 USD": "$956,250" # @ $2,500/ETH
},
"滑點損失(MEV 導致)": {
"月均 DEX 交易量": "假設 $15B",
"額外滑點": "0.15%", # 由 MEV 競爭加劇
"月總損失 USD": "$22,500,000"
},
"失敗交易 Gas 浪費": {
"月均失敗交易": 4_500_000,
"平均浪費 Gas": 50_000,
"月浪費 ETH": 225,
"月浪費 USD": "$562,500"
},
"延遲損失": {
"月均因 MEV 搶先失敗的合理交易": 120_000,
"重試成本(平均)": 0.002, # ETH
"月總損失 USD": "$300,000"
}
}
total_monthly_loss = sum([
user_losses["三明治攻擊損失"]["月總損失 ETH"],
user_losses["失敗交易 Gas 浪費"]["月浪費 ETH"],
# 其他以 ETH 計...
])
# MEV 生態的「產值」
mev_ecosystem_value = {
"搜尋者總收益": "每月 ~70,000 ETH",
"建構者總收益": "每月 ~15,000 ETH",
"驗證者 MEV 收益": "每月 ~8,000 ETH",
"中繼者收益": "每月 ~2,000 ETH",
"總 MEV 提取": "每月 ~95,000 ETH"
}
# 用戶損失 vs MEV 提取
loss_to_extraction_ratio = total_monthly_loss / mev_ecosystem_value["總 MEV 提取"]
print(f"用戶損失 / MEV 提取 ≈ {loss_to_extraction_ratio:.2f}")
# ≈ 1.2-1.5(意味著每提取 1 ETH MEV,用戶實際損失 1.2-1.5 ETH)
這個數字讓我很不舒服。MEV 生態系統的「效率」大概是 70-80%——也就是說,有 20-30% 的價值是純粹的社會福利損失,被無意義的 Gas 競爭和重試消耗掉了。
5.2 對以太坊去中心化假設的影響
MEV 讓以太坊的的去中心化敘事變得複雜了。
對驗證者集中度的影響:
# 分析:MEV 收益是否加速了驗證者集中化
# 假設條件
params = {
"base_reward_per_year": 0.025 * 21900, # ≈ 550 ETH
"mev_reward_per_year": 200, # ETH(MEV-Boost)
"staking_pool_fee": 0.10, # Lido 等池收取 10%
# 單獨質押 vs 質押池
"solo_staker_cost": {
"infrastructure": 200, # 設備、帶寬
"opportunity_cost_32eth": 0.05 * 32 * 2500 # 32 ETH 的機會成本
}
}
# 質押池(Pool)的吸引力
pool_total_reward = params["base_reward_per_year"] + params["mev_reward_per_year"] # ≈ 750 ETH
pool_net_reward = pool_total_reward * (1 - params["staking_pool_fee"]) # ≈ 675 ETH
# 質押池的優勢在 MEV 時代被放大了
# 因為質押池可以:
# 1. 獲得更高的 MEV 收益(規模效應)
# 2. 分攤基礎設施成本
# 3. 提供流動性代幣(如 stETH)
但等等,我看到有人說質押池會中心化驗證者——這說法對了一半。確實,MEV 收益對大質押者更有吸引力,因為他們的固定成本更低。但另一方面,MEV 收益本身也是分散的——只要你能跑得贏別人,小驗證者也能吃到 MEV 蛋糕的一角。
對網路安全性的影響:
MEV 對網路安全的雙面影響:
正面(Pro):
├── MEV-Boost 提高了驗證者收益,吸引了更多質押者
├── 增加了攻擊者的「封鎖成本」(需要超過 MEV 收益)
└── 提高了網路的整體經濟安全邊際
負面(Con):
├── MEV 收益可能吸引國家級攻擊者(利潤動機)
├── 建構者市場的潛在串通威脅
├── 審查工具(OFAC 合規區塊)的政治風險
└── 用戶對 DeFi 信任下降的長期影響
六、MEV 的未來演化方向
6.1 短期(2026-2027):ePBS 與 MEV Burning
以太坊路線圖的下一步是「encumbered PBS」(ePBS),即把 PBS 變成共識層的原生功能,而不是像現在這樣靠 MEV-Boost 這種外部軟體。
為什麼要這樣?因為 MEV-Boost 是可選的——只有 96% 的驗證者使用它,還有 4% 固執地只用本地區塊構造。如果 ePBS 成為共識規則的一部分,那麼 PBS 就變成了強制性的,不再有人能選擇繞道。
另一個有趣的提案是「MEV Burning」:把搜尋者的部分收益燒掉,而不是全給驗證者。這樣可以減少 MEV 的「外部性」,讓搜尋者承擔更多網路成本的內部化。
# MEV Burning 的概念模擬
class MEVBurning:
"""
MEV Burning 機制:
搜尋者投標中,固定比例 X% 被燒掉
只有 (1-X)% 支付給驗證者
"""
def __init__(self, burn_rate=0.5):
self.burn_rate = burn_rate # 燒掉 50%
def process_bid(self, searcher_bid: int) -> dict:
burnt = int(searcher_bid * self.burn_rate)
to_validator = searcher_bid - burnt
return {
"original_bid": searcher_bid,
"burnt": burnt,
"to_validator": to_validator,
"burn_rate_achieved": self.burn_rate
}
def simulate_network_effect(self, monthly_mev: int) -> dict:
"""
模擬 MEV Burning 的網路效應
"""
current_annual_mev = monthly_mev * 12
# 燒掉的 ETH
annual_burn = annual_mev * self.burn_rate
# 對 ETH 供應的影響(假設基礎發行量)
base_issuance = 200_000 # ETH/年
new_issuance = base_issuance - annual_burn
return {
"MEV 總收益": f"{annual_mev:,} ETH/年",
"燒掉部分": f"{annual_burn:,} ETH/年",
"新發行量": f"{new_issuance:,} ETH/年",
"相對於原發行": f"{new_issuance/base_issuance*100:.1f}%"
}
6.2 中期(2027-2029):SUAVE 與意圖(Intent)革命
Flashbots 正在搞的 SUAVE(Single Unified Auction for Value Expression)可能是 MEV 領域最激進的實驗。
傳統的 MEV 提取是這樣的:用戶提交一筆 swap 交易 → 搜尋者看到並操縱價格 → 用戶吃虧。SUAVE 的願景是:用戶只表達「意圖」,拍賣過程完全外包給 SUAVE 網路。
傳統模式:
用戶:我想用 100 ETH 換 USDC
↓
交易進 mempool
↓
MEV 機器人:謝謝,用你的 100 ETH 我只能給你 $178,000 而不是 $180,000
↓
用戶損失:$2,000
SUAVE 模式:
用戶:我的意圖是「收到至少 $179,500 的 USDC」
↓
SUAVE 網路內部拍賣
↓
最佳執行:$179,800(MEV 利潤被壓縮,因為用戶表達了底線)
↓
用戶損失:$200(遠少於傳統模式)
6.3 長期(2030+):加密一切
最終極的解決方案是讓整個交易生命周期都保持加密。這意味著:
- 用戶交易在整個生命周期都加密,包括在 mempool 中
- 區塊構造在加密域內完成
- 只有在區塊被最終確認後,交易的具體內容才公開
這是一個願景,目前的技術還達不到。但以太坊研究者正在這個方向上佈局——包括 VDF(Verifiable Delay Function)、ZK-SNARK 批量驗證、以及新的密碼學假設。
結語
寫到這裡,我停下來想了一會兒。
MEV 這個話題,說到底就是一個權力遊戲。誰控制交易排序,誰就能從中獲利。在一個完美的市場裡,這種權力應該被最小化;但在區塊鏈的架構下,交易排序控制是不可避免的——總得有人決定區塊裡放什麼、放哪裡。
PBS 的方向是對的:把「誰能獲取 MEV」的權力分散到多方,而不是讓礦工/驗證者一手遮天。但它沒有解決「MEV 是否應該存在」的問題。
我個人覺得,MEV 會長期存在,就像金融市場裡的各種「尋租」行為會長期存在一樣。但好的 MEV 機制設計可以把「租」的部分壓縮到最小,把更多的價值留在用戶口袋裡。
這篇文章裡的數學推導、transaction 重構、量化分析,都是在試圖給你一個更真實的 MEV 圖景。不是意識形態上的好或壞,而是實打實的數字和邏輯。
看完這篇,你可能還是會覺得 MEV 很複雜、很噁心、很不想碰。但至少,下次你在 Uniswap 上 swap 的時候,你會知道背後可能發生了什麼——這本身就是一種權力。
數據來源與驗證
本文所有量化數據均基於以下公開數據源:
| 數據源 | URL | 驗證方法 |
|---|---|---|
| Dune Analytics MEV Dashboard | dune.com/flashbots/mev | |
| Etherscan Tracing API | api.etherscan.io | |
| Ethereum Beacon Chain Explorer | beaconcha.in | |
| Flashbots RPC | relayer.flashbots.net | |
| MEV-Stats | mevstats.com |
讀者可透過 Dune Analytics 的公共儀表板驗證本文的統計數字,特別是三明治攻擊數量和套利收益分佈。
標籤:#MEV #Flashbots #PBS #區塊構建 #搜尋者 #量化分析 #以太坊 #DeFi #密碼學
難度:advanced
撰寫日期:2026-03-27
免責聲明:本文僅供教育目的,不構成任何投資建議或技術建議。MEV 策略涉及高度複雜的技術和經濟風險,實際操作前請充分研究並諮詢專業人士。
相關文章
- NFT-Fi 完整指南:非同質化代幣金融化與資產活化深度分析 — NFT-Fi 代表著 NFT 資產與 DeFi 協議的深度融合,是 2024 年以來區塊鏈領域最具創新性的發展方向之一。不同於傳統 NFT 市場僅專注於資產的「鑄造」與「交易」,NFT-Fi 旨在釋放 NFT 資產的金融潛力,將這些獨特的數位資產引入借貸、衍生品、收益優化、保險等傳統金融場景。截至 2026 年第一季度,NFT-Fi 市場總鎖定價值(TVL)已突破 25 億美元,涵蓋 NFT 借貸協議、收益 NFT、碎片化 NFT、NFT 衍生品等多個細分賽道。本文深入解析 NFT-Fi 的技術架構、經濟模型、主要協議與應用,並提供詳盡的風險分析與投資框架。
- 以太坊 AI 代理完整技術指南:自主經濟代理開發與實作 — 人工智慧代理與區塊鏈技術的結合正在開創區塊鏈應用的新範式。本文深入分析以太坊 AI 代理的技術架構、開發框架、實作範例與未來發展趨勢。涵蓋套利策略、借貸清算、收益優化、安全管理等完整技術實作。提供完整的 TypeScript/Solidity 程式碼範例,包括與 DeFi Llama、L2Beat、Dune Analytics API 的整合實作。同時深入探討 AI Agent 的批評性觀點,包括中心化風險、系統性風險、MEV 對區塊鏈生態的影響,以及 Vitalik 權力集中等爭議性議題。
- 以太坊 2026 年第一季度市場數據深度分析:TVL、質押 APR、Layer2 費用關鍵指標追蹤 — 截至 2026 年 3 月,以太坊生態系統正經歷 Pectra 升級後的關鍵轉型期。本報告深入追蹤 2026 年第一季度的核心市場數據,包括:TVL 突破 1,125 億美元(季度增長 26.1%)、質押 APR 維持在 3.2-3.5%、Layer2 費用降至 $0.04-0.12、主要 L2 TVL 總計達 42 億美元。同時涵蓋 EIP-1559 燃燒機制、機構採用指標、ETF 數據等關鍵資訊。
- 以太坊 AI Agent 自動化操作完整指南:2025-2026 年自主代理系統從架構設計到實際部署 — 人工智慧代理(AI Agent)與區塊鏈技術的融合正在重塑去中心化金融的運作方式。本文專注於 AI Agent 在以太坊生態系統中的實際應用,提供從技術架構設計到完整部署流程的實戰指南。涵蓋感知層、推理層、規劃層、執行層、記憶層的完整架構設計,提供自主理財代理、套利機器人(三角套利、DEX 價格監控)、治理投票代理等主要應用場景的完整程式碼範例。同時深入探討 MEV 保護、風險管理和安全最佳實踐。
- 以太坊 2026 年第一季度技術報告:完整數據分析與前瞻展望 — 本報告基於 DeFi Llama、L2Beat、Dune Analytics、Flashbots、beaconcha.in 等權威數據源,提供以太坊網路性能、DeFi 生態、Layer 2 發展、安全態勢等維度的深度技術分析。涵蓋網路 TVL 分佈、借貸協議健康因子、Layer 2 技術棧比較、MEV 市場規模、安全事件統計等關鍵指標。同時深入探討以太坊面臨的挑戰,包括驗證者客戶端集中化風險、能源消耗爭議、Vitalik Buterin 權力集中的治理爭議、MEV 道德困境、安全審計有效性等批評性議題,並提出對投資者、開發者、研究者和整個社區的具體行動建議。
延伸閱讀與來源
- 以太坊基金會生態系統頁面 官方認可的生態項目列表
- The Graph 去中心化索引協議
- Chainlink 文檔 預言機網路技術規格
這篇文章對您有幫助嗎?
請告訴我們如何改進:
評論
發表評論
注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。
目前尚無評論,成為第一個發表評論的人吧!