木星链 木星链
Ctrl+D收藏木星链
首页 > FTX > 正文

BAS:回天乏术,一开始就注定失败的YAM投票拯救行动

作者:

时间:1900/1/1 0:00:00

36小时内,眼看他起高楼,几分钟内,眼看他楼塌了。北京时间08月13日上午03时整,备受瞩目的DeFi项目YAMFinance宣布启动流动性挖矿,仅仅一天时间锁仓资产价值就超过了6亿美元,其锁定资产增量和增速都达到了近乎癫狂状态。且照此发展,一些早期给池子注入流动性的羊毛党年利率甚至可逼近200倍,其疯狂程度可见一斑。不过,正当大家都陷入挖矿狂欢的时候,意外发生了。北京时间08月13日凌晨,YAMFinance发现其智能合约的弹性供应机制存在漏洞,导致合约第二次rebase触发时会铸造大量额外代币,这意味着未来社区将无法获得足够的代币来执行任何治理操作,YAM将成为一个失控的机器,最终将彻底失去社区用户的信任。该如何拯救我们的YAM小红薯呢?

在发现漏洞后,YAM团队发起了“拯救行动”,称他们需要16万委托投票才能提交治理提案,于是向社区发起呼吁投票。很快,这场轰轰烈烈的社区投票行动就完成了。然而,就在大家以为只是虚惊一场的时候,北京时间08月13日下午16时01分,YAM创始人BrockElmore却发推特称,对不起大家,我失败了。这究竟是怎么回事呢?

知情人士:Ordinals生态钱包Xverse疑似存在安全漏洞:6月7日消息,据推特 KOL HGEABC 披露,Ordinals 生态钱包 Xverse 的种子短语存储方式设计存在缺陷,或已泄露,已联系 Xverse 官方团队正在处理,并建议用户尽快将 BTC、Ordinals 和 BRC20 Token资产移出 XverseApp。[2023/6/7 21:22:14]

PeckShield安全人员介入分析后,迅速定位到问题的本质在于:弹性供应机制存在一个代码公式的错误,致使第二次rebase触发时系统会自动增发10^18个新代币,如果行情一直保持高位的话,那么以后的每次rebase触发时都会进行指数级的增发,这将使小红薯YAM的数量变成一个可怕的天文级数字。这意味着,无论后期社区怎样委托投票,都无法获得足够的投票量对系统进行控制,整个系统将陷入失控无主状态。本来YAM官方号召广大YAM持有人通过代理投票的方式,一起完成此次投票“拯救行动”,以修复这个存在的漏洞。然而,PeckShield安全人员进一步分析发现,当YAM官方开始发出呼吁的时候,这次拯救行动其实就已经注定失败了。原因有二:1)时间来不及:YAM官方或许忽略了一点,在其提案投票拯救行动准备工作完成后,也需要至少12.5个小时才能被执行生效,而按照现在的时间节奏,当其执行生效时,第二次rebase早已触发。2)新部署治理合约无法被有效执行:由于第二次rebase触发,因此官方原先预期要执行的新治理合约到了执行时间后,却发现由于投票总量远远无法达到合约约定的总量的4%,故而无法被有效执行。究竟是为何呢?接下来上技术干货:技术概要

美股三大指数集体收涨,标普500指数涨0.34%:金色财经报道,美股三大指数集体收涨,纳指涨0.74%,标普500指数涨0.34%,道指涨0.1%。[2022/9/15 6:57:07]

首先介绍下YAM智能合约的弹性供应机制:1)系统会根据市场价格浮动来动态调整代币的供应量,当市价上涨时则按比例增发代币,以降低单位代币的价值,直至降至1美元。2)每天分别执行两次rebase,每次rebase会改变代币供应量,根据市场现价增发或销毁一定量的代币。再说一个实施提案的关键因素:持有者进行委托投票,投票数超过总量的1%,则提案才可以进行执行排列,且按合约约定执行排列时长需要等待12.5小时,而提案执行时,则投票需要超过总量的4%。如此新治理合约才能执行生效,项目才能继续正常运转。有了以上几个技术要点的铺垫,我们再来看一下,YAM官方的跟进时间表,就能明白此次拯救行动为什么注定会失败。如下图时间线所示:

②是第一次rebase触发的时间,由于合约的bug导致totalsupply资产发生异常暴涨,官方发现BUG存在并进行了披露。③是官方宣布提议部署新治理合约的时间,在此之后社区开始启动投票。④是投票目标初步完成,新治理合约进入执行排列的时间,自此等待执行12.5小时合约正式执行。⑤是第二次rebase的触发时间。⑦是其新治理合约投票通过后正式执行的时间。⑥在第二次rebase触发后的第31分钟时,或许是项目方发现了已经无力回天了,提案取消成功,项目方正式宣布YAM失败。①之后的绿色区域是投票和提案拯救行动可以成功的“黄金急救期”,需要整个拯救行动准备工作在第一次rebase触发之前半小时内完成。。这意味着,YAM官方应在第一次rebase详细过程分析首先我们看下当第一次rebase发生了什么:

