UniswapV2周边合约学习(九)-- ExampleCombinedSwapAddRemoveLiquidity.sol

记得朋友圈看到过一句话,如果Defi是以太坊的皇冠,那么Uniswap就是这顶皇冠中的明珠。Uniswap目前已经是V2版本,相对V1,它的功能更加全面优化,然而其合约源码却并不复杂。本文为个人学习UniswapV2源码的系列记录文章。

一、单资产流动性供给

我们知道,Uniswap在提供流动性时必须同时按比例注入交易对中的两种资产,然后得到流动性代币。同时需要两种资产,这无形中提高了用户的门槛。如果用户只有一种(或者只关注一种)资产怎么办呢?能不能提供流动性供给?答案可以的。

Router合约中提供了流动性管理的接口,同时也提供了资产交易的接口。那么我们可以在同一个函数里将这两个功能联合起来,先交易资产然后再提供流动性,或者先移除流动性再交易资产。

如果单资产提供流动性,先要在提供的资产中分一部分出来进行交易,得到另外一种资产,这样就有两种资产了。然后再调用Router合约的增加流动性接口注入资产提供流动性。那么分多少资产出来进行交易才能保证资产全部注入(注入时的比例和交易后交易对中的比例相同),是这个操作的核心,需要使用公式进行计算。

如果移除流动性并得到单资产,这个相对简单很多。先移除流动性得到两种资产,然后再将其中一种资产兑换成另一种即可。这样得到的资产就是提取的数量加上交易得到的数量。

可以看到,对Uniswap来讲,这里的单资产流动性供给实质还是双资产注入(其底层实现决定的),只是提前将单资产兑换成了双资产。

注:这里还有其它类型的单资产流动性供给,例如BancorV

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AiMateZero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值