Balancer: 流动性池遭闪电贷攻击(2)
Balancer: 流动性池遭闪电贷攻击(2)
什么是Balancer?
Balancer是一个非托管的通用自动做市商(AMM)协议。具体可参见:什么是流动性挖矿Balancer?
Balancer 流动性池遭闪电贷攻击,损失 50 万美金,Balancer 上遭遇损失的为 STA 和 STONK 两个代币池,目前这两个代币池的流动性已枯竭。STA 和 STONK 代币均为通缩代币,也就是说这种攻击仅影响通缩代币的流动性池。
2020年6月29日,Balancer遭受闪电贷攻击,Balancer是使用恒定积进行的AMM市场,池子中的Assets在遵守恒定积的前提下可按池子当时的利率进行交换,本次闪电贷攻击利用了该原理,将一种Asset掏空后,用另一种Assets以很低的价格获取,由此获利接近50万美金。
使用Tokenview区块浏览器查看被攻击的hash:0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16fdc08c78106
### Balancer被攻击的步骤
攻击者去dYdX借贷104k WETH;
攻击者在Balancer的WETH-STA池子里将步骤1得来的WETH不断地换成STA代币,21次之后,池子中的STA被掏空,只剩下1weiSTA(由于通缩模型,至少会剩余1weiSTA在池子里);
攻击者按照恒定积公式,使用1weiSTA不断地获取池子中的WETH,价格分别为1weiSTA:30,347WETH,1weiSTA:15,173WETH等等,进行18次兑换之后,WETH几乎被兑空;
同理,攻击者也将WBTC-STA,SNX-STA,LINK-STA池子进行了同样的操作;
攻击者去dYdX退回104k WETH;
攻击者将获取的少量STA(50weiSTA)放入Balancer池子里添加流动性,由于池子里目前STA数量很少,仅有1weiSTA,因此攻击者此时获取了很高的LP share,这些share可以获取池子的代币奖励,共计获取了136k STA;
攻击者将136k STA 兑换成了109 WETH,由此完成整个攻击过程。
攻击者获得的战利品
- 455 WETH (价值10万美元)
- 2.4m STA (价值10万美元)和转换成的109 WETH(2.5万美元)
- 11.36 WBTC (价值10万美元)
- 60.9k SNX (价值10万美元)
- 22.6k LINK (价值10万美元)
使用Tokenview Defi浏览器查看流动性挖矿DeFi列表。