据慢雾区情报,2020 年 12 月 29 日,Cover 协议价格暴降。

慢雾安全团队第一时间跟进相关事情并进行分析,以下为分析简略进程。

攻击流程简析

1、在 Cover 协议的 Blacksmith 合约中,用户能够经过 deposit 函数典当 BPT 代币

2、攻击者在第一次进行 deposit - withdraw 后将经过 updatePool 函数来更新池子,并运用 accRewardsPerToken 来记载累计奖赏;

3、之后将经过 _claimCoverRewards 函数来分配奖赏并运用 rewardWriteoff 参数进行记载;

4、在攻击者第一次 withdraw 后还留有一小部分的 BPT 进行典当;

5、此刻攻击者将第2次进行 deposit,并经过 claimRewards 提取奖赏;

6、问题出在 rewardWriteoff 的详细核算,在攻击者第2次进行 deposit - claimRewards 时取的 Pool 值定义为 memory,此刻 memory 中获取的 Pool 是攻击者第一次 withdraw 进行 updatePool 时更新的值;

7、因为 memory 中获取的 Pool 值是旧的,其对应记载的 accRewardsPerToken 也是旧的会赋值到miner;

8、之后再进行新的一次 updatePool 时,因为攻击者在第一次进行 withdraw 后池子中的 lpTotal 已经变小,所以最终取得的 accRewardsPerToken 将变大;

9、此刻攻击者被赋值的 accRewardsPerToken 是旧的是一个较小值,在进行 rewardWriteoff 核算时取得的值也将偏小,但攻击者在进行 claimRewards 时用的却是池子更新后的 accRewardsPerToken 值;

10、因此在进行详细奖赏核算时因为这个新旧参数之前差值,会导致核算出一个偏大的数值;

11、所以最终在依据核算结果给攻击者铸造奖赏时就会额定铸造出更多的 COVER 代币,导致 COVER 代币增发。

详细accRewardsPerToken参数差值变化如下图:

Cover协议被黑简要分析:一次由存储状态引发的惨案

视野开拓

在未经修正的古典模型中, 各贸易国家的经济结果往往是单一的。包括国际竞争在内的自由市场力量决定着商品在何处生产。 从单一的结 果中还可以推出各国确定的和理论上可预测的财富程度。 产出很少的国 家只有很少的东西可供国内消费和国际贸易, 生活水平也很低。 经济学教授代代相传的一个著名且相当古老的例子可以说明这一 点: 如果英国和葡萄牙相互交换葡萄酒和布匹, 根据各自的自然优势, 葡萄牙最终将生产葡萄酒, 而英国则生产布匹。 这就是最终的唯一结 果。 日照不足的英国生产葡萄无论在数量和质量方面都无法使英国的葡 萄酒生产商在价格和质量竞争中战胜葡萄牙的葡萄酒生产商。 结果是英 国的葡萄酒生产商将退出酿酒业, 除非葡萄酒的需求超出葡萄牙的生产 能力。 但是英国的毛羊以及历史悠久的纺织能力使英国在纺织业方面具 有比较优势, 而这种比较优势又使英国可以在纺织业中获得成功。 正如上述例子表明的, 在古典贸易经济模型中, 一国生产什么产品 完全是预先注定的。 由于一国只有作为特定产品的最优供应商才能成为 产业中的主要生产商, 因此, 上述结果总能符合所有贸易国普通大众的 经济利益。 所谓“最优”就是以最低成本生产固定质量的产品, 或者在成 本既定的条件下, 生产较高质量的产品。 这一经济学理论最著名的结论就是, 上述唯一的结果往往使各贸易 国的消费者福利和生产效率达到最优水平。-《全球贸易和国家利益冲突》

发表回复

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