木星链 木星链
Ctrl+D收藏木星链

NBS:通过代码看出DeFi中的套利机会

作者:

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

去中心化金融(英语:Decentralized finance,俗称 DeFi)是一种创建于区块链上的金融,它不依赖券商、交易所或银行等金融机构提供金融工具,而是利用区块链上的智能合约进行金融活动。在 DeFi 中存在了大量的套利机会,包括但不限于清算、差价套利。本文将分析部分去中心化交易所(DEX)以及聚合器(Aggregator)在合约代码上可能存在的套利机会。

Uniswap 是一个采用了自动做市商(AMM)模型的去中心化的加密货币交易平台,目前有两个流行的版本,分别是 Uniswap V2 和 Uniswap V3,我们将分别分析其中可能存在的套利机会。

Uniswap V2 Router

在 Uniswap V2 中,用户一般是通过 Router 合约与 Pair 合约以及 Factory 合约进行交互。通常来说 Router 只是会在交易中中转代币,而不会存储代币,但由于种种原因,如空投、转账失误导致 Router 合约中存储了某些代币。那么如何将这些代币提取出来呢?

通过分析 Uniswap V2 Router 02 合约的代码,发现存在 removeLiquidityETHSupportingFeeOnTransferTokens 函数:

该函数用于移除其中一个代币为 WETH 的流动性,其内部调用 removeLiquidity 函数时传入的 to 的地址为 address(this),也就是会将两种代币先转移到 Router 合约中,然后 Router 合约再将两种代币转移到指定的地址。这里虽然转移的 WETH 的数量是 removeLiquidity 返回的,无法修改,但是转移的另一种 Token 的数量是 balanceOf(address(this)),即 Router 合约中的该代币的余额。

因此根据上述分析,我们能得到一个套利的流程:

监控到 Router 02 合约存在 ERC 20 代币;

美众议院金融服务委员会通过代币托管法案:金色财经报道,美国众议院金融服务委员会表示《支付稳定币透明度法案》(Clarityfor Payment Stablecoins Actof 2023)和《保存代币法案》(Keep Your Coins Actof 2023)与其他五项金融相关法案一起获得通过。这些法案分别旨在对支付稳定币的发行提供监管,并确保允许加密货币用户在自我托管钱包中保管其资产。

金色财经此前报道,美国众议院金融服务委员会就《Clarityfor Payment Stablecoins Actof 2023》和《Keep Your Coins Actof 2023》进行审议投票。[2023/7/28 16:04:04]

调用 addLiquidityETH 添加该 ERC 20 代币和 WETH 的流动性;

调用 removeLiquidityETHSupportingFeeOnTransferTokens 移除流动性。

局限性:

如果该代币之前没有和 WETH 组流动性,当第一次添加流动性时会损失一小部分流动性(MINIMUM_LIQUIDITY);

暂时未发现提取 Router 02 合约中的 WETH 和 ETH 的方法。

Uniswap V2 Pair

Uniswap V2 Pair 合约,即所谓的流动性池,存储着提供流动性的 2 种代币,因为 Pair 合约中使用的是 reserve 来记录余额而不是 balanceOf(address(this)),因此有人直接误转流动性代币到合约中时会出现 balance 和 reserve 出现差值,而 Pair 合约中存在平衡函数 skim,我们可以调用该函数将这差值数量的代币给提取出来:

可以看到该函数会将流动性池中两种流动性代币的 balance 和 reserve 差值数量的代币转移到 to 地址。

建筑公司IBN将通过代币销售筹集资金建造马来西亚豪华度假村:4月27日消息,东南亚最大的建筑公司之一IBN Corp宣布将通过代币销售筹集资金建造豪华度假村酒店。

据悉,其最新价值十亿美元的项目IBN Highlands City将拥有豪华级别的酒店式公寓、商业区和五星级酒店。他们将通过出售代币来支付建造费用。

