火星链 火星链
Ctrl+D收藏火星链
首页 > PEPE币 > 正文

DODO:通过代码识别DeFi中的套利机会

作者:

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

来源:金色财经

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

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

UniswapV2Router

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

通过分析UniswapV2Router02合约的代码,发现存在removeLiquidityETHSupportingFeeOnTransferTokens函数:

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

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

Web3游戏生态系统Fastex通过代币销售筹集2320万美元:金色财经报道,由SoftConstruct孵化的Web3游戏生态系统 Fastex 通过出售其代币 Fasttoken (FTN) 筹集了 2320 万美元。FTN 是一种建立在以太坊 ( ETH-USD ) 网络上的 ERC-20 加密货币,作为 Fastex 经济的实用代币,该代币解锁了 Fastex 生态系统中托管的所有 Web3 产品和服务。已有 100 多家游戏提供商采用 FTN 为其 GameFi 游戏提供支持。

筹集的资金将推动 Fastex 生态系统的发展,其中包括 Fastex Chain、ftNFT 市场、Fastex Pay 和 Fastex Verse metaverse。[2023/2/9 11:55:44]

监控到Router02合约存在ERC20代币;

局限性:

UniswapV2Pair

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

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

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

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

BSC-WBNB-WOOF交易对通过代币后门跑路,涉及金额约11.5万美元:2月6日消息,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,BSC-WBNB-WOOF交易对被攻击,交易哈希:0xea5cf9199d23a9108d84e9204cb13795a480b34a6e4ef448245a1452f69fe781。

据Beosin安全技术人员分析,该攻击是由于WOOF代币合约的后门代码导致的,WOOF的address(jZKbvD)权限地址可以使用transferFrom函数0授权转移任何地址的WOOF代币。攻击者通过transferFrom函数转移走了BSC-WBNB-WOOF交易对内的WOOF代币,并更新池子的储备量,接着使用大量的WOOF代币兑换交易对内的所有WBNB。

目前涉及资金约11.5万美元,大部分通过攻击者地址(0x9b07f0488390a2d9c7af9ae40e0e64f31489006d)分散到其他地址。[2023/2/6 11:50:18]

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

UniswapV3SwapRouter

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

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

NFT游戏Guild of Guardians通过代币销售筹集530万美元:12月1日消息,NFT移动端角色扮演类游戏Guild of Guardians,通过其代币(GEMS)的销售活动,共筹得530万美元,目前已有40万名预注册用户。该项目计划于明年第一季度推出。在Coinlist上举行的代币销售获得了82次超额认购,约有808,000名用户注册。该游戏来自乌克兰开发商Stepico games,其与澳大利亚的NFT Layer 2扩展解决方案Immutable X有合作。Immutable X是以太坊上的第一个Layer 2扩展解决方案,并得到了Galaxy Digital和Coinbase的支持。(cointelegraph)[2021/12/1 12:43:28]

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

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

以上是对UniswapV3SwapRouter合约的套利分析。

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

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

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

DeSo区块链通过代币销售获得2亿美元融资,a16z等参投:9月21日消息,BitClout创始人(化名为Diamondhands)透露自己的身份是稳定币初创公司Basis创始人Nader Al-Naji,Basis因监管限制于2018年关闭。Nader Al-Naji的新区块链网络Decentralized Social(DeSo)通过出售DESO代币获得2亿美元融资,Andreessen Horowitz(a16z)、Sequoia、Social Capital、TQ Ventures、Coinbase Ventures、Winklevoss Capital、Polychain Capital、Pantera Capital、Arrington Capital、Blockchange Ventures、Distributed Global、Blockchain.com Ventures、Hack Ventures、Reddit联合创始人Alexis Ohanian等参投。

DeSo区块链支持传统社交媒体功能(如创建个人资料和帖子)以及区块链原生功能(如社交代币、小费和NFT),这些功能可以让创作者赚钱。Al-Naji表示,所有想要使用DeSo区块链或基于该区块链构建的应用程序的人都必须持有DESO代币。[2021/9/21 23:40:46]

SushiXSwap

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

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

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

