并非黑客攻击“幕后元凶”是它 – BDP 无法提现事件分析

Big Data Protocol 是为 Web3.0 数据市场提供动力的 DeFi 协议;该协议通过由专业数据提供商组成的网络,对具有商业价值的数据进行令牌化,并使数据令牌在 Uniswap 上具有流动性;用户通过为数据令牌提供流动性来赚取数据。挖矿机制上线 亿美元,位列 DeFI 项目锁仓量榜首。

消息发出后,大量用户通过直接调用合约的方式(emergencyWithdraw)提取挖矿资产,但无法提取挖矿所得的 BDP 奖励。

当用户调用合约的 withdraw 函数领取奖励时,合约内会调用 updatePool 函数。

updatePool 函数主要用于根据当前区块时间点,更新相关数据,并向质押功能合约铸币,用于奖励分发

mint 函数中会校验 seedPoolAmount 变量大于 0,否则全部回滚。但由于 seedPoolAmount 的奖励在结束挖矿之前已全部分发,所以用户调 ? 合约时 ? 法增发代币,交易直接 revert,导致提取奖励失败。

通过对整个事件分析来看,本次事故并未造成用户的本金损失;主要原因在于对合约提现函数的依赖条件考虑不充分,项目上线时应当模拟合约的不同状态,进行充分测试验证。

目前,由于提现失败造成社区的恐慌,大量用户通过合约的 emergencyWithdraw 函数提取本金;Big Data Protocol 官方也给出了相应的解决措施,更新前端 UI 便于用户提取挖矿资产,对于挖矿未提取的 BDP,后续补发所欠奖励部分。

作者:创宇区块链安全实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:返回搜狐,查看更多

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注