# uniswap V2 源码详解

By [satoshi](https://paragraph.com/@satoshi-3) · 2022-01-21

---

uniswap 代码由两个部分组成：v2-core & v2-periphery

Uniswap协议的思想是reserve0\*reserve1的乘积不变。

无常损失发生在币价波动，两种币价背离越多，损失越大。

造成无常损失的原因是因为，流动池无法做到价格同步，价格同步是通过市场投机者套利实现的。举例：当A、B池有交易对a、b时，A池的a价格低于B池的a价格，投资者会买入B池中的a卖到B池套利，B池中的流动性提供者就蒙受了损失。

1、v2-core
---------

也就是所谓的核心代码，主要是创建交易对的逻辑，和交易对参数的设置。单个swap的逻辑。单个swap，两种代币形成的交易对，俗称“池子”。

[https://github.com/Uniswap/v2-core](https://github.com/Uniswap/v2-core)

core有三个合约：

### 1.1 UniswapV2ERC20.sol

LP代币合约，本质上就是一个ERC20，实现了ERC20的全部功能之外和一般的ERC20不同的地方在于有一个permit方法，可以允许离线生成签名，签名给第三方进行交易，并且交易产生的gas由第三方支付。

### 1.2 UniswapV2Factory.sol

创建交易对

### 1.3 UniswapV2Pair.sol

添加流动性和移除流动性的基础方法mint和burn

2、v2-periphery
--------------

periphery偏外围服务，在交易对的基础上构建服务。

[https://github.com/Uniswap/v2-periphery](https://github.com/Uniswap/v2-periphery)

---

*Originally published on [satoshi](https://paragraph.com/@satoshi-3/uniswap-v2)*
