時間:2023-08-26|瀏覽:225
一方面,近期市場反饋DeFi資產單日暴跌25%,疑似“泡沫擠破”。但從數據來看,流動性挖礦的魅力廣為人知,資產入場態勢持續,鎖倉形勢看好。另一方面,DeFi恰似深邃“黑暗森林”,其中隱藏各種風險,隱形殺機四伏,“森林奪寶”恐有無法全身而退,有去無回之險。
林中絕景 Uniswap
以流動性資金池取代常規買賣訂單。通過流動性挖礦機制,人們可以使用ETH快速兌換各類代幣,還可通過提供資產流動性來獲取獎勵代幣。
同時,人們還能夠以同等價值的ETH和ERC20代幣創建流動池。在此新型市場中,創建者可設定兌換率,并由Uniswap的“恒定函數做市商”機制推動行情變化。在交易對中,當一方相對另一方的流動性發生變化時,價格出現波動,套利機會隨之而來,鼓勵更多的人參與交易。
有去無回的充值風險
近日,區塊鏈信息安全學者Georgios Konstantopoulos發表了題為《真實存在的以太坊?DeFi「黑暗森林」:mempool套利機器人吞噬了我的交易》的文章,向我們展示了以太坊DeFi智能合約令人堪憂的安全問題。
在DeFi這個“黑暗森林”,無論是鎖倉挖礦,還是流動性挖礦的項目,核心誘惑無外乎充值抵押獲新幣,反復組合套利的收益游戲?!俺渲怠笨赡苁菍崿F一夜暴富的一小步,但是,這最初的一步很可能已是十面埋伏。
“錯誤發送至合約本身交易對的代幣,當有人在Uniswap調用burn功能,根據流動性代幣余額的判斷,該行為可提取代幣返還至調用方的指定地址。”——Georgios Konstantopoulos
用戶參與Uniswap流動性挖礦,向合約地址充值時,如果錯誤將代幣按照合約地址打入交易代幣池而非根據系統正常操作增加流動性,那么這筆資產最終將被“后人”所繼。姑且不論流動性收益,就連“老本”也無法收回。
用戶移除流動性,即執行burn調用時,系統返還給用戶的代幣數量分別是amount0、amount1個。計算公式于上圖443、444行,即:
amount0=liquidity.mul(balance0)/_totalSupply;
amount1=liquidity.mul(balance1)/_totalSupply;
其中,balance0和balance1對應的是合約中兩種代幣的實際剩余量,而非添加流動性的記錄量。在正常移除流動性時,balance0和balance1與記錄量相等。
但是,如果有用戶誤將代幣直接打入代幣池中,balance0和balance1就會受到影響隨即增量。而在其之后執行移除流動性操作的用戶,其所得的amount0和amount1的量將會增多。此時,代幣池記錄量正常更新。
也就是說,用戶A將對應代幣錯誤充值進入代幣池后,隨后的用戶B、C、D、…進行移除流動性操作,將“漁翁得利”瓜分這筆資產。最終,結算進賬的代幣將多于這些用戶本該得到的數量。
究其原因,在移除流動性時,用戶按照所持LP幣的占比來兌換池中的兩種代幣。一旦有用戶不通過添加流動性的方式(即誤操作)向池中充值時,代幣總量增加,但LP幣的總量并未增加,因此,以同樣的LP幣,用戶可獲得更多的代幣。
作為投資者,需注意切勿向代幣池直接充值,這不僅不會增加資產流動性獲得收益,相反只會造成資產損失。
這僅是走進“黑暗森林”第一步存在的風險岔路。據Georgios所言,要避免合約中這種“免費繼承”資產的形成,就必須對轉幣安全足夠的重視。如若不然,他人將利用合約漏洞“順手牽羊”,到時只能希冀于白帽黑客心懷正義挺身而出,義務回收并歸還。
此外,還有更多的安全問題廣泛存在于mempool(待確認池)等區域,各類漏洞可能隨時被攻擊者發現并迅速進行瘋狂掠奪。
成都鏈安認為,DeFi智能合約種類、玩法花樣頻出,面對各種新型合約的交錯,不論是對合約開發還是審計都會提出新的挑戰。其實,類似充值、轉賬引發的安全問題,已在眾多合約中頻繁出現,由此造成的經濟損失已不是小數。
結語
“黑暗森林”財富隱藏,勇者義無反顧奪寶,智者步步為營收益。危機重重下,唯懷揣慎心,不忘安全,方得全身進退。