|慢雾:DeFi 当红项目 YAM 闪电折戟,一行代码如何蒸发数亿美元?( 四 )
*function mint(address to, uint256 amount) external onlyMinter returns (bool) { _mint(to, amount); return true; } function_mint(address to, uint256 amount) internal { // increase totalSupply totalSupply = totalSupply.add(amount); // get underlying value uint256 yamValue = http://news.hoteastday.com/a/amount.mul(internalDecimals).div(yamsScalingFactor); // increase initSupply initSupply = initSupply.add(yamValue); // make sure the mint didnt push maxScalingFactor too low require(yamsScalingFactor从代码可知 , mint 函数在每次铸币时都会更新 initSupply 的值 , 而这个值是根据 amount 的值来计算的 , 也就是铸币的数量 。
现在 , 我们已经分析完所有的流程了 , 剩下的就是把所有的分析串起来 , 看看这次的漏洞对 YAM 产生了什么影响 , 对上文的流程图做拓展 , 变成下面这样:
本文插图
整个事件的分析如上图 , 由于rebase的时候取的是上一次的 totalSupply 的值 , 所以计算错误的 totalSupply 的值并不会立即通过 mint 作用到 initSupply 上 , 所以在下一次rebase前 , 社区仍有机会挽回这个错误 , 减少损失 。 但是一旦下一次rebase执行 , 整个失误将会变得无法挽回 。
通过查询 Etherscan 上 YAM 代币合约的相关信息 , 可以看到 totalSupply 已经到了一个非常大的值 , 而 initSupply 还未受到影响 。
前车之鉴
这次事件中官方已经给出了具体的修复方案 , 这里不再赘述 。 这次的事件充分暴露了未经审计 DeFi 合约中隐藏的巨大风险 , 虽然 YAM 开发者已经在 Github 中表明 YAM 合约的很多代码是参考了经过充分审计的 DeFi 项目如 Compound、Ampleforth、Synthetix 及 YEarn/YFI , 但是仍无可避免地发生了意料之外的风险 。
DeFi 项目 Yam Finance (YAM) 核心开发者 belmore 在推特上表示:「对不起 , 大家 。 我失败了 。 谢谢你们今天的大力支持 。 我太难过了 。 」但是覆水已经难收 , 在此 , 慢雾安全团队给出如下建议:
1、由于 DeFi 合约的高度复杂性 , 任何 DeFi 项目都需在经过专业的安全团队充分审计后再进行上线 , 降低合约发生意外的风险。 审计可联系慢雾安全团队(team@slowmist.com)
2、项目中去中心化治理应循序渐进 , 在项目开始阶段 , 需要设置适当的权限以防发生黑天鹅事件 。
【|慢雾:DeFi 当红项目 YAM 闪电折戟,一行代码如何蒸发数亿美元?】来源链接:mp.weixin.qq.com
推荐阅读
- 天天向上|他曾是当红歌手,巅峰期退出《天天向上》,如今在奶茶店站台!
- 升级|《我们恋爱吧》还有第二季?拟邀阵容升级,当红明星都来嗑CP啦
- 电视剧|帅哥vs当红男星,高颜值的渣攻渣受,刷新三观,结局HE
- 武汉生活|70岁的王天成,凭什么让很多当红明星汗颜?
- 明星八卦|李佳明:当红时赴美镀金,后被尼格买提抢走饭碗,今现状如何?
- 消息资讯|AEX看点直播间丨掀起新浪潮,维基链一体化DeFi赋能治理币WGRT!
- 不温不火|曾是当红主持人,因念错赞助商名字被“雪藏”,今30岁不温不火
- 芷翔生活娱乐|杨紫关系最好的四位男明星,前三位正当红,唯独一直不温不火
- DeFi|后DeFi时代的联手与融合,看OM如何借助OKEx一飞冲天!
- 主持人|当红主持被《天天向上》除名!涂着厚粉底和口红,和网红抢饭碗