Uniswap Periphery源码学习

Uniswap Periphery源码学习

    正在检查是否收录...

Periphery是uniswap的外围合约,将core合约封装起来提供给外部调用,比如我们在网页操作Swap时,请求的就是Periphery的合约。

Periphery里面写了Migrator和Router两个合约,其中Migrator是迁移合约,将流动性从Uniswap的V1版本迁移到V2版本,不涉及swap的功能,这里就不写了。

Router合约

 using SafeMath for uint; address public immutable override factory; address public immutable override WETH; modifier ensure(uint deadline) { require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED'); _; } constructor(address _factory, address _WETH) public { factory = _factory; WETH = _WETH; } receive() external payable { assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract } 

从基础部分开始看起,router合约中记录了factoryWETH地址,其中factory用于获取pair和创建新的pair合约,而特别记录下WETH的地址是为了支持以太坊链的主网币ETH

Uniswap中的代币操作都是基于ERC20类型,但是ETH本身既不是ERC20,也没有合约地址,因此为了ETH也能参与swap,需要先将ETH转换成WETH,再进行后续的操作。Uniswap为了减少用户手动转换的麻烦,会在有ETH参与的交易中自动执行ETHWETH的相互转换,因此需要记录下WETH的合约地址。

receive方法中限制了只允许接收来自WETH合约的ETH,即调用withdraw方法取出ETH,除此之外不可直接向合约中转入ETH。

addLiquidity

addLiquidity是向合约添加流动性的方法

  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-27628.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.8W+
9
1
2
WAP站长官方

B站要变成AI站

上一篇

【URP】什么是[深度偏移](Slope Scale Depth Bias)‌

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单