閃電貸原理與範例

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

原理

  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 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

YishHey, I’m Yish, the minimalist and an engineer.
  • 来自作者
  • 相关推荐

什麼是 ERC-20?

解析區塊鏈跨鏈橋

什麼是 BRC-20?