IBN Corp表示,资产代币化“有可能增加更广泛市场的投资者数量,与传统债券相比增加流动性,并减少执行大型项目所需的时间。”

Brazilian Luiz Góes是代币化项目的开发商,该项目将为马来西亚IBN Highlands City-Fortune大厦的建设提供资金。Góes是LGBank联合创始人和LYOPAY首席执行官。

将有325000枚Hasbrotel Token(HASHM)出售。该项目希望筹集3.25亿美元资金,完成日期为2025年。(Beincrypto)[2022/4/27 2:34:12]

流动性池中除了这两种代币外,也会因为误转、空投等原因存在其他的 ERC 20 代币,如何提取这一部分的代币呢?

对 Pair 合约的代码分析后发现无法提取这一部分代币,只有一种情况例外:当流动性池中存在该池的 LP 代币时。

出现这种情况我们可以调用 Pair 合约的 burn 函数,移除流动性,取出相应的两种流动性代币:

Uniswap V3 SwapRouter

Uniswap V3 的 SwapRouter 合约中也会存在和 Uniswap V2 Router 一样的情况,存在 ERC 20 代币和 ETH,但是幸运的是 SwapRouter 合约提供了几个函数可以方便提取其中的代币。

提取 ERC 20 代币我们可以使用 sweepToken 函数:

区块链游戏GEOPOLY通过代币私募融资300万美元:12月6日消息,区块链游戏GEOPOLY通过代币私募在48小时内筹集300万美元。GEOPOLY已发布其网站和白皮书。该项目已开始社区建设,计划于12月12日进行NFT预售。Beta V2发布将在2021年Q4和2022年Q1之间的某个时间进行。GEOPOLY代币也将在该时间段内推出,用户可以在游戏中使用。GEO代币将使用户能够在网络和链上以NFT的形式购买、升级和销售业务。GEO代币将于2022年1月在中心化交易所上线。

公开TGE(代币生成活动)将于12月15日在SushiSwap上进行,对所有人开放。PvP(玩家对玩家)原型发布、拍卖和候选发布计划于2022年进行。(Bitcoinist)[2021/12/6 12:54:14]

提取 ETH 我们可以使用 refundETH 函数:

也能够直接调用 unwrapWETH 9  函数将 WETH 还原成 ETH 并提取出来:

以上是对 Uniswap V3 SwapRouter 合约的套利分析。

在对 Uniswap V3 Pool 合约的代码进行分析后,发现没有办法提取其合约中的其他代币,也不存在如 Uniswap V2 Pair 合约中 balance 和 reserve 有差值的情况。

SushiSwap 最初是一个 Uniswap 的分叉项目,后来发展成为一个独立的生态系统,提供了许多不同的金融服务和产品。

因为 SushiSwap 和 Uniswap V2 一样,因此上述的针对 Uniswap V2 的套利手段对与 SushiSwap 也同样适用。

SushiXSwap

Akemona宣布与体育公司签订合同,通过代币化筹集1000万美元:金色财经报道,Akemona公布的两份合同显示,其已与一家美国足球联赛和一家体育基础设施公司合作,在其平台上筹集了 1000 万美元。Akemona 平台为小型企业、体育联盟、团队、运动员和艺术家提供了为他们的项目发行代币的能力,并通过购买这些代币来邀请他们的客户、粉丝和公众对项目进行投资。作为发行人,他们可以出售代表债券的代币,这些代币可以转换为会员权益、普通股或到期时以现金偿还。(prnewswire)[2021/10/5 17:24:40]

SushiXSwap 是 SushiSwap 推出的基于 LayerZero 的全链交易协议,支持的网络包括 Optimism、Arbitrum、Fantom、BNB Chain、Polygon 和 Avalanche。用户可以在支持的网络以及资产之间进行跨链交易。

如何提取 SushiXSwap 合约中的代币呢?

