最近,一個“黑客”幾乎0成本,利用FlashLoan提供的貸款在一次交易中賺取了36萬美金。考慮到此“破解”事件中涉及到的DeFi產品的數量,如果想要讓那些對DeFi只有初步了解的人容易理解,必須要盡可能的講清楚相關細節。在本文中,我將逐步引導讀者一步一步完成“破解”操作,并在一些關鍵步驟中做出進一步解釋。以便你可以對這次事件到底是如何發生的有一個更深刻的理解和認識,而不再只是“略知一二”。為了表述方便,我們暫且把這位“黑客”稱之為Joe吧,Joe在十幾秒按照順序發起以下幾筆交易:第1步:FlashLoan借:從dydx上借10000WETH。CortexLabs注釋2:WETH:英文全稱:Wrapped-Ether,翻譯為“包裝過的ETH”。因為ETH在ERC20標準被定制之前就存在了,因此ETH并不符合自己的ERC20標準。WETH可以讓ETH在去中心化的交易平臺上和其他符合ERC20標準的代幣進行直接交易。1WETH=1ETH。后文中出現的WBTC原理和WETH一樣,1WBTC=1BTC。第2步:Compound抵押借貸:5500WETH充值至Compound合約,以5500WETH作為抵押物借貸出112WBTC。第3步:dZx保證金杠桿交易:1300WETH充值到dZx合約,5倍杠桿做空。具體操作可簡單理解為,從bZx借出5637.623762WETH,并通過KyberSwap在Uniswap中賣出,賣成為51.345576WBTC。這一步其實是將Uniswap中的WETH/WBTC的價格砸穿。當時正常WETH/WBTC的價格大約為0.025974,而這一步賣出的操作,基本上把Uniswap中WETH/WBTC的價格砸到了0.00910747。接近三倍。CortexLabs注釋3:做空:金融市場中的一種當資產價格下跌時能獲利賺錢的手段。舉例說明:當你做空100ETH,你從其他地方借來了100ETH,然后在ETH價格為280美金的時候馬上賣掉,你會獲得28000美金。但是你仍然需要償還100ETH。這個時候,BTC的價格已經被砸到了250美金,那么你只需要償還100*250=25000美金。于是你還剩下3000美金,這就是你做空的收益。這里舉例說明的是1倍杠桿的基礎邏輯。第4步:Uniswap交易:用第2步從Compound里借出來的112BTC,在Uniswap里買回ETH,共買回6871.4127388ETH。第3步把WETH/WBTC的價格砸穿近三倍,這個時候再用從Compound中抵押借出來的112WBTC,把WETH買回來。此過程中,Uniswap中WETH/WBTC的價格又被拉升,最終買回了6871.4127388ETH。第5步:FlashLoan還:FlashLoan借出來的10000WETH中還有未使用的3200WETH,再加上第4步中用112WBTC買回的6871WETH,共10071.4127388WETH。10000WETH進行FlashLoan歸還。還剩余71.4127388。到這一步,整個操作就結束了。只要這些交易在以太坊的一個區塊時間內發生,并且被以太坊的下一個區塊打包確認,那么這些交易就會按照發起的時間,進行執行。關鍵點:由于FlashLoan的條件達成,在一個區塊內歸還,那么整個這些步驟的交易就都可以實現。那么我們來看下,Joe的收益情況:從這5步操作,Joe看起來像是只獲得了71.4127388WETH。但不要忘記:在Compound里和bZx里,Joe還有兩個倉位。第一個是Compound里面的抵押借貸。抵押了5500WETH,借出了112WBTC。另一個是bZx里面的保證金杠桿交易,抵押了1300WETH,5倍杠桿賣出做空。剩余51.345576WBTC。由于bZx采用的是Uniswap中的WETH/WBTC價格作為喂價,而Uniswap中的WETH/WBTC價格又被Joe操控。所以,按照常規理解,bZx中Joe的這個倉位理應是被爆倉的。而實際情況是,這個倉位里只剩余了第3步操作中獲得的51.345576WBTC。這個倉位,Joe顯然并不想理會。哪怕剩余的51.345576WBTC被扣掉。而Compound中的倉位,Joe更有興趣。按照此時ETH/BTC的正常價格大約為0.025974,Joe只要從市場上花費4300WETH,就可以買到112WBTC。然后歸還給Compound,就可以贖回5500WETH。這一下可以收益大約1200WETH。因此,Joe在這次操作中獲利情況應該是:1200+71.4127388=1271.4127388WETH。按照當時ETH的價格差不多在280美金,總獲利大約為355880美金。那么問題到底出在哪里?
FTX現任首席執行官John J. Ray III已確認FTX 2.0 計劃:5月23日消息,FTX用戶聯盟援引法庭文件稱,FTX現任首席執行官John J.Ray III已確認FTX 2.0 計劃,其中包括審查并完成重新啟動2.0版交易所的材料、對2.0投標名單進行評審等內容。[2023/5/23 15:19:49]
綜合上面的細節步驟來看,問題出在了bZx的保證金杠桿交易智能合約中。首先,bZx采用了Uniswap中的WETH/WBTC價格作為喂價。而Uniswap里面的深度又不足。其次,bZx中的保證金杠桿交易,無論做多或者做空,買入或賣出的市場也是Uniswap。也就是說,bZx本身就會對Uniswap的價格造成影響。最關鍵的,bZx保證金杠桿交易,在Uniswap上面的價格被砸穿后,這個倉位的保證金早就嚴重不足,但又沒有既定的阻止辦法。后記:
SPACE ID與ENS合作實現.bnb.eth和.eth.bnb的相互解析:金色財經報道,Web3域名和身份平臺SPACE ID與以太坊域名服務ENS達成合作,通過ERC-3668(CCIP讀取)將.bnb域名引入以太坊網絡,實現.bnb.eth和.eth.bnb的相互解析。在MetaMask上輸入xxx.bnb.eth,會在以太坊上解析為用戶的BNB Chain地址。[2023/5/5 14:44:15]
此文目的并非是在事件發生后,再去指責任何DeFi產品的漏洞或者對這位我們稱之為Joe的黑客有什么褒貶。此文目的,僅僅是為了讓更多普通加密貨幣領域參與者對DeFi產品邏輯有更進一步的理解,并且是通過盡可能簡單易懂的方式。同時也希望讓大家看到,導致此次事件的根本原因是什么,開發者在后續進行其他DeFi產品設計的時候,也應該從中吸取到教訓。再升華一下,此次事件其實也引起了DeFi領域關于DeFi產品到底要不要設置所謂“管理員權限”的討論。此文作為一個引子,我們后續可以繼續針對此類內容分享給Cortex中文社區。CortexLabs注釋1:FlashLoan,中文直譯名稱為閃電貸。“閃電貸”是在一個區塊內在不同DeFi借貸平臺發起多筆交易的方式,也就是不同資產和債務之間的轉貸。“閃電貸”也是一種無需抵押物的借貸方式,前提是貸款的發行和償還必須在以太坊同一個區塊內完成,按照目前以太坊的出塊速度,大約13秒。
Gitcoin與Index Coop社區投票通過合作推出Gitcoin Staked ETH指數提案:金色財經報道,Gitcoin 與加密貨幣指數協議 Index Coop 社區近期投票通過一項合作推出 Gitcoin Staked ETH 指數(gtcETH)的提案,該指數將提供對主流流動性質押代幣的多元化敞口,并與 Gitcoin 共享部分質押獎勵,以支持公共產品融資。[2023/3/4 12:42:07]
Open Forest Protocol將在NEAR上推出碳中和綠化項目:7月26日消息,Open Forest Protocol(OFP)宣布正式上線,并將在NEAR上上線碳中和綠化項目。Open Forest Protocol是一個開放性平臺,旨在使得綠化項目可以被透明地驗證和資助。[2022/7/26 2:38:22]
go-ipfs更名為Kubo:7月21日消息,采用Go語言編寫的IPFS協議實現go-ipfs更名為Kubo并發布了v0.14.0版本。本次更名旨在闡明IPFS是一組可互操作的協議,而不是像go-ipfs一樣的特定實現。[2022/7/21 2:28:20]
北京鏈安,聚焦區塊鏈安全與數據服務,以下是基于北京鏈安ChainsMap鏈上數據監測系統,就上周數據發布的比特幣鏈上數據周報.
1900/1/1 0:00:00文|Odaily星球日報&Poolin幣印礦池作者|黃雪姣編輯|Mandy王夢蝶出品|Odaily星球日報 作為長期跟蹤礦業的記者,我發現很多人在行情極端、行業動蕩時.
1900/1/1 0:00:00編者按:本文來自蜂巢財經News,作者:JXkin,Odaily星球日報經授權轉載。3月12日的“活久見”瀑布行情讓BTC的避險屬性再次遭受外界質疑,也讓幣市投資者、DeFi平臺、礦圈的礦工見識.
1900/1/1 0:00:001.今日市場概況今日市場總市值為1463億美元,相比昨日減少3.4%。交易量為1561億美元,相比昨日減少26%.
1900/1/1 0:00:00編者按:本文來自中本小蔥,Odaily星球日報經授權發布。Steem社區與孫宇晨的博弈似乎正在發生逆轉.
1900/1/1 0:00:00作者|秦曉峰編輯|Mandy王夢蝶、郝方舟出品|Odaily星球日報 BitUniverse數據顯示,過去48小時,加密市場遭遇重創,全線暴跌.
1900/1/1 0:00:00