一行错误代码:4亿美元没了,区块链项目上线几天就也关闭了
YAM:不到一天就吸引了4亿美元的表情符号。
而一天之后,2020 年 8 月 13 日,知名以太坊 DeFi 项目 YAM 官方通过 Twitter 发文表明发现合约中存在漏洞,24 小时内价格暴跌 99% 。
在创建者透露软件错误实际上否决社区治理后,问世才仅两天的去中心化加密货币:YAM于周三崩盘。
YAM项目在周四的帖子中解释道:“8月12日周三下午6点左右,我们发现了YAM弹性供应调整(rebasing)合约中的一个错误,这会导致生成的YAM比原定出售给Uniswap YAM/yCRV池的YAM多得多,因而将大量多余的YAM发送到协议reserve。”
“鉴于YAM的治理模块,该错误将使其无法达到法定人数,这意味着将无法采取治理行动,而且资金库中的资金将被锁定。”
错误来自这一行的代码:
totalSupply = initSupply.mul(yamsScalingFactor);
本应该是:
totalSupply = initSupply.mul(yamsScalingFactor).div(BASE);
YAM是一个去中心化融资试验性项目,它基于假定的智能合约(根据资产分配投票)实施治理系统(用于更改协议变化)。加密货币公司Summa的创始人James Prestwich解释道:“分配逻辑中的一个错误导致合约生成的代币远远超出了预期的数量。”
一个错误导致合约生成的代币远远超出了预期的数量 的 10^18的倍。
“这些代币归治理合约本身所有,因此无法投票。由于它们存在且无法投票,因此不可能达到选民参与的最低标准。这意味着治理被永久禁用,智能合约持有的所有其他代币则被永久锁住。”
该代码错误把价值约75万美元的Curve(yCRV)代币锁在了YAM资金库中,这些资产原本用作储备货币,以支持YAM代币的价值。
YAM的创建者坚持认为,该错误并没有直接影响所谓的质押(staking)合约中的YAM余额或资产,质押合约将加密货币锁定一段时间以换取一些报酬。不过虽经再三努力,还是无法重新获得对YAM资金的控制权,Yam Finance的联合创始人Brock Elmore在推特上表示道歉。
由于没有一线希望能重新控制YAM监管体系,其代币(周三达到了183.44美元的理论价值)暴跌至区区1.04美元。该项目目前流通的YAM代币近2900万个,昨天的市值一度高达约5.25亿美元。如果您能找到YAM买家,其价值似乎仍在2900万美元左右。
加密货币投资者似乎并非没有可能预料到这种情况的出现。该项目的GitHub存储库明确声明并没有对代码进行审核。项目的README.md文件解释道:“贡献者已尽最大努力确保这些合约的安全性,但做不了任何保证。仅凭几双肉眼对它进行了现场检查。因而很有可能存在错误。”
访客访问时,关联网站yam.finance也会加载弹出警告。Prestwich:“该错误很可能被外部的深入审查或审核所发现。”他表示,这个项目之所以引起了关注,是由于创建者动用了与加密货币界颇有影响力的人士之间的关系。“基于行业标准的测试做法无疑本可以发现该错误。”
YAM Finance并没有因最初的失败而气馁,旨在再尝试一下。
这家加密货币公司周四在事后分析报告中表示:“我们将设立Gitcoin grant,以协调社区出资审核YAM合约的工作。如果实现了资金目标,一旦完成审核,我们计划通过来自YAM的迁移合约来支持发布YAM 2.0的工作。”
往期推荐:
60份架构文档荟萃(分布式事务-缓存-消息-搜索、电商、支付,多活...)
我是CTO,我为CEO吹过的牛逼买单
写给社招员工:如何在华为活下来
分布式系统与单节点系统的本质区别是什么?
饿了么4年 + 阿里2年:研发路上的一些总结与思考
……
技术琐话
以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。本号由坐馆老司机技术团队维护。