Bzx閃電貸事件之套利邏輯、盈虧分析和敏感度測試
星球君的朋友们
2020-02-20 06:19
本文约3118字,阅读全文需要约12分钟
一種前所未有的攻擊方式。

編者按:本文來自編者按:本文來自,作者:張天然,Odaily經授權轉載。

圖片描述

圖片描述

圖片描述

Bzx事件的五個套利步驟,PC:Peckshield

Peckshield的分析

Peckshield的分析

二級標題

二級標題

二級標題

背景與邏輯

這裡先補一些背景,Bzx是一個槓桿交易平台,所以自然分為兩部分,借貸和交易,借貸是Bzx自己的,交易接的是Kyber,Kyber旗下有很多流動性池子,其中一個是Uniswap,Kyber的價格體係是在旗下池子裡面選最優價格。在本次事件中,最優價格一直用的是Uniswap,所以Kyber基本沒有發揮作用。另外槓桿交易既可以在Bzx一樣的平台裡面完成,也可以自己去第三方平台借錢然後交易。就像本次事件的另一部分就是在Compound借錢去Uniswap交易。簡單總結,本次事件的主要角色,有兩個借貸平台,Bzx,Compound,一個交易平台Uniswap。

說Oracle的,其實也沒啥關係,鍋也不歸Kyber。要說背鍋的話,Bzx背一部分,Uniswap背一部分吧

二級標題

二級標題

二級標題

盈虧分析和敏感性測試淺析

從頭開始說起,先是從Dydx用flashloan借了6800個eth,獲得了操作本金,其中1300去了Bzx,5500去了Compound。然後Bzx這頭5倍槓桿(用1300eth抵押借到了5637eth)做多,Compound這頭借了券(用5500eth抵押,借了112btc,等值4400eth)來做空。效果是Bzx側5637eth換成了51個btc,之後Compound側112個btc換成了6871個eth。

價格波動方面,原來正常btc/eth的價格大概是39,在Uniswap的曲線上,Bzx拉盤是拉到了均價108,也就意味著拉盤結束的時候價格可能是200,Compound這頭沿著同一曲線砸回來,抵消完以後,超過的部分均價約20 【(6871-5637)/(112-51)=20】,所以最低價格可能在10。

Compound正常1.25倍超抵押,拿出來一倍等值btc,硬生生通過Uniswap曲線拉盤砸盤來回走兩趟,賣出了1.56倍的eth,超過了抵押額。 (從這裡往後,1倍指112btc或4400eth)

最後盈虧數據結果是,Compound這頭交易賺了0.56倍(5500eth的押金,拿出4400eth等值btc,賣成了6871eth=2471eth)。 Bzx那頭交易本身虧了應該有0.83倍(5637-2000=3637eth),但Bzx的collateral只有0.3倍(1300eth),所以淨虧損大約0.53倍(2337eth),由Bzx的儲戶承擔了,儲戶是虧損本金的。這裡體現的問題,是Bzx這側的大單Uniswap交易,明明會導致collateral不夠用爆倉,卻沒有被中止。

對黑客來說,兩頭加起來,Compound這頭賺的0.56倍(2471eth),需要扣掉Bzx這頭的成本1300eth,剩下1171eth,盈利大約0.26倍

如果算總賬的話,Bzx這頭虧損0.83倍,Compound盈利0.56倍,那剩下的0.27倍去哪裡了呢?這個要怪Uniswap的滑點了。之前提到Uniswap來回走兩遍以後,超過的部分均價約20 【(6871-5637)/(112-51)=20】,所以這裡是虧損出貨的,大概是61個btc在Uniswap上以對折的均價出售。佔便宜的是Uniswap上的做市池子了。

問題1:Uniswap這曲線來回走兩遍,可以互相抵消嗎,能不能只走抵消以後剩餘的部分?

答案是不行的。如果只討論互相抵消的部分,我們可以看見,本來是Bzx側有5637個eth,Compound側有51個btc,第一步拉完(Bzx側賣eth換btc)以後,Bzx側剩下51個btc 。第二步砸完(Compound側賣btc換eth)以後,Compound側留下了5637個eth。可以說是一拉一砸,完成了財富從Bzx側到Compound側的轉移,這是Uniswap特有的現象,在傳統世界沒有對標,這也是本次金融套利的最核心邏輯。所以,為了造出Compound這頭盈利0.56倍,Uniswap曲線走兩次是必要的,必須Bzx這頭先拉到頂,然後Compound這頭砸下來,再算上額外的未抵消的部分,才能賣出6871eth ,盈利0.56倍(2471eth)。

問題2:如果Bzx這邊風控沒問題沒砸穿倉,就是只花完1300eth的collateral,儲戶沒損失,那麼黑客能賺錢嗎?

答案是不確定,如果賺的話,肯定比現在的少,也有可能虧損,因為Uniswap曲線沒走到那麼極端的位置,之後1倍的資金拉盤是拉不出1.56倍的效果的,如果1.3倍都沒拉出來的話,那就覆蓋不了Bzx這邊1300eth的成本,就會虧錢,就算覆蓋了,也比之前少賺。

注:

注:

  • 注:

  • 本文所有的btc都是指wbtc;

星球君的朋友们
作者文库