01.Uniswap 简介
目录
Uniswap 简介
核心摘要 (Key Takeaways)
- Uniswap 作为 DeFi 核心基础设施: 掌握 Uniswap V2, V3, V4 能帮助深度理解 DeFi 领域,超越行业内90-95%的人。其团队以创新力著称,而非营销。
- 恒定乘积做市商模型 (AMM) 的起源: Vitalik Buterin 在2017年提出无订单簿交易方案,核心是 公式,由 Hayden Adams 实现并部署了 Uniswap V1。
- Uniswap V2 引爆 DeFi 赛道: 2020年5月发布,引入 ERC20-ERC20 直换、闪电贷、预言机等,直接推动 DeFi 总锁仓量 (TVL) 从平稳期飙升至千亿规模。
- 创新与竞争: Uniswap V2 因其宽松的开源协议被 SushiSwap 抄袭并挖走大量流动性,促使 Uniswap 发行 UNI 代币并空投反击。此事件凸显了创新与营销在加密货币领域的博弈。
- V3 与 V4 的技术飞跃: V3 引入集中流动性和 LP NFT,显著提升资本效率并改进开源协议(2年商用保护期)。V4 引入 Hooks (钩子) 和 Singleton 架构,旨在成为更快、更省 Gas、更易集成的 DeFi 基础设施。
1. Uniswap 简介与重要性
- 本系列将以 Uniswap 为主线,深入讲解其 V2、V3、V4 版本。
- 深度理解 DeFi: 大部分人对于Uniswap仅停留在
X * Y = K的肤浅认知。 - 创新驱动: Uniswap 团队是业界极具创新力的团队,与多数仅靠营销的项目不同。它为行业带来了巨大的变革和创新。
- DeFi 基础设施: 如果只了解一个区块链项目,那必须是 Uniswap。
2. Uniswap V1:恒定乘积做市商的诞生
- 诞生时间: 2017年6月22日,Vitalik Buterin 发表文章。
- Vitalik 的文章:
- 标题: “On Path Independence”
- 核心思想: 提出无需订单簿模式也能完成代币互换 (swap) 的方案。
- 数学机制: 基于 恒定乘积做市商 (Constant Product Market Maker, CPMM) 模型,即: 其中, 和 分别代表两种代币的储备量, 是一个常数。价格波动通过曲线上代币余额的变化来体现。
- Hayden Adams 的实现:
- 背景故事: 曾是西门子机械工程师,被解雇后在好友 Karl 的建议下开始学习以太坊和智能合约开发。Hayden 在《A Short History of Uniswap》中记录了这段经历。
- 对话案例:
- Hayden: “我刚被开除了…”
- Karl: “恭喜你!这是你身上发生的最好的事情了!以太坊是未来,你的新使命就是写智能合约。”
- Hayden: “我也不知道怎么写代码啊…”
- Karl: “没事,写代码很简单,而且那个时候(2017年)也没人知道怎么写智能合约,学学就好了。”
- 开发历程: 学习 Solidity 和 JavaScript 两个月后开始编写代码,并与团队伙伴共同尝试实现 Vitalik 的公式。
- 部署与初期影响:
- 部署时间: 2018年11月2日,在 伊斯坦布尔会议 期间正式部署到以太坊主网。
- 市场环境: 处于熊市 (比特币价格约 4000,此前高峰 $20000),因此 V1 发布后并未引起广泛关注。
- 开发语言: 使用 Viper 语言编写 (类似 Python),由 Vitalik 建议。
- V1 的局限性:
- 仅支持 ERC20-ETH 互换: 所有流动性池都必须是 ERC20 代币与 ETH 的配对。
- 案例: 若要将 DAI 兑换为 USDC,必须先将 DAI 兑换为 ETH,再将 ETH 兑换为 USDC,需要两次交易。
- 合约结构:
UniswapExchange:负责代币互换逻辑,代码逻辑简单,约 490行。UniswapFactory:负责创建新的交易对。- 特点: 合约代码简洁,被视为“历史遗迹”。
- 名字由来:
- 最初内部名称: UniPeg (铆钉)。
- Vitalik 建议: UniSwap。
- Logo: 独角兽 (Unicorn)。
3. Uniswap V2:引爆 DeFi 赛道
- 发布时间: 2020年5月。
- 核心特性:
- ERC20-ERC20 直接互换: 允许任意两种 ERC20 代币直接组成流动性池 (例如 DAI-USDC 池),无需通过 ETH 中转。
- 闪电贷 (Flash Swaps): 允许用户在同一笔交易中借入资产、使用、并归还,无需抵押品。
- 价格预言机 (Price Oracles): 提供链上价格数据,供其他 DeFi 协议使用。
- 改进手续费设计。
- 对 DeFi 行业的影响 (引爆 DeFi):
- 数据案例: 2020年5月 V2 发布后,DeFi 领域的 总锁仓量 (TVL) 从平稳状态迅速飙升,并在2021年达到约2000亿美元的峰值。V2 的发布是这一增长的起点。
- 个人经历案例: 2020年7月,老师的朋友主动联系讨论 Fork Uniswap,显示了 V2 巨大的市场热度。
3.1 Uniswap 与 SushiSwap 的竞争:UNI 代币的诞生
- 背景: Uniswap V2 采用宽松的开源协议,允许任何人商用其代码。
- SushiSwap (2020年8月发布):
- 策略: Fork Uniswap V2 代码,并在此基础上增加了对 流动性提供者 (LP) 的奖励 (即流动性挖矿)。
- 影响: 通过 SUSHI 代币的激励,SushiSwap 从 Uniswap 挖走了数十亿美元的流动性,对 Uniswap 造成巨大冲击。
- Uniswap 的反击 (2020年9月):
- 发行 UNI 代币: 作为治理代币。
- 空投: 向所有在特定时间点前使用过 Uniswap 的地址空投 400个 UNI 代币。
- 价值案例: 以当前价格 7/UNI 计算,空投价值 2800。历史最高价曾达 $40/UNI。
- 意义: 这是 Uniswap 团队夺回劳动成果、反击抄袭者的一种方式。
- Hayden Adams 的理念与团队风格:
- 反浮躁: 批评加密货币领域过度炒作、高估值(例如:“不是所有项目一发布就必须成为独角兽”)。他认为,一个项目在百万到十亿级别()的市场估值已是非常了不起的成就。
- 注重实际价值: 认为项目估值应基于实际成就,而非短期炒作。
- 团队风格: Uniswap 团队秉持踏实、有远见的风格,不追求短期利益和泡沫,不频繁喊单,因此能够走得更远,成为行业创新的引领者。
4. Uniswap V3:资本效率的飞跃
- 发布时间: 2021年5月。
- 核心特性:
- 集中流动性 (Concentrated Liquidity): 允许 LP 将其流动性集中在特定的价格区间内,显著提高资本效率。
- 优化手续费设置: 提供多层手续费选项。
- LP Token 作为 NFT: 流动性提供者代币 (LPT) 从 ERC20 形式改为 NFT 形式,以支持集中流动性的复杂性。
- 改进开源协议: 引入 2年商业使用保护期。在此期间,社区成员可学习代码,但禁止直接 Fork 并发布商用产品。
- 市场影响: 2023年5月保护期结束后,许多 DEX 纷纷宣布“更新到 V3”,实则抄袭了 Uniswap V3 的代码。市场会通过自我纠错机制,最终认可创新而非简单的抄袭。
5. Uniswap V4 (草案):基础设施愿景
- 代码草案发布时间: 2023年6月23日。
- 核心特性:
- Hooks (钩子): 允许开发者在 Uniswap 协议的固定操作点 (如
beforeSwap,afterSwap) 插入自定义逻辑。- 案例: 可用于创建带有 KYC 验证的去中心化交易所 (在 Swap 前调用 Hook 检查地址的 KYC 信息)。
- Singleton 架构: 将所有交易对部署在一个合约中,而非每个交易对一个合约,显著降低部署成本和 Gas 费用。解决了 V2/V3 中每个交易对都需要独立部署合约的问题。
- 重新引入原生 ETH 支持 (Reintroduction of Native ETH): V4 将再次支持原生 ETH,无需 WETH 中转。
- Flash Accounting。
- Hooks (钩子): 允许开发者在 Uniswap 协议的固定操作点 (如
- 目标: 成为一个更快、更省 Gas、更易集成、更具可扩展性的 DeFi 领域基础设施平台。
6. 核心概念解析:ETH, ERC20, WETH
- ETH (以太坊原生代币):
- 定义: 以太坊区块链的原生代币,用于支付 Gas 费用。
- ERC20 兼容性: 不符合 ERC20 标准。
- 原因: ETH 早于 ERC20 标准诞生。它没有
approve、transferFrom等 ERC20 标准中定义的函数。 - 转账方式: 在智能合约中,转账原生 ETH 通常使用
address.transfer()或address.call{value: ...}()。
- ERC20 (代币标准):
- 定义: 以太坊上的第20个改进提案 (EIP-20) 提出的一种代币协议标准。
- 功能: 规定了代币必须实现的一系列函数 (如
transfer,transferFrom,approve,balanceOf) 和事件 (如Transfer,Approval)。 - 目的: 确保不同代币之间的互操作性。
- WETH (Wrapped ETH / 封装的 ETH):
- 定义: 将原生 ETH “封装”成符合 ERC20 标准的代币。
- 作用: 由于 Uniswap V2 和 V3 等 DEX 主要支持 ERC20 代币之间的交易,原生 ETH 无法直接参与。WETH 使得 ETH 能够以 ERC20 的形式在这些智能合约和 DeFi 协议中使用。
- 历史版本支持:
- Uniswap V1: 支持原生 ETH。
- Uniswap V2/V3: 依赖 WETH 才能与 ERC20 代币配对。
- Uniswap V4: 重新引入对原生 ETH 的支持。
7. Uniswap V2 与 SushiSwap 竞争时序图
以下 Mermaid 时序图展示了 Uniswap V2 发布后,SushiSwap 如何通过 Fork 代码和流动性挖矿与 Uniswap 竞争,以及 Uniswap 如何通过发行 UNI 代币反击的过程。
sequenceDiagram
participant U as Uniswap V2
participant S as SushiSwap
participant LP as Liquidity Providers
participant UNI as UNI Token
U->>LP: 发布V2,开源代码 (宽松协议)
LP->>U: 提供流动性 (获得手续费)
Note over U,LP: Uniswap V2 运行初期
S->>U: Fork Uniswap V2 代码
S->>S: 增加LP奖励机制 (流动性挖矿)
S->>LP: 推出 SUSHI 代币,吸引 LP 质押挖矿
LP->>S: 将流动性从 Uniswap V2 迁移到 SushiSwap
Note over S,LP: SushiSwap 挖走数十亿美元流动性
U->>UNI: 决定发行 UNI 治理代币
U->>LP: 向所有历史用户空投 400 UNI
LP->>U: 获得 UNI 代币 (作为 Uniswap 劳动成果的回馈)
Note over U,UNI: Uniswap 反击,夺回市场份额
sequenceDiagram
participant U as Uniswap V2
participant S as SushiSwap
participant LP as Liquidity Providers
participant UNI as UNI Token
U->>LP: 发布V2,开源代码 (宽松协议)
LP->>U: 提供流动性 (获得手续费)
Note over U,LP: Uniswap V2 运行初期
S->>U: Fork Uniswap V2 代码
S->>S: 增加LP奖励机制 (流动性挖矿)
S->>LP: 推出 SUSHI 代币,吸引 LP 质押挖矿
LP->>S: 将流动性从 Uniswap V2 迁移到 SushiSwap
Note over S,LP: SushiSwap 挖走数十亿美元流动性
U->>UNI: 决定发行 UNI 治理代币
U->>LP: 向所有历史用户空投 400 UNI
LP->>U: 获得 UNI 代币 (作为 Uniswap 劳动成果的回馈)
Note over U,UNI: Uniswap 反击,夺回市场份额
sequenceDiagram
participant U as Uniswap V2
participant S as SushiSwap
participant LP as Liquidity Providers
participant UNI as UNI Token
U->>LP: 发布V2,开源代码 (宽松协议)
LP->>U: 提供流动性 (获得手续费)
Note over U,LP: Uniswap V2 运行初期
S->>U: Fork Uniswap V2 代码
S->>S: 增加LP奖励机制 (流动性挖矿)
S->>LP: 推出 SUSHI 代币,吸引 LP 质押挖矿
LP->>S: 将流动性从 Uniswap V2 迁移到 SushiSwap
Note over S,LP: SushiSwap 挖走数十亿美元流动性
U->>UNI: 决定发行 UNI 治理代币
U->>LP: 向所有历史用户空投 400 UNI
LP->>U: 获得 UNI 代币 (作为 Uniswap 劳动成果的回馈)
Note over U,UNI: Uniswap 反击,夺回市场份额sequenceDiagram
participant U as Uniswap V2
participant S as SushiSwap
participant LP as Liquidity Providers
participant UNI as UNI Token
U->>LP: 发布V2,开源代码 (宽松协议)
LP->>U: 提供流动性 (获得手续费)
Note over U,LP: Uniswap V2 运行初期
S->>U: Fork Uniswap V2 代码
S->>S: 增加LP奖励机制 (流动性挖矿)
S->>LP: 推出 SUSHI 代币,吸引 LP 质押挖矿
LP->>S: 将流动性从 Uniswap V2 迁移到 SushiSwap
Note over S,LP: SushiSwap 挖走数十亿美元流动性
U->>UNI: 决定发行 UNI 治理代币
U->>LP: 向所有历史用户空投 400 UNI
LP->>U: 获得 UNI 代币 (作为 Uniswap 劳动成果的回馈)
Note over U,UNI: Uniswap 反击,夺回市场份额