德国退税公司Tax Free与Legoworld合作推出NFT退税+旅游相关业务:5月25日消息,德国最大传统退税公司Tax Free Germany GmbH、旅游公司Eastsong Gernamy等与Legoworld合作布局元宇宙,进军Web3.0领域。

据悉,Tax Free与区块链沙盒游戏Legoworld联合推出首个NFT退税+旅游相关业务。将通过Gamefi+NFT为传统用户提供更便捷的衍生服务。Legoworld是一款以NFT+LEGO风格进行虚拟身份认证,继承Sandbox的沙盒建造,模拟经营类链游,已经发布多个传统地产,互联网企业的入驻合作,波兰运动员 LucjanBiaszozyk建立首个Legoworld运动系列NFT虚拟IP。(WDwire)[2022/5/25 3:41:17]

图1.第一次rebase资产变化如上面链上信息所示,当第一次rebase之后,totalSupply从3,500,000*10^18暴涨到一个极大值。我们进一步分析代码,看下在代码中发生了什么:首先从链上信息我们能看到rebase操作调用的是YAMRebaser合约的YAMRebaser::rebase()函数,我们最终发现它通过调用YAM合约的rebase()函数重新计算totalSupply,在第340行的totalSupply赋值操作可以看到,这一行代码有个明显的错误——没有除BASE,从而导致totalSupply的值暴增了10^18倍。YAM官方在第一次rebase以后发现了这个问题,于是披露rebasebug事件启动了投票拯救行动。

今日恐慌与贪婪指数为11,等级仍为极度恐慌:金色财经消息。今日恐慌与贪婪指数为11(昨日为12),恐慌程度较昨日小幅上升,等级仍为极度恐慌。注:恐慌指数阈值为0-100,包含指标:波动性(25%)+市场交易量(25%)+社交媒体热度(15%)+市场调查(15%)+比特币在整个市场中的比例(10%)+谷歌热词分析(10%)。[2022/5/25 3:39:44]

图2.YAMToken::rebase()得到一个异常大的totalSupply值而在12小时之后,YAM又触发了第二次rebase,这个数据又是以基于错误的totalSupply来计算的,从而导致initSupply的数值同样出现了异常。

图3.第二次rebase资产变化我们继续分析造成initSupply异常的成因,关键在上面提到过YAMRebaser::rebase()函数,这个函数实现的主要逻辑:先基于yam.totalSupply()计算出本次rebase需要增发的YAM数额mintAmount,在afterRebase()函数经过数层调用后进入YAM的_mint()函数,基于异常的mintAmount给initSupply进行赋值。由于在第一次rebase中,totalySupply已经变成一个极大值,所以基于此异常值的后续一列操作最终导致initSupply也计算错误,变成了一个天文级的数值。

报告:第一季度游戏行业投资额达35亿美元,区块链相关项目占比逾50%:5月18日消息,游戏行业咨询公司Digital Development Management(DDM)发布的电子游戏行业投资报告显示,电子游戏行业的投资交易在2022年第一季度创下35亿美元的新纪录,部分原因是对基于区块链的技术和游戏的兴趣。基于区块链的游戏和技术公司推动超过50%的投资额,尤其是来自非传统游戏行业投资者的早期投资。

并购活动也很活跃,有四笔交易的价值超过10亿美元,84笔交易的总价值为79亿美元。第一季度投资和并购(M&A)交易总额为114亿美元。

第一季度最大的一笔私募投资是Yuga Labs的4.5亿美元融资,超过25位投资者支持Yuga Labs即将推出的元宇宙游戏。总体而言,区块链领域的交易产生17亿美元的私募投资,占总额的48%,其中不包括ICO或者代币公募等形式的区块链相关项目融资。报告称,“显而易见的是,那些游戏项目包含Play-to-earn机制、代币和/或NFT的公司继续推动投资。他们的交易的多样性以及股票、代币和/或NFT的发行已经改变游戏公司筹集资金的方式。”(福布斯)[2022/5/18 3:23:24]

图4.YAMRebaser::rebase()用错误的totalSupply计算initSupply当第一次rebase出现异常时,项目方已经发现问题并决定提出一个修复系统的提案,希望通过投票的方式将此提案排入执行队列并且执行。当此题案收到足够多的投票,治理合约允许任何人通过调用GovernorAlpha::queue()函数将此题案排入执行队列。但由于此治理合约代码逻辑的实现,导致无论是在第二次rebase之前或是之后进行修复,都无法正确执行这个拯救行动。为什么说项目方准备工作完成的太晚了?

