Yish
Yish

Hey, I’m Yish, the minimalist and an engineer.

閃電貸原理與範例

初步理解閃電貸原理與攻擊手段

原理

  1. 透過以太幣交易原子性,要交易全成功否交易全失敗。

  2. 調用智能合約也具有原子性,要全調用成功修改數值,否調用全失敗。

  3. 不會出現部份成功部分失敗。

  4. 保證在同一交易內歸還本金。

  5. 全成功還本付息,失敗則當作此交易沒有存在。

理想狀況

  1. 閃電貸借入 100000 USDT

  2. DEX A(交易所A) 買 2000@50(2000顆$50 token)

  3. DEX B(交易所B) 賣 2000@55(2000顆$55 token)

  4. 歸還 100000 USDT + 100 USDT(利息)

  5. 獲利 9900 USDT

必須要在同筆交易區塊內完成(透過自己撰寫智能合約並調用合約達到一次交易完成)

攻擊步驟

目的: 攻擊有漏洞的智能合約竊取利益

  1. 藉由 dydx 借出 10000ETH

  2. 5000ETH 抵押到 compound 借出 112 WBTC

  3. 1300ETH 轉入 bZx(主要攻擊的漏洞合約) 透過 5 倍槓桿賣出 ETH 買入 WBTC

  4. bZx 為了完成此筆交易,透過 kyber network 協議在 uniswap 內大量拋出 ETH 買 WBTC

  5. uniswap WBTC/ETH 交易對池不夠深 -> 價格被拉升 38.5 -> 109.8

  6. 原本 bZx 應該是僅扣除原押 1300ETH 不應該用到自己資金池完成交易(無偵測到風險),但由於合約漏洞導致用到自己資金來完成此筆交易

  7. 拋出由 compound 借出的 112 WBTC 到 uniswap 售賣 -> 獲得 6871ETH

  8. 6871ETH + 3200ETH(未動用到的借貸) = 10071-10000=71ETH(獲利)(歸還 dydx 貸款)

  9. 駭客在 compound 上還有 5500ETH 正在被抵押

  10. 由於其他交易市場: WBTC/ETH 還在正常價位 -> 透過 4300ETH 買入 112WBTC -> 換回被抵押的 5500ETH -> 總計獲利 1200ETH + 71ETH = 1271ETH

閃電貸原理與範例

參考:

https://youtu.be/RjI_GKacJ34

https://academy.binance.com/zt/articles/what-are-flash-loans-in-defi

CC BY-NC-ND 4.0

Like my work?
Don't forget to support or like, so I know you are with me..

Loading...

Comment