閃電貸攻擊? 無聊猿 $APE 空投被套利上千萬台幣

JKOBlockchain
JKOBlockchain
Published in
7 min readJun 28, 2022
圖片來源:Hypebeast

Yuga Labs 無疑是現在最著名的 NFT 團隊之一,過去發行的加密資產皆為 NFT,例如:Bored Ape Yacht Club (BAYC)、Bored Ape Kennel Club (BAKC)…。但今年 3 月他們也發行了 ERC-20 的代幣 $APE,並且規劃了總數為 150M (15% of total supply) 的 $APE 空投給所發行之 NFT 持有人們。

若以歷史最高價($25.97)來算,這次的空投相當於送出了將近 $3.9B (39億美金) 給 NFT 的持有者們。官方這樣寵粉的作法,自然會使得猴子系列的 NFT 價格一直居高不下。有趣的是,在這樣的送錢活動中,有位區塊鏈玩家在「不」持有 NFT 的情況下,也成功地領到了 60,564 顆 $APE 的空投。

該位區塊鏈玩家所用到的技巧以及概念,分別為:碎片化 NFT 以及閃電貸(Flash Loan),因此想藉著這樣的空投事件跟大家介紹:

1. 碎片化 NFT
2. 閃電貸
3. $APE 套利操作過程

碎片化 NFT

NFT 都是獨一無二的,每個都有不同的 Metadata,卻也導致 NFT 的流動性較差.加上許多知名或是 OG 級的項目都非常貴,小散戶根本無法持有。NFT 碎片化就解決了這個問題,把一個 NFT 切成數個 ERC-20 同質代幣,使得你能夠只購買 1/100 個 CryptoPunks(如下圖)。

那要怎麼將 NFT 進行碎片化呢?我們可以使用 NFTX 平台,在上面鎖定 1 個 NFT 便能取得 vToken(vToken 是平台創造的 ERC-20 代幣 ),而當你有 1 vToken 時,就能在平台上將 1 vToken 燒掉去換回 1 個 NFT。

示意碎片化 NFT.資料來源:Coinmonks

閃電貸 (Flash Loan)

閃電貸是一種不需要抵押品的貸款,需要透過智能合約來進行,且借款和還款必須在同一筆交易內完成;如果在交易的最後沒有還款動作,則借款的動作會被視為失敗。閃電貸大多被用在套利、攻擊或置換借款的抵押品。

例如:下圖的用戶在借款 $A 後到 DEX 將大筆的 $A 換成 $B,導致因為流動池內兩代幣的比例失衡,所以 DEX 上 $A 的價格下跌 $B 的價格上升.再到其他使用上述 DEX 作為價格預言機的借貸平台抵押 $B 並借出 $A,因為抵押品的價格高於市場所以能借出大量低於市場價格的 $A.最後再將最初借的 $A 還給閃電貸協議,多出來的 $A 就是本筆交易的獲利。

閃電貸的借款(第一步)和還款(第四步)在同一筆交易中.資料來源:Chainlink

領 $APE 空投的套利方法

$APE 空投規則

先從活動規則了解起,根據官網提供的資訊,領取的資格及數量可參考下圖:

$APE 空投數量對照表。資料來源:ApeCoin

如果 NFT 持有者擁有不只一種的 NFT 則會得到更多數量的空投。這樣的設計也成功活絡了社群間的互動,很多只持有 Kennel Club 的人會想在社群中組隊,找尋擁有 Bored Ape 或 Mutant Ape 的玩家去組隊獲得額外的 856 $APE(至於領完後要以什麼比例分配這額外的獎勵就是他們自己去協商囉)。

操作步驟

先列出整體操作流程供大家有個大致的概念,下方會再逐步驟講解操作細節。

  1. 買一隻 BAYC 來支付 NFTX 的手續費
  2. 去 NFTX 閃電貸借出 5.2 個 vToken 的貸款
  3. 用 5.2 個 vToken 贖回 5 個 BAYC NFT
  4. 持有 NFT 即可去跟空投合約 claim $APE
  5. 將 BAYC NFT 丟回 NFTX 換出 vToken 後進行貸款償還

Step 1

因為後面步驟將使用 NFTX 這平台來進行閃電貸,得先準備手續費來支付給平台。

手續費規則:

  • 用 vToken 贖回 NFT:4%(燒掉 1.04 vToken,只能贖回 1 NFT)
  • 將 NFT 進行碎片化變成 vToken:10%(鎖定 1 NFT,只能獲得 0.9 vToken)

目標是從 NFTX 中取得 5 隻 BAYC,所以手續費會需要:0.04 * 5 (vToken -> NFT) + 0.1 * 5 (NFT -> vToken) = 0.7 vToken。所以得先在市場上(如 OpenSea)購買一隻 BAYC,到時才付得起手續費。

Step 2

向 NFTX 發出閃電貸的請求,貸款出 5.2 個 vToken。也就是在最後一步驟完成的瞬間,身上得至少擁有 5.2 個 vToken 來償還貸款。

Step 3

如 Step 1 中所介紹的手續費規則,在 NFTX 上燒掉貸款借來的 5.2 個 vToken(5 * 1.04 = 5.2)可以讓我們獲得 5 個 Bored Ape NFT。

Step 4

接著便能去跟空投合約互動領取 $APE 空投了:因為空投合約只會檢查呼叫合約者「當下」是否持有 BAYC?所以「借入 BAYC,然後等領完 $APE 後就立刻把 BAYC 還回去」這樣的操作才能奏效。

目前總共持有 6 隻 BAYC(1 隻在市場上買來當手續費的 + 5 隻 Step 3 裡換出來的),所以互動後可以領到 10,094 * 6 = 60,564 $APE。

Step 5

既然領完 $APE 了,得開始想辦法去還當初 Step 1 中 5.2 個 vToken 的貸款了。因為身上有著 6 隻 BAYC,所以我們能將 BAYC 鎖定回 NFTX 去獲得 vToken:扣掉手續費後,將獲得 0.9 * 6 = 5.4 ( > 5.2) 個 vToken,便有了足夠的 vToken 去償還貸款。

當然,多出的 0.2 個 vToken 也要好好利用啊!立刻把這 0.2 vToken 在 NFTX 的交易對上賣回換成 14.15 $ETH。

利潤結算

大家應該會好奇做了這麼一連串的繁雜動作後,到底賺了多少錢呢?以 3 月中下旬的幣價進行計算,分析如下:

初始資金(在次級市場上購買 BAYC):106 $ETH(106 * $2,760 = $292,560)

結算資金:60,564 $APE + 14.15 $ ETH(60,564 * $10 +14.15 * $2,760 = $644,694)

利潤:$644,694 — $292,567 = $352,127

也就是經過一波操作後,這位玩家在短短的幾分鐘內就賺了大約 1,000 萬台幣。

在區塊鏈的世界中,充斥著這樣利用基本概念去獲利的方式,而這項事件特別的點在於:它利用了閃電貸卻沒造成他人的損失。相反的,比較常聽到的會是某某項目被駭客利用經濟模型上的缺失,進行了閃電貸攻擊獲取巨額利潤。在這種事件底下,因為項目方被駭客竊取了鎖在智能合約裡的加密資產,項目的用戶往往就只能因此去承擔無法贖回加密資產的損失了。

這也是我們選擇介紹並分析這事件的原因:技術發展本身是良善的,我們都希望透過技術發展去帶給社會更多的益處。在持續學習之餘,也希望大家常保善良的心,別去惡意使用這些方便的工具!

--

--