通过代码理解 Uniswap 的智能合约构成与核心逻辑。
原文标题:《Code Review 回顾:去中心化交易所 Uniswap》 撰文:要飞的 Harry
这次 Code Review 的项目是去中心化交易所 Uniswap,领读员是 Tiny 熊。
视频回顾在 这里。
Uniswap 的核心原理利用了一个简单的常量乘积模型:K = x * y,其中 x,y 为代币数量。在交易的过程中,需要保持 K 值不变,所以 x 和 y 的变化方向是相反的。可以参考下面的三幅图来理解如何在 Uniswap 中交易和增加流动性。
Uniswap 有两个核心的项目:
用来托管 Uniswap 的资产
用来与 Uniswap 进行交互
这个项目中的代码通常不会被用户直接调用,而是被 uniswap-v2-periphery 项目中的路由合约调用,因为路由合约的接口更友好。
合约:UniswapV2Factory.sol
核心方法:
createPair:用来创建一个交易对。接收两个 token 的地址作为参数,然后调用汇编方法 create2 创建 pair,之后 调用 IUniswapV2Pair 的 initialize 方法初始化 pair。创建成功后发出 PairCreated 事件。
合约:UniswapV2Pair.sol
这个合约相当于
核心方法:
这个项目会被前端直接调用,之后会调用进 uniswap-v2-core 项目中的对应方法。
合约:UniswapV2Router02.sol
核心方法:
更多的关于合约方法的描述,可以参考 Uniswap 的 文档。