除了頻繁被用於 DeFi 套利攻擊,閃電貸還能做什麼?

原文標題:《DeFi 科普丨深入淺出閃電貸
撰文:jakub
翻譯:屏風

閃電貸是怎麼回事?如何在沒有抵押物的情況下,可以借到價值數百萬美元的加密貨幣的呢?本文將對閃電貸進行簡單的介紹

簡介

閃電貸可以讓我們在無需抵押品的情況下從指定的智能合約池中借入任何可用的資產金額。閃電貸是 DeFi 中有用的一個構件(building block),因爲它可以用於套利、交換抵押品和自我清算等。

閃電貸款雖然最初是由 Marble 協議引入的,但由 Aave 和 dYdX 普及。

那麼,閃電貸有什麼好處呢?

閃貸必須在同一區塊鏈交易中進行借貸和快速償還。

圖解 DeFi 閃電貸原理與常見用例

Ethereum 等區塊鏈上交易的概念與計算機科學中對交易的傳統定義一致。

交易

一個交易代表了一組必須以「原子方式」執行的操作,原子方式指的是要麼所有的步驟都被執行,要麼交易被回滾,一個步驟都不會被執行。

讓我們以一個簡單的數據庫交易爲例。熟悉這一概念的讀者可以跳過這個部分。

想象有一個代表用戶賬戶餘額的數據庫表

圖解 DeFi 閃電貸原理與常見用例

愛麗絲賬戶的餘額是 1000 美元,鮑勃的餘額是 500 美元。愛麗絲給鮑勃發了 500 美元。在這種情況下,我們要從 Alice 的餘額中減去 500 美元,並在 Bob 的餘額中增加 500 美元。數據庫更新報表應這樣寫:

圖解 DeFi 閃電貸原理與常見用例

如果第一個更新執行了,但第二個更新因爲某些原因失敗了,會怎麼樣?(也許 id=2 在系統中並不存在,但我們犯了一個錯誤,以爲這是 Bob 的 id)

如果發生這種情況,我們就會發現出現錯誤的結果:Alice 的餘額爲 500 美元,Bob 的餘額也等於 500 美元。

爲了避免這樣的情況,我們必須使用 transactions。

在上面的情況下,在 SQL 中,我們只需要用 BEGIN 和 COMMIT 關鍵字來打包這兩條語句。一旦這樣做,要麼這兩條語句都正確執行了,要麼都沒有執行,保證 Alice 和 Bob 的餘額不受影響,我們就可以放心了。這就是我們常說的原子化交易,如果不同的步驟是同一個交易的一部分,它們是不可分割的,要麼全有,要麼全無。

Ethereum 交易

說到 Ethereum,每一個常見的操作,如發送 ETH、發送 ERC20 代幣、與智能合約交互等都是在交易範圍內執行的。

圖解 DeFi 閃電貸原理與常見用例

交易被分組幷包含在 Ethereum 區塊中。我們可以很方便地在任意的區塊鏈瀏覽器(例如 Etherscan)上看到包含在特定區塊中的所有交易。

圖解 DeFi 閃電貸原理與常見用例

一個 Ethereum 交易可以包含多個步驟,例如,在 Compound 上提供 ETH 並借出 DAI,在 Curve 上將借出的 DAI 的一半換成 USDC,在 Uniswap 上爲 DAI/USDC 池提供流動性,所有這些都在一個 Ethereum 交易中完成。當然,如果其中任何一個步驟導致錯誤,整個交易將被回滾,所有步驟都不會發生。需要注意的是,即使合約執行失敗,我們還是要付 gas 費的。

單筆交易的步驟數只受 gas 費的限制,所以雖然理論上,你可以創建一個有成千上萬步驟的有效交,但現實中可能會由於最大 gas 成本的限制,交易會被拒絕。

閃電貸

現在,我們來深入瞭解一下閃電貸。

首先,執行閃電貸最重要的是找到一個閃電貸提供商。Aave 或 dYdX 等項目開發了智能合約,允許 DeFi 用戶從指定的池子中借到不同的幣,前提條件是在同一個以太坊交易內償還。使用閃貸通常有固定的成本。例如,Aave 合約要求借款人歸還初始金額+0.09% 的借款金額。0.09% 這筆費用將會分給存款人和集成商,前者給出了可供借貸的資金,後者爲使用 Aave 的閃電貸 API 提供便利。這筆費用的一部分也會被換成 AAVE 代幣。

圖解 DeFi 閃電貸原理與常見用例

一旦從借貸池中借到金額,它就可以用於其他套利操作,只要在不同步驟所處的區塊鏈末端快速償還貸款。

