小白也能看懂!Uniswap V2 核心原理与合约大揭秘

引言

Uniswap V2 是去中心化金融(DeFi)中最经典、最具代表性的自动化做市商(AMM)协议之一。它通过智能合约在以太坊上实现了无需信任的代币兑换和流动性提供,核心依赖简单优雅的恒定乘积做市公式(x * y = k)。本篇内容将深入解析 Uniswap V2 的核心合约,包括工厂合约、Pair 合约、LP Token 合约及路由与工具库,并结合核心流程帮助理解 Uniswap V2 是如何实现去中心化交易与流动性管理的。

一、Uniswap V2 是什么

Uniswap V2 是一个基于以太坊的自动化做市商(AMM),它允许用户无需中心化订单簿,就能方便地进行 ERC20 代币之间的兑换。它的核心是通过一个恒定乘积做市公式(x * y = k)保持流动性池内的平衡。

二、Uniswap V2 核心主要由以下几个合约组成:

UniswapV2Factory.sol:工厂合约,用来创建和管理所有的 Pair(交易对合约)。

UniswapV2Pair.sol:每个交易对对应的流动性池合约,实现 swap、add/remove liquidity、跟踪储备等逻辑。

UniswapV2ERC20.sol:实现了 LP Token(流动性提供者凭证),本质是一个 ERC20。

UniswapV2Library.sol UniswapV2Router02.sol:用于路由和方便用户交互(这两个通常在 peripheral 仓库里)。

三、核心流程详解

1️⃣ 创建交易对(Pair)

用户调用 UniswapV2Factory.createPair(tokenA, tokenB)

工厂合约会部署一个新的UniswapV2Pair合约,并存储到映射里:getPair[tokenA][tokenB],新的 Pair 合约就作为该交易对的流动性池。

2️⃣ 添加流动性

用户把 tokenA 和 tokenB 转入 Pair 合约

Pair 合约根据当前储备情况决定要铸造多少 LP Token 给流动性提供者

LP Token 是由 UniswapV2ERC20 合约实现的,代表用户在池中的份额

3️⃣ Swap(交易)

用户想用 tokenA 换 tokenB,会调用 Pair 合约的 swap 函数

核心逻辑:用户先把 tokenA 转到 Pair 合约,合约内部会验证 swap 后的新储备值仍然满足 x * y ≥ k,然后给用户转出相应的 tokenB

为了防止有人利用合约,Uniswap 要求必须在一次交易里保证恒定乘积(k)的条件

会收取千分之三(0.3%)的手续费,手续费留在池子里,自动奖励 LP

4️⃣ 移除流动性

用户销毁 LP Token,合约把等值的 tokenA 和 tokenB 转还给用户。

四、重要合约源码亮点

UniswapV2Factory.sol

  • 管理所有的交易对
  • 部署新的交易对(使用 create2 保证地址可预测)
  • 保存交易对映射

UniswapV2Pair.sol
Uniswap V2 的最核心:

  • 储备值:reserve0 和 reserve1
  • swap 函数
  • mint / burn 函数(添加/移除流动性)
  • 更新储备
  • 定价累积器(用于预言机)

核心恒等式:

(uint balance0Adjusted) * (uint balance1Adjusted) >= uint(_reserve0) * uint(_reserve1);

UniswapV2ERC20.sol

  • 让流动性提供者获得 LP Token
  • 符合 ERC20 标准

Router & Library

  • Router 合约(UniswapV2Router02)负责帮助用户和多个 Pair 合约打交道,比如路径交换、多 hop 交易
  • Library 里有计算最优兑换路径等常用工具

总结

Uniswap V2 的设计以极简著称,却解决了复杂的去中心化交易需求:

  • 工厂合约 统一管理所有交易对
  • Pair 合约 作为每个流动性池的核心,负责交易、添加/移除流动性并保持储备平衡
  • LP Token 合约 为流动性提供者提供标准化的权益凭证
  • Router 与 Library 简化用户与多个交易对的交互

恒定乘积公式、无需许可的交易对创建、自动奖励机制等创新,奠定了 Uniswap 在 DeFi 领域的核心地位,也成为后续众多 AMM 协议的灵感来源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yoona1020

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

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

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

打赏作者

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

抵扣说明:

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

余额充值