以太坊 DEX “夾”交易套利,和 BCH 分裂往事

買賣虛擬貨幣

以太坊網路上出現了一種特別的套利,讓我想起了2018年末導致BCH和BSV分裂的一個特性升級,CTOR,規範交易排序。

夾Uniswap交易套利

別關心“夾交易”套利攻擊在道德上的觀點,我們還是先搞明白這是什麼黑科技吧。

針對uniswap這個去中心化交易所的交易,存在如下套利邏輯。拿交易對USDT/ETH來舉例。

使用者,即被攻擊者,發了一筆交易tx1,用usdt在uniswap的usdt/eth交易對裡買ETH。

假設usdt/eth資金池的初始值為(x,y)。即x個usdt,y個ETH。

使用者發起一筆交易tx1,用dx個usdt,換取dy個ETH。請注意,dx是確定的使用者支出的金額,但dy的值在交易被打包前是一個範圍,即滑點導致了一個上下限。

為了方便理解,我們將攻擊者直接定為礦池。雖然技術上非礦池也能搞定。

攻擊者構造交易tx0,使用dx'個usdt,換取dy'個ETH。

然後攻擊者構造交易tx2,使用dy''個ETH,換取dx'個usdt。

攻擊者作為礦池,是有能力將tx0,tx1,tx2,這三筆交易打包進同一個區塊,並且嚴格按照順序tx0,tx1,tx2,來排序打包。

最終,攻擊者將獲得(dy''-dy'-tx0和tx2的0.3�e-gas)個ETH的利潤。

整個過程是這樣的,

1,攻擊者發現使用者的交易tx1,用Usdt買ETH。

2,攻擊者先安排交易tx0,將ETH的價格抬高,用dx'個usdt買到dy'個ETH。

3,攻擊者然後安排tx1成交,讓使用者買到ETH,進一步抬高ETH的價格。

4,攻擊者再安排tx2成交,賣出dy''ETH,將自己的dx'Usdt成本收回來。而因為2和3兩個步驟均抬高了ETH的價格,所以dy''一定小於dy'。(dy''-dy'-fee-gas)就是利潤。

以上過程攻擊者可以使用智慧合約來計算最後的(dy''-dy'-fee-gas)是否大於0,如果是,則執行“打包tx0-tx1-tx2”,否則不執行。可以做到無風險套利。

整個攻擊的核心就是攻擊者可以安排三筆交易的打包順序。

一般來說,以太坊交易在區塊裡排序是按使用者交的gas費用高低來排序的。但這並不是共識規則,礦池是可以做任意排序的。非礦池攻擊者“夾交易攻擊”使用的就是gas費來安排兩筆交易的先後。

BCH2018年末規範交易排序升級

這個“夾交易”攻擊策略讓我想起了2018年末BCH和BSV的分裂往事。

在2018年11月15日BCH的升級特性有一個叫CTOR,規範交易排序。CTOR讓區塊裡的交易按交易ID的升序進行排序。

升級前BCH區塊裡打包交易的排序規則叫拓撲排序TTOR,本質上這不是一個共識規則,礦池可以任意安排交易的排序。

但CTOR則將交易打包進區塊的排序列為了共識規則,即礦池只能按交易ID的升序打包排序。所有交易的在區塊裡的位置就成了共識的一部分。

CTOR主要是ABC開發組開發的,但引起了現在BSV的開發者強烈反對,最終導致了BCH和BSV的分裂。

交易ID,即txid,的值是交易資料的Hash,這個是不可預測的。現在ETH上的“夾交易”攻擊,就不可能在BCH上發生,因為礦池無法安排交易的擺放位置。當然BCH上沒有uniswap:),哈。

現在ETH區塊裡的交易排序不是共識的一部分,礦池可以任意安排交易的位置。

回想起2018年末,BCH的愛好者們為CTOR爭吵。當時爭吵的還有(checkdatasig)和(CHECKDATASIGVERIFY)操作碼,這兩操作碼都在升級後多個BCH應用上發揮了作用,但CTOR一直用處不大。不知道以後會不會有用。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;