查看原文
其他

小白十问《PancakeBunny被黑简析》

不管不理的员 村民活动中心 2021-09-18


相信不少朋友都看到了这两篇文章——至少听说了 PancakeBunny 的事故。


今天下午,有村民在群里转发了《代币闪崩,差点归零 - PancakeBunny 被黑简析》。文章用 11 个步骤拆解了这次攻击事件。有两位村民分别表示:


> 看到4就放弃了

> 打开就放弃了


这个时候,作为村民活动中心最坚韧的小白,我不管不理的员(微信:LongLongBTC)被激发了。我想学习一下,我想挑战一下。这是公众号迄今为止我写得最费力的文章,因为我实在是太菜了——甚至我写出来的东西都不确定是不是对的。他有价值的地方在于,这是一个小白亲自动手查出来的东西,哪怕是弯路,我也认了。欢迎大家批评指正。欢迎加我微信甲流。本文的主要内容就是,针对慢雾科技的文章,逐条提出问题并搜索得到解答。


以下是正文。斜体是原文摘抄而来;标黄的是问题,方便快速定位

攻击过程分析

  1. 攻击者先发起一笔交易,使用 0.5 个 WBNB 与约 189 个 USDT 在 PancakeSwap 中添加流动性并获取对应的 LP,随后将 LP 抵押至 PancakeBunny 项目的 VaultFlipToFlip 合约中。

  • 问题1:什么是 WBNB?

WBNB 就是 Wrapped BNB。我找到一段英文的介绍是这样的:

翻译过来就是

BEP20 是一个标准,允许币安智能链 BSC 上的任何代币被其他应用程序使用:从钱包到去中心化交易所 DEX 都是一致的。WBNB 遵循 BEP20 标准,只是没有所有者。

在 CoinMarketCAP 有一个关于 WBNB 的页面https://coinmarketcap.com/zh/currencies/wbnb/

比如 土澳大狮兄的文章 在讲羊驼挖矿的时候,就说

资产时 BNB 时,开仓不成功你会发现 BNB 没有在你的钱包内显示……系统开仓时是把你的 BNB 转换成 wBNB,而你的钱包可能没有设置显示 wBNB。如果你的钱包支持显示 wBNB,打开显示,如果你的钱包不支持 wBNB 币种,将 wBNB 添加到你的钱包里。

  • 再多问一句:什么是 Wrapped Token?比如 WBNB 就是 Wrapped BNB。

在币安学院有一段介绍

A wrapped token is a cryptocurrency token pegged to the value of another crypto. It’s called a wrapped token because the original asset is put in a wrapper, a kind of digital vault that allows the wrapped version to be created on another blockchain.

What’s the point? Well, different blockchains offer different functionality. And they can’t talk to each other. The Bitcoin blockchain doesn’t know what’s happening on the Ethereum blockchain. However, with wrapped tokens, there can be more bridges between different blockchains.

链接:https://academy.binance.com/en/articles/what-are-wrapped-tokens

  • 问题二:什么是 PancakeSwap?

PancakeSwap 是币安智能链 BSC ( Binance Smart Chain) 上的优秀的自动做市商 AMM 与流动性挖矿项目。

很多交易所都叫什么什么 SWAP,翻译成交换交易。A swap is an agreement between two parties to exchange sequences of cash flows for a set period of time. 交换交易 (Swap)是一种金融衍生品,指交易双方约定在未来某一期限相互交换各自持有的资产或现金流的交易形式,比如外汇交换交易和利率交换交易。

https://www.investopedia.com/articles/optioninvestor/07/swaps.asp

这是 PancakeSwap 的交易界面。

  • 问题3:什么是添加流动性?

添加流动性 (Add Liquidity)

币安学院的 Liquidity 解释https://academy.binance.com/en/articles/liquidity-explained

CoinMarketCap 的 Liquidity 解释https://coinmarketcap.com/alexandria/glossary/liquidity

所以币安和 CoinMarketCap 是两个很好的小白学习资料。

  • 问题4:什么是 LP?

LP tokens represent a crypto liquidity provider's share of a pool, and the crypto liquidity provider remains entirely in control of the token. For example, if you contribute $10 worth of assets to a Balancer pool that has a total worth of $100, you would receive 10% of that pool's LP tokens.

LP 代币代表了加密货币流动性提供者在资金池中的份额,而加密货币流动性提供者仍然完全控制着该代币。例如,如果你向一个总价值为 100 美元的 Balancer 资金池贡献价值 10 美元的资产,你将获得该资金池的 10% 的 LP 代币。

https://www.gemini.com/cryptopedia/liquidity-provider-amm-tokens

  • 问题5:LP 如何抵押?【暂时不太懂。】

  • 问题6:PancakeBunny 是什么?

