NBS:通过代码识别DeFi中的套利机会_BSPAY币

去中心化金融(英语: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 函数:

建筑公司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]

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

区块链游戏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]

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

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

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

调用 removeLiquidityETHSupportingFeeOnTransferTokens 移除流动性。

DeFi协议Sovryn通过代币预售筹集250万美元:基于比特币的DeFi协议Sovryn周四宣布,该公司已通过代币预售融资250万美元。Sovryn联合创始人Edan Yago表示,预售为其社区保留,这允许参与者确保他们有购买协议原生代币SOV的权利,SOV将于下月启动。(TheBlock)[2021/1/28 14:15:35]

局限性:

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

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

Uniswap V2 Pair

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

动态 | 尤文图斯足球俱乐部通过代币化投票平台选择新进球歌曲:金色财经报道,意大利职业足球俱乐部尤文图斯的球迷使用Socios平台对在主场进球时播放的歌曲进行投票。此次投票标志着第一次在代币化投票平台Socios上进行的民意测验,也是该球队品牌代币JUV的真实使用案例。[2020/1/7]

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

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

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

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

动态 | Kik对抗SEC或将促使监管机构对通过代币销售发行的加密货币分类进行明确裁决:据Cointelegraph消息,虽然很难对加密货币Kin的创造者Kik和SEC之间将发生的事情做出决定性预测,Kobre&Kim律师Benjamin J. Sauter表示,“目前尚不清楚Kik是否会对SEC提出积极主张。大多数情况下公司会等着看SEC是否采取强制行动。不管怎样,到目前为止,Kik已经提出一些可信的论点,因此,如果SEC决定采取执法行动,它将承担合法的风险。” Kobre&Kim的David H. McGill称,“如果目标是推翻豪伊测试或使其广泛不适用于代币,我认为这不太现实。但如果目标是让法院同意,在争议的特定事实和情况下,KIN代币不构成证券,我认为Kik有合理的机会实现这一结果,然后可以作为其他代币发行者反击SEC的立足点。” 然而不管输赢,Kik在公开对抗SEC方面迈出重要的一步:针对主管部门花很长时间才达成执法决定,以及SEC缺乏透明度而对美国加密行业造成损害,Kik表达了不满。这可能会促使监管机构最终就如何对通过代币销售发行的加密货币进行分类做出一些明确裁决。如果该公司确实贯彻其倡议并起诉SEC,那么无论结果如何,美国法院很可能会做出这样的裁决。[2019/6/2]

Uniswap V3 SwapRouter

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

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

提取 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

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 合约中的代币。

Sushi BentoBox

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

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

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

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

媒体专栏

阅读更多

金色财经 善欧巴

Chainlink预言机

白话区块链

金色早8点

欧科云链

深潮TechFlow

BTCStudy

MarsBit

Arcane Labs

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-4:89ms