DeFi“黑暗深林”:有去无回的危机

中秋国庆“黄金周”刚过,DeFi Pulse数据显示,DeFi(去中心化金融)中锁定的资产总价值已突破100亿美元。从DeFi应用排行来看,Uniswap高居榜首,独占23亿美元价值。

一方面,近期市场反馈DeFi资产单日暴跌25%,疑似“泡沫挤破”。但从数据来看,流动性挖矿的魅力广为人知,资产入场态势持续,锁仓形势看好。另一方面,DeFi恰似深邃“黑暗森林”,其中隐藏各种风险,隐形杀机四伏,“森林夺宝”恐有无法全身而退,有去无回之险。

 

林中绝景Uniswap

 

作为以太坊去中心化链上交易协议Uniswap,以流动性资金池取代常规买卖订单。通过流动性挖矿机制,人们可以使用ETH快速兑换各类代币,还可通过提供资产流动性来获取奖励代币。

同时,人们还能够以同等价值的ETH和ERC20代币创建流动池。在此新型市场中,创建者可设定兑换率,并由Uniswap的“恒定函数做市商”机制推动行情变化。在交易对中,当一方相对另一方的流动性发生变化时,价格出现波动,套利机会随之而来,鼓励更多的人参与交易。

 

有去无回的充值风险

近日,区块链信息安全学者Georgios Konstantopoulos发表了题为《真实存在的以太坊 DeFi「黑暗森林」:mempool 套利机器人吞噬了我的交易》的文章,向我们展示了以太坊DeFi智能合约令人堪忧的安全问题。

在DeFi这个“黑暗森林”,无论是锁仓挖矿,还是流动性挖矿的项目,核心诱惑无外乎充值抵押获新币,反复组合套利的收益游戏。“充值”可能是实现一夜暴富的一小步,但是,这最初的一步很可能已是十面埋伏。

“错误发送至合约本身交易对的代币,当有人在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智能合约种类、玩法花样频出,面对各种新型合约的交错,不论是对合约开发还是审计都会提出新的挑战。其实,类似充值、转账引发的安全问题,已在众多合约中频繁出现,由此造成的经济损失已不是小数。

 

结语

 

“黑暗森林”财富隐藏,勇者义无反顾夺宝,智者步步为营收益。危机重重下,唯怀揣慎心,不忘安全,方得全身进退。

写评论,请先登录