SushiXSwap 中主要的功能都通过 cook 函数实现,该函数提供了一系列的操作,支持操作列表如下:

其中有一个操作 ACTION_DST_WITHDRAW_TOKEN,其代码实现如下:

首先将传入 cook 函数的 data 进行解码,然后判断 amount 是否等于 0 ,等于 0 则将 amount 的值设为该合约的 ERC 20 代币的余额或者 ETH 的余额。最后调用 _transferTokens 将代币转移到指定的地址:

因此我们只需要构造传入 cook 函数的 actions 和 datas,即将 actions 设置为 ACTION_DST_WITHDRAW_TOKEN ,在 data 中构造想要转移的代币、接收地址、数量,即可转移出 SushiXSwap 合约中的代币。

二层NFT交易平台Immutable X通过代币销售筹集超1250万美元:金色财经报道,二层NFT交易平台Immutable X宣布在 CoinList 上的代币销售在不到一个小时内售罄,筹集了超过 1250 万美元。\tImmutable 周一宣布,在注册参与销售的 720,000 个账户中,只有约 25,000 个(3.6%)能够因需求而进行购买。该协议准备与许多 NFT 市场集成,包括OpenSea和Mintable。[2021/9/27 17:10:28]

Sushi BentoBox

Sushi BentoBox 是 SushiSwap 生态系统中的一个组件。BentoBox 是一个高度灵活的去中心化金融(DeFi)利率优化产品。简单来说,它是一个允许用户存储、借用和赚取利息的智能合约平台。BentoBox 的主要目的是优化用户在 DeFi 领域中的收益。

以太坊上的 BentoBox 合约中存储了大量了代币,那么该合约是否存在套利的空间呢?

在 BentoBox 合约中用户可以通过 deposit 函数进行存款操作,函数的实现如下:

可以看到用户传入指定的代币地址,扣款地址,接收地址,数量,股份数量,函数首先做了一系列校验,然后将 amount 或者 share 进行转换,关键点在 195 - 198 行,这里做了一个校验 :amount DODO V2 Proxy 02 

在 DODO V2 Proxy 02 合约中存在 externalSwap函数,用来调用 DODO 聚合的外部平台进行兑换,如 0x , 1inch,代码实现如下:

1719-1721 行在对传入的参数做校验,然后 1724 行校验 fromToken 是否为 ETH,不是的话则会将调用者的代币转移到合约中,然后进行授权,在分析了 DODOAPPROVE 合约的代码后发现只需要将 fromTokenAmount 设置为 0 即可绕过:

然后会对调用的外部合约做校验,是白名单内的才能够调用,这里的 swapTarget,calldataConcat都是由用户可控的,因此可以将 swapTarget 设置为 0x 或者 1inch 的合约地址,然后 calldataConcat 设置为其合约的 view 函数的编码,从而让返回的值为 true,也能通过后面的 require 校验:

接下来会将合约中的 toToken,全部转移给调用者,这里的 toToken 可以是 ERC 20 代币,也可以是 ETH,发送完后会进行最小的预期数量校验,我们将 minReturnAmount 的值设置为非常小的值即可通过。最后两个函数调用无关紧要。

通过以上的步骤我们就能够提取出 DODO V2 Proxy 02 合约中的 ERC 20 代币以及 ETH。

1inch是一个去中心化交易所(DEX)聚合器,它从多个 DEX 中汇集流动性,以便为用户提供最佳的代币兑换价格。通过整合来自不同来源的流动性,1inch帮助用户优化交易并在各个平台之间找到最优惠的价格。1inch的智能合约自动在各个去中心化交易所之间进行交易,使用户能够轻松地在不同交易所之间获取最佳价格和最低滑点。此外,1inch还提供了其他功能,如流动性挖矿和治理代币。

1inch 的主要合约是 AggregationRouter,现在使用较多的是 V 4 和 V 5 版本,这两个合约也会因为各种原因存在一些代币,我们可以通过构造的传入函数中的参数,提取合约中的代币。