跨保证金交易平台MangoMarket通过代币销售筹资7000万美元:Solana生态去中心化跨保证金交易平台MangoMarket在关于MNGO代币的销售中筹集了逾7000万美元(70462383美元),且24小时的销售过程中最高有5亿美元左右的资金涌入。此次代币销售从平台自身的资金池以及Serum中获取流动性,同时未对美国用户开放。代币MNGO主要有三个用途:保险基金、治理代币、激励做市商的流动性挖矿奖励,其中90%的代币被锁定在治理基金中,5%的代币被锁定在保险单中,其余的代币被锁定在贡献者代币中,而此次融资所得将全部投入DAO保险基金,如发生意外,则将为协议的贷方提供保障。MangoMarket是基于Solana生态的去中心化跨保证金交易平台,在SerumDEX的链上订单簿上具有高达5倍的杠杆率和集成的限价订单,用户可以赚取存款和保证金头寸的利息,今年3月也在Solana与Serum举办的黑客松活动中获奖。(coindesk)[2021/8/12 1:49:43]

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

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

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

SushiBentoBox

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

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

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

可以看到用户传入指定的代币地址,扣款地址,接收地址,数量,股份数量,函数首先做了一系列校验,然后将amount或者share进行转换,关键点在195-198行,这里做了一个校验:amount<=_tokenBalanceOf(token).sub(total.elastic)。

在BentoBox合约中某种代币的余额使用的是total.elastic来记录,类似UniswapPair合约中的reserve,某些情况下会和_tokenBalanceOf(token)产生差值,我们可以利用deposit函数这里的特性,将差值部分真实转换成自己在BentoBox合约中的余额。

因此我们传入参数时将token设置为存在差值的代币地址,将amount的值设置为差值,然后将from设置为BentoBox合约的地址,将to设置为自己的地址,在207行时由于地址为BentoBox合约地址,因此不会进行转账,只是平衡了total.elastic和_tokenBalanceOf(token)的值,将其转换为to地址在合约内的余额。

DODO是一个去中心化交易平台,使用独创的主动做市商算法为Web3资产提供高效的链上流动性。DODO既自己提供流动性,也聚合其它交易所的流动性。

DODO有一系列合约,其中用户会通过DODOV2Proxy02合约进行代币的兑换。和UniswapRouter合约类似,该合约也会因为各种原因存在一些代币,我们应当如何提取这些代币?

DODOV2Proxy02

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

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

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

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

通过以上的步骤我们就能够提取出DODOV2Proxy02合约中的ERC20代币以及ETH。

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

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

AggregationRouterV5

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

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

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

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

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

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

AggregationRouterV4

AggregationRouterV4与AggregationRouterV5差别不大,AggregationRouterV4中也存在swap函数,实现如下:

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

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

标签:UniswapETHDODOUniswap币是什么币ETH钱包地址ETH挖矿app下载Etherael指什么寓意DODO价格DODO币

PEPE币热门资讯
数字货币:分布式技术的基础应用:数字货币和身份认证

原标题:《红枣科技何亦凡:数字货币和身份认证是分布式技术的基础应用》 分布式技术基础应用:数字货币和身份认证BSN的核心理念,是在互联网上推动建立一个新的公共层.

1900/1/1 0:00:00
ATH:抖音钱币收藏品怎么报白?钱币邮票银元上架抖音小店

抖音钱币收藏品怎么报白?钱币邮票银元上架抖音小店滴滴Billions项目组解决,如果你是一个喜欢收藏的玩家,想在抖音直播钱币、纪念币、银元、邮票等这篇文章不要错过.

1900/1/1 0:00:00
比特币:加密市场已处新一轮牛市初期!比特币能否再创历史新高?

比特币价格继续在27800美元至30000美元的交易区间内盘整。尽管买方目前似乎失去了动力并且空头感觉处于控制之中,但仍有许多理由证明,比特币价格或将在短期和中期创下年度新高.

1900/1/1 0:00:00
狗狗币:合约之王币鲸充值送金砖

4月4日,马斯克把推特图标换成狗狗币图标,狗狗币大涨25%,开启了加密数字货币行情大涨!资深金融交易员认为熊市已过,新一轮牛市即将开启,此时此刻即最佳入场时机!合约之王币鲸壕礼来袭.

1900/1/1 0:00:00
区块链:新加坡留学“越来越香?”,到底有哪些优势?

除了英美各大高校外,新加坡也是近年来的热门留学国家之一。虽然由于面积较小,常常被戏称为“坡县”,但新加坡却被誉为“亚洲四小龙”之一,还是继伦敦、纽约、香港之后的第四大国际金融中心.

1900/1/1 0:00:00
TCP:为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响:5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来.

1900/1/1 0:00:00