市场的流动性分散在多个地方,有中心化交易所也有去中心化的交易所,如果Defi项目对资产的评估依赖的是链上的报价那么资产的流动性也只能依赖链上。以Warp Finance为例,在第6步中黑客往ETH-DAI池注入了341217个ETH来交换DAI,此时第5步黑客抵押的94349份LP也会对应大量的ETH,这么大量的ETH能以p(ETH,USDC)的价格卖出吗?显然是不可能的。 实际上Uniswap本身就提供了更精确的接口来帮助我们评估卖出一定数量的ETH到底能得到多少个USDC: function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);而且这个接口还会把实际交易过程中收的手续费算进去,因此会非常准确。 结束语 以资产作为抵押的项目被攻击的手段一般都是抬高资产价值然后借出比资产价值实际上高的多的稳定币,而链上价格非常容易被闪电贷操控,而且操控的幅度会超出你的想象,比如Warp Finance攻击中把ETH-DAI池中的ETH价格从640打到30。评估资产的价值要以资产实际被卖出时能值多少钱为准,也许实际上做不到这一点,但是要往这个方向努力。 但最重要的还是要有足够高的抵押率,Warp Finance的抵押率就不高所以才被攻击成功,这种项目在最开始启动的时候最好设置高额的抵押率确保安全,即使用户的资产利用率低一点也没关系。 如果Warp Finance能在受攻击后第一时间从ETH-DAI池把ETH取出来然后在中心化交易所上以合适的卖出也是不会遭受损失的,但实际上当ETH-DAI池出现30这样的低价后,无数的套利机器人就像闻到血腥味的鲨鱼一样扑了上来,很快就会填平这个差价。Warp Finance在反应过来的时候为时已晚。 (责任编辑:admin) |