Front Running:​去中心化交易的阿喀琉斯之踵
Winkrypto
2020-02-26 12:37
本文约4095字,阅读全文需要约16分钟
Front Running 是DEX 面臨的普遍問題,也是阻礙DEX 成為主流選擇的重要原因。

編者按:本文來自鏈聞(ID:chainnewscom)編者按:本文來自

鏈聞(ID:chainnewscom)

編者按:本文來自

鏈聞(ID:chainnewscom)

編者按:本文來自

鏈聞(ID:chainnewscom)

圖片描述

在《明日邊緣》中,人類的各種戰術對於入侵的外星人都是無效的,因為一旦這種戰術生效,外星人在被幹掉後就會把時間倒回到戰役發生前,整個過程重來一遍。在這個新的時間中,外星人知道什麼將會發生,當然也就知道怎麼應對。

《明日邊緣》宣傳語:生死輪迴

在區塊鏈中,也有人知道什麼將會發生。他們不僅知道未來會發生的事情,他們還可以像《明日邊緣》中的外星人一樣,利用這種信息去行動,以生成一種對自己有利的未來。

圖片描述

這一切從何說起?就從最近風口浪尖的閃電貸事件開始。

閃電貸事件始末

  1. 圖片描述

  2. 閃電貸事件中黑客賺錢的方法與你我的方法無異:低點買,高點賣。唯一不同的是黑客知道低點在哪兒、高點在哪兒。他為什麼知道?因為馬上要把價格拉升起來的人正是他自己。

一個僅用於說明原理的模擬攻擊過程是這樣的:通過dYdX 的閃貸功能藉入60 ETH,然後在Compound 抵押40 ETH 借出1 BTC,再用剩下的20 ETH 在bZx 加5 倍槓桿買入BTC,此槓桿交易的流動性由Uniswap 提供,導致Uniswap 上BTC 對ETH 的價格猛漲,這時候再把1 BTC 賣給Uniswap,假設平均賣價漲了一倍,就能賣出80 ETH,還掉最初借的60 ETH,盈利20 ETH。 (真實過程可閱讀文末的參考資料1、2)

圖自CryptoLaboratory

可以認為黑客有兩個分身,分身一拉盤(20 ETH × 5 = 100 ETH),分身二獲利(40 ETH),在這個過程中,分身二賺的錢以及Uniswap 做市商賺的錢加起來應該等於分身一虧的錢,也就是說總體算下來,黑客是賠錢的,但由於bZx 存在合約漏洞,沒有及時爆分身一的倉,導致bZx 的儲戶也一起承擔了虧損,而這正是黑客攻擊可以成立的原因。閃電貸在整起事件中的作用只是提供初始資金,使得黑客可以無成本、零風險完成攻擊。

在傳統金融市場中,這種行為屬於Front Running (搶先交易)。 Front Running 是指:如果從非公開信息中預先知道會影響到資產價格的大型交易,就可以搶先買賣以獲得利潤。

二級標題

它主要包含兩種情況:

經紀商在自己發表的研究報告尚未廣為散播之前,先行買賣股票的行為。

二級標題

在鏈上的去中心化交易市場中,Front Running 與上述的第一種情況比較類似,是在得知對方的購買意圖後,搶先完成自己的交易。這種行為在傳統金融市場中是違法的,因為利用的是非公開信息,但在區塊鏈上很難認定它違法,因為其利用的是「公開」信息。

由於區塊鏈時間的特殊性,區塊鏈上的未來是可以在發生前被「看見」的,也就是說,我們在一筆交易發生之前便知道這筆交易會發生,就像執行客戶買賣委託的交易商知道買賣會發生一樣。

區塊鏈的時間特殊性

區塊鍊是一個分佈式的系統,其最大的問題之一是參與者無法就物理時間達成共識。但為了確定交易順序從而避免雙花,網絡參與者們對時間達成共識又非常重要,因此中本聰把工作量證明與最長鏈原則結合在一起,實現時間戳服務:用區塊的先後順序代表時間的先後順序,參與者們只需對區塊順序達成一致即可。可以認為區塊是區塊鏈上的基本時間單位。

那麼,如何把一筆交易的分秒時間單位轉換成區塊時間單位?

不難發現,交易要先在物理時間發生,然後在交易池中等待,最後在區塊鏈上發生。這個不確定的等待過程會導致交易意圖暴露,使得Front Running 很容易發生。

除了礦工,我們每個人也都可以看到交易意圖。因為交易是先被廣播到網絡,然後進入交易池的,而所有人都可以去監聽交易廣播。對於DEX 上的交易者、交易機器人而言,只需要監控DEX 上的交易情況,在發現交易意圖後,通過提高交易費的方法讓自己的交易排在前邊,從而完成Front Running,實現無風險盈利。

但Front Running 顯然是不公平的,它破壞了正常交易者的交易策略、損害了他們的交易利益。一個不准確但可以說明問題的例子:你計劃從市場購買100ETH,可能的平均價格是270 美元/ETH;但交易機器人發現你的交易意圖後搶先買入,它是以270 美元/ETH 價格買的,而你可能就要以拉升後的280 美元/ETH 的價格買,多花費1000 美元。

圖片描述

在這種情況下,人們怎麼可能在DEX 上進行大規模的交易?每筆交易都有可能被「揩油」。只要Front Running 存在,DEX 就難成規模。

DEX 上的Flash Boys

圖片描述

Flash Boys 來源於《大空頭》作者邁克爾·劉易斯的《Flash Boys:一場華爾街起義》一書,指代的是華爾街上的一群高頻交易員們。

圖片描述

區塊鏈上的Front Running 會被拿來與高頻交易(High Frequency Trading)進行比較,因為它們具有一定的相似性。

二級標題

高頻交易會在所有交易所放上「誘餌」訂單,這些小額訂單提供最低的賣價和最高的買價,當一筆大交易分拆成多筆交易在多個交易所完成時,它們最先遇到的總是這些誘餌,如此一來其交易意圖就可能暴露(還有其他方法一起預測該交易的情況);與此同時,高頻交易利用更好的技術與更「直」的網線,搶在這筆大交易的其餘部分完成之前,在各個交易所進行相關股票的買賣,然後通過價格差賺錢。

高頻交易和區塊鏈上的Front Running 都包括兩個基本的組成部分:發現交易意圖,搶先完成交易。只不過前者是通過「誘餌」發現交易意圖,後者是通過監聽發現交易意圖;前者是通過更好的技術把自己的交易提前,後者是通過更高的交易費把自己的交易提前。

兩者的不同之處在於,高頻交易的時間窗口很小,所有人都是以納秒為單位進行賽跑,這對高頻交易系統有著極高的要求;而區塊鏈上的Front Running 基本只受交易費的影響,出的錢越多,就越能跑到前邊。

參考資料

Winkrypto
作者文库