查看原文
其他

一行错误代码:4亿美元没了,区块链项目上线几天就也关闭了

软件质量报道 技术琐话 2021-08-08


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的工作。” 


 往期推荐:


技术琐话 


以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。本号由坐馆老司机技术团队维护。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存