web3-基于貝爾曼福特算法(Bellman-Ford )與 SMT 的 Web3 DeFi 套利策略研究
如何找到Defi中的交易機會
把defi看做是一個完全開放的金融產品圖表,可以看到所有的一切東西;我們要沿著這些金融圖表找到一些最優的路徑,就有可能會發現一些有利可圖的機會。這些有利可圖的機會對于項目方來說可能是一種攻擊
如何在Defi中發現套利或者獲利的機會
- 貝爾曼福特算法Bellman Ford Algorithm
- 負循環檢測(Negative cycle detection)
- 適用于多個市場
- 在傳統金融和DeFi中都被廣泛使用
- 定理求解器(SMT)
- 需要對defi模型編碼
- 可能需要一些啟發式算法(heuristic)來進行路徑修剪(path pruning)
DeFiPoser-ARB和DeFiPoser-SMT
- DeFiPoser-ARB
- 建立defi市場圖標
- 檢測負周期
- Bellman Ford-Moore 算法
- DeFiPoser-SMT
- 狀態轉換模型
- 修剪搜索空間
- 定理證明者
📌 圖解說明:
這張圖其實是貨幣兌換套利問題的一個例子,常用貝爾曼-福特算法來檢測是否存在套利機會(即經過一圈兌換后,能賺到錢,兌換前后資產數量增加)。
📌 圖中元素含義:
- 紅、黃、綠、藍的小房子 代表四個不同貨幣交易市場。
- 每個房子標記了匯率:
- A B = p 1 \frac{A}{B}=p_1 BA?=p1?
- B C = p 2 \frac{B}{C}=p_2 CB?=p2?
- C A = p 3 \frac{C}{A}=p_3 AC?=p3?
- B A = p 4 \frac{B}{A}=p_4 AB?=p4?
- 箭頭代表交易路徑,箭頭上的公式是交易后的資產數量。
- 初始帶著 1×A,嘗試通過不同路徑回來,看是否能變成大于1×A。
📌 中間兩張圖講了兩種套利路徑:
?? 中間圖(路徑一):
從 A → B → A
利潤條件是:
p 1 × p 4 > 1 p_1 \times p_4 > 1 p1?×p4?>1
即:如果你先把 A 換成 B,再把 B 換回 A,資產增值了,就存在套利。
?? 右邊圖(路徑二):
從 A → B → C → A
利潤條件是:
p 1 × p 2 × p 3 > 1 p_1 \times p_2 \times p_3 > 1 p1?×p2?×p3?>1
同理,如果沿這個路徑資產增值了,就存在套利。
📌 這和貝爾曼-福特算法的關系:
貝爾曼-福特算法原本用來在帶權圖中找最短路徑,也能用來檢測負權環。
在套利問題中:
- 我們把匯率取對數(通常是 log ? ( 匯率 ) \log(\text{匯率}) log(匯率)),然后取相反數,變成權值。
- 如果存在一條回路,回到起點,路徑和小于0,說明存在套利機會。
📌 算法步驟:
- 初始化每個點到起點的距離。
- 對所有邊松弛 (Relax) N-1 次。
- 再執行一次松弛,如果還能更新,說明存在負權環(即套利機會)。
這張圖就是用交易路徑的方式形象化表示套利路徑和條件,而檢測這些路徑是否滿足套利條件,就是貝爾曼-福特算法擅長的事情。
貨幣套利問題 和 貝爾曼-福特算法 的應用場景
📌 左邊這張圖:
是一個帶權有向圖,每個節點代表一個貨幣,每條有向邊代表匯率交易。
- A → B A \rightarrow B A→B 的權值是 ? log ? p 1 -\log p_1 ?logp1?
- B → C B \rightarrow C B→C 的權值是 ? log ? p 2 -\log p_2 ?logp2?
- C → A C \rightarrow A C→A 的權值是 ? log ? p 3 -\log p_3 ?logp3?
為什么用 ? log ? p -\log p ?logp 呢?
- 因為原本套利條件是:
p 1 × p 2 × p 3 > 1 p_1 \times p_2 \times p_3 > 1 p1?×p2?×p3?>1
兩邊取對數:
log ? ( p 1 × p 2 × p 3 ) > 0 \log(p_1 \times p_2 \times p_3) > 0 log(p1?×p2?×p3?)>0
轉化成:
log ? p 1 + log ? p 2 + log ? p 3 > 0 \log p_1 + \log p_2 + \log p_3 > 0 logp1?+logp2?+logp3?>0
再乘個 ? 1 -1 ?1:
? ( log ? p 1 + log ? p 2 + log ? p 3 ) < 0 -(\log p_1 + \log p_2 + \log p_3) < 0 ?(logp1?+logp2?+logp3?)<0
📌 中間部分:
把套利條件轉化為:
( ? log ? p 1 ) + ( ? log ? p 2 ) + ( ? log ? p 3 ) < 0 (-\log p_1) + (-\log p_2) + (-\log p_3) < 0 (?logp1?)+(?logp2?)+(?logp3?)<0
意思是:
如果圖中存在一個環,環上的邊權之和 < 0,說明存在套利機會。
📌 右上角小公式:
總結了一下這件事:
- 如果:
∏ p i > 1 \prod p_i > 1 ∏pi?>1
等價于:
∑ ( ? log ? p i ) < 0 \sum (-\log p_i) < 0 ∑(?logpi?)<0
📌 右下角框:
說明解決這個問題的方法:
- 使用 Bellman-Ford-Moore 算法
- 時間復雜度:
O ( ∣ N ∣ 2 ? ∣ E ∣ ) O(|N|^2 \cdot |E|) O(∣N∣2?∣E∣)
(其實一般 Bellman-Ford 是 O ( N ? E ) O(N \cdot E) O(N?E),這里寫成 ∣ N ∣ 2 ? ∣ E ∣ |N|^2 \cdot |E| ∣N∣2?∣E∣ 可能是指對所有頂點多輪松弛或特殊實現)
這張圖其實講了一個套利檢測的問題:
- 匯率相乘 > 1 就是套利。
- 用 ? log ? -\log ?log 把乘法變加法。
- 看圖中是否存在負環。
- 用Bellman-Ford算法檢測負環。
DeFiPoser-SMT
DeFiPoser 評估
- 96筆在Uniswap,Bancor和Marker DAO上的操作,總共覆蓋了25種資產
- Block910000(Dec-13-2019)到10050000(May-12-2020)
- 通過具體執行來進行驗證
貝爾曼福特算法 VS SMT
總結
本文研究了基于貝爾曼-福特算法和SMT求解器的DeFi套利策略。將DeFi市場建模為金融產品圖,利用貝爾曼-福特算法檢測負權環(套利機會),并通過SMT對DeFi模型編碼進行路徑優化。研究提出兩種方法:DeFiPoser-ARB建立市場圖并檢測負周期,DeFiPoser-SMT采用狀態轉換模型進行空間修剪。實驗驗證了該策略在Uniswap等平臺的有效性,比較了兩種算法在檢測套利路徑時的性能差異。該研究為DeFi領域的套利檢測提供了量化分析框架。