我们看下图中的GovernorAlpha::queue()代码,我们注意到了在调用_queueOrRevert函数之前的第224行中设置变量eta=currenttimestamp+timelock.delay,这就使得生效时间必然在加入队列的12.5小时以后,而第二个rebase时间是与第一次间隔12小时,这就意味着要执行成功需要将拯救行动提前到第一次rebase之前至少半小时以上,否则将永远无法执行。

图5.GovernorAlpha::queue()函数设置eta又为什么说已经做出的拯救行动,根本无济于事呢?当触发合约GovernorAlpha::execute()时首先会先执行state函数来获得当前提案状态。

图6.GovernorAlpha::execute()检测提案状态在下面的state()函数第330行,如果proposal.forVotes<=againstVotes(),提案状态被设置为失败。

图7.GovernorAlpha::state()执行返回Defeated错误从代码中能看出来,项目方在设计系统时,投票数被设计为必须大于initSupply总量的4%,此提案才能是合法的状态,如下图所示。然而,当第二次执行rebase以后,initSupply已经被搞成一个极大值。这就导致了,投票票数永远不可能>=quorumVotes(),从而总是返回Defeated。

图8.GovernorAlpha::quorumVotes()返回一个错误的异常值除了提案状态异常的问题之外,如图9、图10所示,当第二次rebase发生以后,由于GovernorAlpha::propose()检查投票数必然小于proposalThreshold(1%的initSupply),因此新的提案也再也无法被提出,更遑论要投票执行了。

图9.GovernorAlpha::propose()检测投票数是否大于1%initSupply

图10.GovernorAlpha::proposalThreshold()返回1%initSupply总结

此次YAM漏洞事件,最终造成治理合约中75万枚yCRV被永久锁定,而且短时间内的急速暴跌和无力回天的局面,不知道有多少人被埋在了价格高点,其疯狂程度成了如今DeFi流动性挖矿的最真实写照,其残酷魔幻程度何尝又不是?倘若项目方在部署合约之前但凡测试过一次rebase流程,必定能捕捉到漏洞的存在。足以见得,DeFi项目做安全审计的重要性。综上分析,PeckShield想借此劝诫诸君,在区块链世界里,务必要对每一行合约代码保持敬畏,因为任何细微的疏漏都可能造成无法挽回的局面。毕竟,代码是人写的,漏洞也很难被彻底避免,因此需要项目方在合约部署上线前就做好充分的测试和第三方安全审计工作,这会帮助其更早发现并排查合约代码潜在的安全漏洞,不至于等到,漏洞发生后,亡羊补牢,为时已晚

标签:BASBASEEBASEREBASE国内怎么下载coinbaseMCBASE价格DEBASErebase币

FTX热门资讯
YFI:如何一键参与YAM挖矿,年化真有14049%?

一、YAM啥是YAMYAM,YFI+AMPL。具体来说,就是用了YFI的挖矿产出方式,但是支持几乎所有主流DeFitoken;然后挖出的YAM,和AMPL一样的通胀通缩模式.

1900/1/1 0:00:00
BTC:比特大陆内部信:吴忌寒违法取消詹克团10倍表决权

8月11日,北京比特大陆科技有限公司发布全员内部信,向全体员工通报开曼层面的法律诉讼进展。依照开曼比特大陆公司申请在香港上市时所披露的章程规定,开曼比特大陆实行AB股结构,詹克团持有36.00%.

1900/1/1 0:00:00
数字资产:谷燕西:从Uniswap看未来的数字资产交易所

证券交易所的模式在不断的进化当中。技术的应用在不断的改变交易所的运行模式。在过去的几十年中,交易所的经营模式经历了从交易池中的面对面的交易方式发展到完全电子化的交易方式.

1900/1/1 0:00:00
FIL:Filecoin这把「火」能烧多久?

“‘财富效应’聚集的地方,往往充斥着各种谎言与局,一不小心就会踩雷。”杨姐谈及与IPFS&Filecoin矿机的纠葛,句句在理又扎心.

1900/1/1 0:00:00
PEN:雷军/顺为投资了哪些虚拟货币项目?成功投资OKCoin也有多个项目倒闭

“站在风口上猪都能飞起来”,秉持风口论的雷军,自然不愿错过加密货币的红利。在虚拟货币/加密货币领域,雷军主要是通过顺为资本进行布局,不像360、猎豹等亲自全力投身其中.

1900/1/1 0:00:00
以太坊:三分钟学习以太坊神器:etherscan区块链浏览器

以太坊是当前除了比特币以外,最知名的公链,其生态极其丰富,被称为区块链2.0的代表。那么,对于这样一个公链,我们除了阅读其白皮书、黄皮书外,还有哪些了解其的方式呢?这里,我就为大家介绍一下eth.

1900/1/1 0:00:00