在这次 APE 空投活动中,有科学家通过闪电贷套利获得巨额收益,这篇文章就来详细分析一下这笔套利交易的过程。
这次套利能够成功的前提在于 APE 的空投合约是根据用户的实时持仓来发放空投,而不是快照。可以看看我之前的这篇文章,详细分析了 APE 的空投合约。
套利交易分析
先来看看这次套利的主要步骤:
- 先从 OpenSea 购买了 ID 为 1060 的 BAYC NFT(这是前一笔交易)
- 创建合约,并将 1060 的 BAYC 转入合约
- 通过 NFTX 平台的闪电贷功能 FlashMint 出 5.2 个 BAYC token(这个是 NFTX 平台发行的碎片化代币,下面用 BAYC(x) 表示,以区分正常的 BAYC NFT)
- 用这 5.2 个 BAYC(x) 在 NFTX 平台 redeem 5 个 BAYC NFT,剩余 0.2 个 BAYC(x) 用作平台手续费
- 此时套利合约拥有 6 个 BAYC,根据这 6 个 NFT 领取相应数量的 APE
- 将这 6 个 BAYC 再从 NFTX 平台 mint 成 6 个 BAYC(x)
- 其中 5.2 个 BAYC(x) 用作闪电贷还款(此时平台没有手续费),0.6 个作为 mint 手续费,剩余 0.2 个则在 SushiSwap 中出售
- 转出领取的所有 APE 到套利者地址中
上述步骤可以对应到 EtherScan 的 Token 流转图中:
注意这里只显示了 ERC20 的流转过程。
同时,我们也可以查看整个交易的堆栈信息,确认交易过程:
整个套利交易我们就介绍到这里,可以看到套利者非常熟练地调用了 NFTX 平台的各个接口。接下来我们就来看看 NFTX 到底是个什么平台,方便我们也能够在未来的某一天利用上这个平台为自己创造巨额收益~
NFTX 平台相关分析
先看看文档:
从文档中我们可以看出,NFTX 是一个为 NFT 创造流动性的平台,用户可以将 NFT 存到平台中,获取到平台发行的 ERC20 代币 vToken,比例是 1:1。也就是说用户可以将 NFT 换成 vToken,也可以将 vToken 换成 NFT。我们前面的合约分析也说明了这一点。
我们接下来再看看它的代码,看看到底是怎么实现的。
闪电贷代码:
redeem 代码:
mint 的代码:
这三个方法是此次套利过程中主要调用的方法,可以看到整体的逻辑还是比较清晰的。这里有一个小细节需要注意一下:redeem 和 mint 方法都有防重入锁,而 flashLoan 是没有的。这一点很关键,因为 redeem 和 mint 是顺序执行,且这两个方法是被包在 flashLoan 中执行的,redeem 和 mint 之间的重入锁并不冲突,但是如果 flashLoan 也加上了重入锁,那么就与前两个方法冲突,交易是无法执行的。
总结
这次套利过程非常精巧,完美利用了 NFTX 这个平台的功能。可以看出套利者非常熟悉这个平台,主要也是 APE 的实时持仓空投规则帮了大忙,确实是可遇不可求了。