Uniswap - 智能合约V2代码导读

区块链技术是非常有趣的。更有趣的是,区块链技术让交易变得更丰富多彩。从中心化交易,到去中心化交易,再到去中心化AMM。每一种改变都尝试解决之前的问题,但本身也不是完美的。也值得一提的,每一点点进步都非常不容易。有种不积跬步,无以至千里的感觉。

很久之前,就看了Uniswap协议,当时理论分析,流动性提供者在价格波动的情况下,收入微薄。在这样的协议下,流动性是否充足,交易是否足够多,交易费是否有足够的吸引力等等,我觉得都是问题。

区块链 - 深入理解Uniswap协议

没想到,Uniswap今年成了热点。在流动性的强需求下,之前的问题好像都不存在了。代币能很快流动交易起来,让很多项目方变得轻松。但是,也是隐隐觉得,之前的问题并没有解决,只是在流动性的需求下掩盖起来。无论如何,Uniswap V2的智能合约代码,还是要看看的。

Uniswap代码结构

Uniswap智能合约代码由两个github项目组成。一个是core,一个是periphery。

https://github.com/Uniswap/uniswap-v2-core.git

https://github.com/Uniswap/uniswap-v2-periphery.git

core偏核心逻辑,单个swap的逻辑。periphery偏外围服务,一个个swap的基础上构建服务。单个swap,两种代币形成的交易对,俗称“池子”。每个交易对有一些基本属性:reserve0/reserve1以及total supply。reserve0/reserve1是交易对的两种代币的储存量。total supply是当前流动性代币的总量。每个交易对都对应一个流动性代币(LPT - liquidity provider token)。简单的说,LPT记录了所有流动性提供者的贡献。所有流动性代币的总和就是total supply。Uniswap协议的思想是reserve0*reserve1的乘积不变。

Periphery逻辑

核心逻辑实现在UniswapV2Router02.sol中。称为Router,因为Periphery实现了“路由”,支持各个swap之间的连接。基本上实现了三个功能:1/ add liquidity(增加流动性)2/remove liqudity (抽取流动性) 3/ swap(交换)。

  1. add liqudity

增加流动性,就是同时提供两种代币。因为代币有可能是ETH,针对不同情况有不同的接口。逻辑类似。

function addLiquidity(
    address tokenA,
    address tokenB,
    uint amountADesired,
    uint amountBDesired,
    uint amountAMin,
    uint amountBMin,
    address to,
    uint deadline
) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity)
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值