由於貸款必須在一次交易內償還,所以不存在借款人不償還借款的風險。唯一的風險就是一直存在的智能合約和平臺風險。

閃電貸越來越受歡迎,有的用戶在 Aave 上的借款金額高達 14M DAI。

使用案例

閃電貸最常見的使用案例有 3 種。

圖解 DeFi 閃電貸原理與常見用例

套利:閃電貸可以放大成功套利的利潤。

讓我們想象一下,Uniswap 和 Curve 之間的 DAI/USDC 池存在價格差異。你可以在 Curve 上用 1 個 DAI 換取 1 個 USDC,但在 Uniswap 上您只需要 0.99 個 DAI 就可以買到 1 個 USDC。現在你可以嘗試執行以下套利:

  1. 通過閃電貸向 Aave 借 100,000 DAI。
  2. 在 Uniswap 上將 100,000 DAI 換成 USDC,收到 101,010 USDC。
  3. 在 Curve 上將 101,010 USDC 換成 101,010 DAI
  4. 償還初始 100,000 DAI + 0.09% 的費用 =100,090 美元
  5. 利潤 920 DAI

是不是看起來很好的樣子?但我們必須考慮到以下幾個因素:

圖解 DeFi 閃電貸原理與常見用例

1.網絡費用--多步驟的套利交易可能成本不菲,在計算利潤時,一定要將交易費用考慮在內。
2.價格滑點-- 一定要計算你在執行訂單時將會遇到多少價格滑點(提示:這取決於交易額的大小和流動性池的流動性)。
3.Frontrunning-- 很有可能別人會發現同樣的機會,並且會設法搶先你一步行動。最重要的是,監控 mempool 的機器人可以發現你的盈利套利機會,並以更高的 gas 費發送相同的交易把你的盈利機會「偷走」。

閃電貸的另一個用例是更換抵押品

假設你用 ETH 作爲抵押品從 Compound 借了 DAI。你可以通過以下方式將抵押品從 ETH 換成例如 BAT:

  1. 發起一筆閃電貸借出 DAI
  2. 用借來的 DAI 償還 Compound 中的貸款
  3. 提取你的 ETH
  4. 在 Uniswap 上將你的 ETH 換成 BAT
  5. 提供 BAT 作爲 Compound 的抵押品
  6. 以你的 BAT 抵押品借出 DAI
  7. 用借來的 DAI+費用償還步驟 1 的閃電貸

通過這樣一輪操作,額外付出借款金額的 0.09% 就能成功把你的抵押品從 ETH 換成了 BAT

還有一個應用例子是自我清算

想象一下下面的場景:你在 Compound 上有一筆以 ETH 作爲抵押借出 DAI 的貸款。ETH 價格不斷下跌,已經接近清算水平。你也沒有或不想存入更多的 ETH 來降低你的清算水平,你也沒有償還貸款所需的 DAI。現在,與其讓 MakerDAO 合約清算你的抵押品並向你收取清算費,不如採取以下步驟:

  1. 發起閃電貸,借出一筆 DAI,金額是你在 Compound 上的欠債
  2. 償還 Compound 上的 DAI 貸款,提取 ETH
  3. 將足夠的 ETH 換成 DAI,以償還步驟 1 的閃電貸+費用
  4. 拿住你剩下的 ETH

這就是閃電貸最常見的 3 個用例,閃電貸的概念還比較新,未來還有很多應用例子有待發掘。

閃存貸和 DeFi 黑客

閃電貸,與加密技術類似,既可以用於好的方面,也可以用於壞的方面。閃電貸被大量應用在 DeFi 攻擊中,黑客的獲利得到放大,因爲它們不需要任何前期資金。

圖解 DeFi 閃電貸原理與常見用例

最著名的黑客攻擊之一是 bZx 事件,在這次的攻擊中,閃電貸被用來操縱 Uniswap 的預言機價格。其實問題不在於使用閃貸,而是在使用 Uniswap 作爲價格預言機時的一些不正確的假設。

這樣的事件會讓有的用戶遭受損失,但另一名,這也讓整個 DeFi 生態系統得到了加強,使其在未來變得越來越反脆弱。

編程與 Furucombo

雖然閃電貸主要由開發者使用,但也可以在不需要敲代碼的情況下使用它,Collateralswap、Defisaver 或 Furucombo 等項目可以幫助我們實現這一點。

圖解 DeFi 閃電貸原理與常見用例

那麼,你對閃電貸有什麼看法?你用過閃電貸嗎?你認爲它對 DeFi 生態系統有好處嗎?

來源鏈接:finematics.com