AggregationRouterV 5 

AggregationRouterV 5 合约存在 swap 函数,其实现如下:

校验了 desc 中的 minReturnAmount 后,从 desc 中获取 srcToken 和 dstToken,接下来 986-997 行可以通过构造 desc 结构体中的 flags 和 srcToken 进行绕过:

然后执行函数 _execute, 这里会进行 call 调用,并会校验执行状态,由于 executor 由用户传入,因此这里我们可以使用 0 地址进行绕过:

然后获取合约中 dstToken 的余额。1007-1018 行我们可以构造 desc 中 flags 以及 minReturnAmount 进行绕过:

最后会将合约中的 dstToken 余额都转到 dstReceiver 地址中,该地址也由用户控制:

通过以上的步骤,我们能构造传入 swap 函数的参数从而将 AggregationRouterV 5 合约中的代币提走。

AggregationRouterV 4 

AggregationRouterV 4 与 AggregationRouterV 5 差别不大,AggregationRouterV 4 中也存在 swap 函数,实现如下:

可以发现跟 AggregationRouterV 5 的 swap 函数的实现是一样的,只是 AggregationRouterV 5 对 call 进行了优化,因此使用和 AggregationRouterV 5 一样的方法即可提取出存在 AggregationRouterV 4 合约中的代币。

本文简单介绍了部分去中心化交易所以及聚合器,并探讨了其中可能存在的套利,从合约代码层面分析了套利的原理,但在实际中能否成功还和诸多因素相关,如 GAS,节点速度等。

如何从 defi 中捡钱

What Is Uniswap

SUshi Academy

About DODO

1inch aggregation protocol

At Eocene Research, we provide the insights of intentions and security behind everything you know or don't know of blockchain, and empower every individual and organization to answer complex questions we hadn't even dreamed of back then.

了解更多: Website | Medium | Twitter

来源:星球日报

Odaily星球日报

媒体专栏

阅读更多

金色财经 善欧巴

Chainlink预言机

白话区块链

金色早8点

欧科云链

深潮TechFlow

BTCStudy

MarsBit

Arcane Labs

标签:NBSBSPSWAPTERNBS价格BSP币ZyberswapXHUNTER币

比特币价格实时行情热门资讯
以太坊:以太坊Layer 2必知必会

当我们在讨论以太坊Layer 2的时候,我们究竟在探讨什么?如何解决可扩展性挑战,实现更高效的交易处理?本篇文章将为您提供一份详尽的入门指南.

1900/1/1 0:00:00
ETH:梳理4个监控以太坊提款数据的平台

以太坊上海升级已于今晨 6 点 28 分在 Epoch 194048 高度完成。此次升级的主要关注点在于增加了以太坊质押取款功能,用户在此次升级后可提取质押的 ETH 及相关收益.

1900/1/1 0:00:00
区块链:《财富》杂志发布“Crypto 40”榜单 附名单及选取标准

2023年4月10日,著名杂志《Fortune》在其4月/5月刊和官网上发布首届Fortune Crypto 40榜单.

1900/1/1 0:00:00
虚拟资产:解读港交所报告:ETF与全球金融市场虚拟资产生态圈的发展

2023年4月,香港交易所官方发布了一份名为《ETF与全球金融市场虚拟资产生态圈的发展》的研究报告.

1900/1/1 0:00:00
ASH:HashKey Group将发布生态积分 一文读懂HSK的权益和分配机制

HashKey Group公布了发行生态积分HSK的计划,其中65%用于生态系统增长,特定业务净利润的20%也将用于回购销毁HSK.

1900/1/1 0:00:00
BSP:一文详解Ether.fi:如何实现去中心化的非托管质押?

Ether.fi 让质押者自己掌握资金的控制权,并通过两种 NFT 对资金的风险和收益进行分级.

1900/1/1 0:00:00