PancakeBunny is a new and rapidly growing DeFi yield aggregator that is used for PancakeSwap. The PancakeBunny protocol empowers farmers to leverage their yield-seeking tendencies to optimize yield compounding strategy on BSC.

PancakeBunny 是一个新的、快速发展的 DeFi 产量汇总器,用于 PancakeSwap。PancakeBunny 协议使农民能够利用他们的产量追求倾向来优化 BSC 上的产量复合战略。

https://pancakebunny-finance.readthedocs.io/en/main/faq.html

  • 问题7:VaultFlipToFlip 合约是什么?

没找到。搜到的都是关于此次事故分析的。

  1. 在 LP 抵押完成后,攻击者再次发起另一笔交易,在这笔交易中攻击者先从 PancakeSwap 的多个流动性池子中闪电贷借出巨量的 WBNB 代币,并从 Fortube 项目的闪电贷模块借出一定数量的 USDT 代币。随后使用借来的全部 USDT 代币与部分 WBNB 代币在 PancakeSwap 的 WBNB-USDT 池子添加流动性,并把获得的 LP 留在 WBNB-USDT 池子中。

  • 问题8:什么是流动性池子?

  • 问题9:什么是闪电贷?什么是 Fortube 项目?这个项目也有闪电贷?

慢雾在 Medium 的英文原文是 In this transaction, the attacker first borrows a huge amount of WBNB tokens from the multiple liquidity pools of PancakeSwap and borrows a huge amount of WBNB tokens from the Fortube project.

所以闪电贷应该是这个模块的一个功能?

https://slowmist.medium.com/slowmist-pancakebunny-hack-analysis-4a708e284693

  • 问题10:“并把获得的 LP 留在 WBNB-USDT 池子中”是与第一步的“将 LP 抵押……”相对应的吗?也就是说 LP 有不同的处理方式?

是的

  1. 由于在步骤 1 攻击者已经在 VaultFlipToFlip 合约中进行了抵押,因此攻击者在添加完流动性后直接调用 VaultFlipToFlip 合约的 getReward 函数来获取 BUNNY 代币奖励并取回先前抵押的流动性。

  • 问题11:(前面已经问过了)VaultFlipToFlip 合约是什么?为什么可以直接获取 BUNNY 代币奖励?


  1. 在进行 getReward 操作时,其会调用 BunnyMinterV2 合约的 mintForV2 函数来为调用者铸造 BUNNY 代币奖励。

  • 问题12:铸造 BUNNY?这些是新产生的 BUNNY 吗?

这一部分的英文是 mint BUNNY token rewards for the caller

直接搜索“how to mint pancakebunny”,第一个文本结果就是 PancakeBUNNY 的文档,链接是 https://pancakebunny-finance.readthedocs.io/_/downloads/en/main/pdf/

其中有 5 次出现 mint。

BUNNY is minted via the project’s smart contracts.

翻译过来就是

BUNNY 是通过项目的智能合约铸造的。

当用户对他们在某个池子里的利润执行索赔时,他们会收到利润价值的 70% 在相应的自动复合的农场代币,并获得 30% 的利润价值的 BUNNY。

这 30% 的利润价值是以相当于 BNB 的美元计算的,每 1 个 BNB,用户就可以得到 3 个 BUNNY。

  1. 在 mintForV2 操作中,其会先将一定量 (performanceFee) 的 LP 转至 WBNB-USDT 池子中移除流动性,但由于在步骤 2 中攻击者把大量的 LP 留在了池子中,因此 BunnyMinterV2 合约将会收到大量的 WBNB 代币 与 USDT 代币。

    (步骤6-11基本没有新的问题,所以省略。)

最后,汇总一下用到的资源
https://coinmarketcap.com/zh/currencies/wbnb/
https://academy.binance.com/en/articles/what-are-wrapped-tokens

https://slowmist.medium.com/slowmist-pancakebunny-hack-analysis-4a708e284693

https://www.gemini.com/cryptopedia/liquidity-provider-amm-tokens

https://academy.binance.com/en/articles/liquidity-explained
https://coinmarketcap.com/alexandria/glossary/liquidity
deepl.com



好嘞,以上基本上就是我的学习过程。后面有些疑问还没有得到解答,不过整体上我已经对于这个攻击事件有些大概了解了。欢迎大家关注我的公众号村民活动中心(longlonglongBTC)、扫码加我的微信(LongLongBTC),一起探讨学习。


我同时在做一个 DEFI 小白互助学习群。今天是第六天了。明天之后会解散这个群。不过根据大家的反馈,这个群很有价值,非常受用,所以我们可以会开通另一个学习群,形式会类似的。可以点击下面的文章,了解这是个什么样的正经学习群
这居然真的是个学习群!&滑点的作用是什么 | 小白群问答02
大家都在DeFi挣钱,钱从哪里来?会不会跑路| 小白群问答01
: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

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

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