文章 视频 课程 百科图谱 集训营
更多
  • 问答
  • 提问
  • 发表文章
  • 专栏
  • 活动
  • 文档
  • 工作
  • 集市
  • 发现
  • 文章
  • 问答
  • 视频
  • 课程
  • 集训营
  • 专栏
  • 活动
  • 工作
  • 文档
  • 集市
搜索
  • 登录/注册
zhwanwan
  • 文章
  • 专栏
  • 问答
  • 视频
  • 课程
  • 集市作品
  • 活动
  • 招聘
TA的专栏 TA订阅的
UniswapV2 技术深度解析

UniswapV2 技术深度解析项目

本项目基于 Solidity 0.8.30 与 Foundry 工具链,从零完整实现 UniswapV2 的生态系统,包括核心协议、外围组件、安全防护和高级特性,配套 23 篇系统化的中文教程文档。

本项目参照 Jeiwan 的 Programming DeFi: Uniswap V2 系列教程,结合现代 Solidity 开发最佳实践(Foundry + Solidity 0.8.30),为中文开发者提供完整的学习路径。

🌟 项目特色

  • ✨ 完整实现:覆盖 UniswapV2 所有核心功能,包括流动性管理、代币交换、闪电贷、协议费用
  • 📚 23 篇教程:从零到一的渐进式学习路径,每篇文章配有完整代码和测试
  • 🔒 安全第一:重入防护、整数溢出保护、CEI 模式、闪电贷安全机制
  • 🚀 现代工具链:使用 Foundry 快速测试,Solidity 0.8.30 最新特性
  • 📝 中文注释:所有核心代码都有详细的中文 NatSpec 注释
  • ✅ 100% 测试覆盖:71 个测试用例全部通过,覆盖所有核心功能
  • 🎓 教学导向:代码清晰易读,适合学习和研究

🎉 项目完成状态

✅ 项目已完结 - 所有核心功能已实现,全部测试通过

已完成的核心模块

  • ✅ 核心协议层:Factory、Pair、LP Token 完整实现
  • ✅ 外围组件层:Router 流动性管理与代币兑换
  • ✅ 安全防护系统:重入攻击防护、CEI 模式、整数溢出保护
  • ✅ 预言机系统:时间加权平均价格(TWAP)实现
  • ✅ 存储优化:Gas 节省策略与位运算优化
  • ✅ 高级特性:闪电贷机制、协议费用、套利示例、借贷集成
  • ✅ 完整测试套件:71 个测试用例全部通过

📊 项目统计

  • 合约文件:13 个核心合约 + 3 个接口
  • 测试套件:71 个测试用例,100% 通过率
  • 教程文档:23 篇系统化深度解析文章
  • 代码注释:完整的中文 NatSpec 注释

🚀 快速开始

环境要求

  • Git
  • Foundry (推荐最新版本)
  • 操作系统:macOS / Linux / Windows (WSL)

安装步骤

1. 安装 Foundry 工具链
curl -L https://foundry.paradigm.xyz | bash
foundryup

2. 克隆项目仓库
git clone https://github.com/RyanWeb31110/uniswapv2_tech
cd uniswapv2_tech

3. 安装依赖(OpenZeppelin 合约库和 Forge 标准库)
forge install

4. 编译所有合约
forge build

运行测试

运行所有测试(71 个测试用例)
forge test

查看测试覆盖率统计
forge test --summary

运行特定测试文件
forge test --match-contract UniswapV2PairTest

运行特定测试函数
forge test --match-test testMint

查看详细的 Gas 报告
forge test --gas-report

使用项目脚本运行测试(会在 logs/ 目录生成日志)
./scripts/test.sh

其他常用命令

格式化代码
forge fmt

检查代码格式
forge fmt --check

清理编译产物
forge clean

📁 项目架构

src/
├── core/               🔷 核心协议层
│   ├── UniswapV2Factory.sol     工厂合约 - CREATE2 确定性部署
│   ├── UniswapV2Pair.sol        交易对合约 - AMM 核心逻辑
│   └── UniswapV2ERC20.sol       LP 代币 - EIP-2612 支持
├── periphery/          🔶 外围组件层
│   ├── UniswapV2Router.sol      路由合约 - 用户交互入口
│   └── WETH.sol                包装以太坊合约
├── libraries/          📚 工具库集合
│   ├── UniswapV2Library.sol    核心计算库
│   ├── UQ112x112.sol           高精度定点数
│   └── StorageOptimization.sol  存储优化库
├── security/           🔒 安全防护组件
│   └── ReentrancyGuard.sol     重入攻击防护
├── oracle/             🔮 预言机系统
│   └── UniswapV2Oracle.sol     TWAP 价格预言机
└── examples/           💡 教学示例
   ├── ArbitrageBot.sol        套利机器人
   └── LendingProtocol.sol     借贷协议

test/                   🧪 测试套件
├── core/               核心协议测试
├── periphery/          外围组件测试
├── security/           安全防护测试
├── oracle/             预言机系统测试
├── gas/                Gas 优化测试
└── mocks/              测试辅助合约

docs/                   📖 系列教程文档(23篇完整版)
├── UniswapV2 深入解析系列 01:架构概述与开发环境搭建.md
├── UniswapV2 深入解析系列 02:流动性池机制与LP代币铸造.md
├── UniswapV2 深入解析系列 03:流动性移除机制与LP代币销毁.md
├── ...                 完整的渐进式学习路径
├── UniswapV2 深入解析系列 22:重入防护与闪电贷安全.md
└── UniswapV2 深入解析系列 23:协议费用与系列总结.md

🎯 核心特性

🔷 核心协议层

  • 工厂合约 (UniswapV2Factory):使用 CREATE2 实现确定性地址生成,支持交易对去重与权限管理
  • 交易对合约 (UniswapV2Pair):完整的 AMM 实现,包含流动性管理、代币交换、价格预言机、闪电贷
  • LP 代币:基于 OpenZeppelin ERC20Permit 实现,支持 EIP-2612 链下签名授权

🔶 外围组件层

  • 智能路由 (UniswapV2Router):支持精确输入/输出兑换,滑点保护,截止时间控制
  • 流动性管理:添加/移除流动性的安全封装,支持 ETH 和 ERC20 代币
  • 工具库 (UniswapV2Library):纯函数计算库,实现价格计算、路径查询、储备查询

🔒 安全防护系统

  • 重入攻击防护:自定义 ReentrancyGuard 状态锁机制,CEI 模式严格执行
  • 整数溢出防护:Solidity 0.8+ 内置检查 + 边界条件验证
  • 恶意代币防护:自定义 transfer 包装器,兼容非标准 ERC20 实现
  • 闪电贷安全:回调验证机制,手续费强制结算,防止套利攻击

🔮 高级特性

  • TWAP 预言机:累积价格计算,抗操纵的价格数据源,支持任意时间窗口
  • 存储优化:结构体打包优化,减少 75% SSTORE 操作
  • 协议费用:可选的协议层收益分配机制,支持治理控制
  • 闪电贷:零抵押借贷,单笔交易内归还,手续费自动结算
  • 套利示例:跨协议套利机器人实现,借贷协议集成示例

📚 完整学习路径(23 篇系列教程)

🔰 基础篇(第 1-5 篇)

  1. 架构概述与开发环境搭建 - Foundry 工具链配置
  2. 流动性池机制与 LP 代币铸造 - 恒定乘积公式实现
  3. 流动性移除机制与 LP 代币销毁 - 流动性管理完整闭环
  4. 代币交换机制 - swap 核心算法与手续费计算
  5. 智能合约安全防护与重入攻击分析 - CEI 模式实践

🔧 进阶篇(第 6-14 篇)

  1. 时间加权平均价格预言机实现详解 - TWAP 抗操纵机制
  2. 存储优化与 Gas 节省策略 - 结构体打包技巧
  3. 代币转账机制与设计哲学 - 安全转账封装
  4. Solidity 安全最佳实践与整数溢出防护 - Solidity 0.8+ 特性
  5. 安全转账机制与 ERC20 兼容性处理 - 非标准代币处理
  6. 工厂合约架构设计与实现详解 - Factory 模式实践
  7. 使用 CREATE2 确定性部署 - 地址预计算原理
  8. Router 流动性管理流程与最佳实践 - 外围合约设计
  9. 函数库合约解析 - 纯函数工具库设计

🚀 高级篇(第 15-23 篇)

  1. 流动性移除与 LP 销毁安全性 - burn 函数深度剖析
  2. LP 授权机制与 permit 运用 - EIP-2612 链下签名
  3. 输出金额计算与路径滑点管理 - getAmountsOut/In 实现
  4. 精确输入兑换 - swapExactTokensForTokens 流程
  5. 精确输出兑换 - swapTokensForExactTokens 实现
  6. swap 手续费修复 - 手续费计算逻辑优化
  7. 闪电贷机制与手续费结算 - 零抵押借贷实现
  8. 重入防护与闪电贷安全 - 回调攻击防御
  9. 协议费用与系列总结 - 治理机制与项目回顾

💡 学习建议:建议按顺序阅读教程,每篇文章都配有完整的代码实现和测试用例,可以边学边实践。

⚡ 性能与优化

Gas 优化成果

  • 存储优化:通过结构体打包节省 75% 存储槽(reserve0 + reserve1 + blockTimestampLast 打包为单个 slot)
  • 自定义错误:使用 Solidity 0.8+ 的 custom error 替代字符串错误,节省部署和执行成本
  • 批量操作:减少 50% 外部合约调用
  • 事件优化:indexed 参数提升链下查询效率

完整测试套件

  • 71 个测试用例:100% 通过率
  • 单元测试:覆盖所有核心功能路径(Pair、Factory、Router、Library)
  • 集成测试:验证组件间交互逻辑(流动性管理、代币兑换、路径计算)
  • 安全测试:重入攻击防护、闪电贷安全、恶意代币处理
  • 边界测试:极端条件下的安全性验证(零地址、滑点保护、截止时间)
  • Gas 基准测试:性能回归检测与优化对比

测试覆盖范围

✅ 核心协议层(32 测试):Pair 流动性管理、交换、闪电贷、费用机制
✅ 工厂合约(17 测试):交易对创建、地址计算、权限管理
✅ 外围组件(11 测试):Router 流动性操作、精确输入/输出兑换
✅ 安全防护(9 测试):重入攻击防护、恶意代币处理
✅ 预言机系统(12 测试):TWAP 累积价格计算、时间窗口查询
✅ 工具库(3 测试):价格计算、储备查询、路径管理

🛠 技术亮点与最佳实践

现代 Solidity 开发实践

  • Solidity 0.8.30:使用最新稳定版本,内置整数溢出检查
  • Foundry 工具链:快速编译测试,Solidity 编写测试用例
  • 自定义错误:Gas 高效的错误处理机制
  • NatSpec 注释:完整的中文函数文档注释
  • CEI 模式:严格遵循 Checks-Effects-Interactions 模式

安全防护机制

  • ✅ 重入攻击防护:自定义 ReentrancyGuard 状态锁
  • ✅ 整数溢出保护:Solidity 0.8+ 内置检查 + 边界验证
  • ✅ 外部调用安全:CEI 模式,状态更新优先于外部调用
  • ✅ 参数验证:完整的输入参数校验与自定义错误
  • ✅ 权限控制:Factory 权限管理,协议费用治理机制

代码质量保证

  • 模块化设计:核心层、外围层、工具库清晰分离
  • 纯函数工具库:UniswapV2Library 提供可复用的计算函数
  • 完整测试覆盖:71 个测试用例覆盖所有核心功能
  • 中文注释:所有核心逻辑都有详细的中文说明

🔄 与原版 Uniswap V2 的区别

现代化改进 特性 原版 Uniswap V2 (2020) 本项目 (2024)
Solidity 版本 0.5.16 / 0.6.6 0.8.30
SafeMath 必须使用 内置溢出检查,无需 SafeMath
错误处理 require 字符串 自定义 error,节省 Gas
ERC20 实现 自己实现 使用 OpenZeppelin ERC20Permit
测试框架 Truffle / Hardhat Foundry(更快)
测试语言 JavaScript Solidity(类型安全)
代码注释 英文简洁注释 完整中文 NatSpec 注释

功能对比 ✅ 完整实现:

  • 核心 AMM 功能(流动性管理、代币交换)
  • TWAP 价格预言机
  • 闪电贷机制(swap with callback)
  • 协议费用机制
  • EIP-2612 permit 授权

✨ 额外增强:

  • 完整的中文教程系列(23 篇)
  • 详细的测试用例和注释
  • 安全防护测试(重入攻击、恶意代币)
  • Gas 优化示例和对比测试
  • 套利机器人和借贷协议集成示例

学习友好性

  • ✅ 中文注释:所有核心代码都有详细的中文说明
  • ✅ 渐进式教程:23 篇文章从基础到高级循序渐进
  • ✅ 测试驱动:每个功能都有对应的测试用例
  • ✅ 现代工具:使用最新的 Foundry 工具链
  • ✅ 实际应用:包含套利和借贷的实际应用示例

🎓 适用人群与学习收获

适合以下开发者

  • ✅ Solidity 初学者:通过完整项目学习智能合约开发
  • ✅ DeFi 研究者:深入理解 AMM 自动做市商原理
  • ✅ 安全工程师:学习智能合约安全防护最佳实践
  • ✅ 区块链架构师:了解去中心化交易所架构设计

学完本项目你将掌握

  1. ✅ AMM 核心原理:恒定乘积公式、流动性管理、价格计算
  2. ✅ Foundry 工具链:现代 Solidity 开发、测试、调试技能
  3. ✅ 智能合约安全:重入攻击、整数溢出、闪电贷攻击防护
  4. ✅ Gas 优化技巧:存储优化、位运算、自定义错误使用
  5. ✅ 项目架构设计:核心层与外围层分离、模块化设计思想
  6. ✅ 预言机实现:TWAP 时间加权平均价格机制
  7. ✅ 完整测试实践:单元测试、集成测试、边界测试编写

📖 参考资源

官方文档

  • Uniswap V2 白皮书
  • Uniswap V2 Core 源码
  • Uniswap V2 Periphery 源码

学习资源

  • Jeiwan 的 Programming DeFi: Uniswap V2 系列 - 本项目的主要参考教程
  • Foundry Book - Foundry 官方文档
  • Solidity 中文文档

相关项目

  • Programming DeFi: Uniswap V1 - Uniswap V1 教程
  • OpenZeppelin Contracts - 本项目使用的 ERC20 实现

🤝 贡献与反馈

代码贡献流程

  1. ⭐ Star 本项目以支持作者
  2. 🍴 Fork 项目仓库到个人账户
  3. 🌿 创建功能分支:git checkout -b feature/your-feature
  4. ✍️ 提交代码并添加完整测试覆盖
  5. ✅ 确保所有测试通过:forge test
  6. 🎨 代码格式化:forge fmt
  7. 📝 提交 Pull Request 并详细描述变更内容

文档贡献

  • 技术文档:统一使用简体中文,遵循既定风格规范
  • 代码注释:NatSpec 格式,关键逻辑需有详细说明
  • 教程更新:发现错误或有改进建议可提交 Issue 或 PR
  • 示例代码:欢迎补充更多实际应用场景示例

反馈渠道

  • 💬 技术讨论:GitHub Issues
  • 🐛 Bug 报告:详细描述复现步骤和环境信息
  • 💡 功能建议:欢迎提出改进意见和新功能需求
  • 📚 文档改进:发现笔误或不清晰之处可直接提交 PR

📜 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。

⚠️ 免责声明

本项目仅供学习和研究使用,未经过专业安全审计,请勿在生产环境或主网中直接部署使用。

  • 本项目为教学性质的实现,主要目的是帮助开发者理解 UniswapV2 的工作原理
  • 代码可能存在未发现的安全漏洞,不保证在所有场景下的安全性
  • 任何基于本项目的实际部署和使用,风险由使用者自行承担
  • 建议在正式部署前进行专业的安全审计

🙏 致谢

  • 感谢 Jeiwan 提供的优秀教程系列
  • 感谢 Uniswap Labs 开源的创新协议
  • 感谢 Foundry 团队提供的现代化开发工具
  • 感谢 OpenZeppelin 提供的安全合约库

如果本项目对你有帮助,欢迎 Star ⭐ 支持!

项目作者:RyanWeb31110
项目仓库:https://github.com/RyanWeb31110/uniswapv2_tech

创建于2025-10-08 11:11 订阅(4)
Web3 敲门砖计划

《Web3 敲门砖计划》是一套面向初学者的 Web3 入门读物,共计划推出 100 篇文章,每篇聚焦一个核心概念。

我们不讲高深术语、不堆代码,只讲人话,只讲“你真的该懂的”。

从钱包、DApp 到签名、Gas,再到 DID、ZK、链抽象……让你从零起步,真正理解 Web3 世界运作的底层逻辑。

如果你刚接触 Web3,或者想把碎片知识系统化梳理 —— 这,就是你的敲门砖

专栏结构

  • 认知篇(1~13)
  • 生存技巧篇(14~30)
  • 进阶玩法(31~40)
创建于2025-07-29 14:01 订阅(35)
Uniswap V3 详解

与传统 AMM(如 Uniswap V2)遵循的 “xy=k” 恒定乘积模型不同,Uniswap V3 的集中流动性机制允许 LP 将资金聚焦于特定的价格区间。这一设计带来了双重优势:

  • 交易者视角:资金在关键价格区间的集中,大幅提升了交易深度,减少了滑点(交易执行价格与预期价格的偏差),尤其是在热门交易对中,能获得更接近市场公允价的执行结果。
  • 流动性提供者视角:资金不再被分散到无限的价格区间,而是在 LP 预判的活跃交易范围内发挥作用,单位资金的利用率显著提升,进而带来比传统模型更高的手续费回报。

Uniswap V3 的代码库因其复杂性闻名,其核心在于将数学逻辑与区块链技术的深度融合。为实现集中流动性,协议引入了一系列创新组件:

  • 刻度(Ticks):将价格区间划分为离散的 “刻度”,每个刻度对应特定的价格水平,LP 可选择在不同刻度间注入流动性,形成精准的资金分布。
  • 平方根价格(sqrtPriceX96):通过特殊的数学编码方式(X96 表示 96 位精度),高效计算和存储价格数据,平衡了计算效率与精度需求。
  • 手续费与 Tick 间距关联:不同交易对根据风险等级设置差异化的手续费率(如 0.05%、0.3%、1%),并对应不同的 Tick 间距(价格区间划分的精细度),高手续费率通常搭配更宽的间距,以平衡风险与收益。

如果你是初学者,建议可以首先阅读 Uniswap V2 书籍 并完成 Uniswap V2 谜题。

目录

1.Uniswap V3 中的集中流动性如何工作

2.在 Uniswap V3 中引入 ticks

3.Q 数字格式

4.Uniswap V3 中的平方根价格

5.Uniswap V3 中的 Tick 限制

6.Uniswap V3 工厂以及 Tick 间距和费用之间的关系

7.计算给定 sqrtPriceX96 的当前 Tick

8.平方和乘法算法

9.Tickmath getSqrtRatioAtTick

创建于2025-07-19 11:33 订阅(14)
ERC 系列标准全景图解

ERC(Ethereum Request for Comment)标准是以太坊生态中最核心的协议规范,决定了代币、NFT、金库、账户抽象等的行为方式。对于 Web3 开发者和求职者而言,理解 ERC 系列标准不仅是编写合约的基础,更是解构 DApp 与协议交互逻辑的关键。本专题将系统梳理主流 ERC 标准(如 ERC-20、ERC-721、ERC-1155、ERC-4626、ERC-4337 等),从功能定义、代码结构到应用场景、常见变种与扩展标准,逐一讲解其设计理念与实际用法,助你从“会用”到“精通”。适合 Web3 入门者、Solidity 开发者与智能合约面试准备者阅读。

创建于2025-06-15 20:38 订阅(8)
区块链钱包原理与前端集成实践

区块链钱包是 Web3 世界的入口。对于 Web3 初学者和求职者来说,理解钱包的工作原理、连接协议与前端集成方式,是迈入去中心化开发的第一步。本专题从理论到实战,系统讲解钱包类型、连接协议(如 WalletConnect、EIP-1193)、登录签名流程(EIP-191、EIP-712)、以及如何使用 wagmi + viem 等现代前端工具实现高质量的钱包连接模块。同时,还涵盖 ENS、合约钱包、UI/UX 最佳实践与常见坑点,帮助你真正掌握“从连接钱包到登录验证”的完整链路。适合希望进入 Web3 行业的前端开发者与技术转型者。

创建于2025-06-15 20:33 订阅(11)
区块链101

区块链产生的初衷,即解决传统中心化金融系统中的信任问题,通过去除中介来增强交易的安全性和透明度。本专栏文章 将和大家一同深入探讨了区块链的工作机制,包括如何形成交易历史、去中心化和共识机制。通过这系列技术解析,读者将理解区块链如何用代码重构信任体系——不是基于对机构的信任,而是基于对数学法则和博弈论机制的信任。

创建于2025-06-10 17:11 订阅(32)
📘以太坊的工作原理全解析

从智能合约到共识机制,从状态树到 Layer2 扩容,本专题系统梳理以太坊的技术核心与运行机制。内容由浅入深,结合架构图、EVM 指令与开发实战,带你从“懂区块链”进阶为“精通以太坊”。无论你是 Web3 开发者、系统架构师,还是对去中心化技术充满好奇的工程师,这都是一份值得收藏与落地实战的技术学习地图

创建于2025-05-27 12:51 订阅(24)
深入理解区块链 Gas 机制

本专栏旨在系统性地解析区块链中 Gas 的概念、运作机制及其演进,特别聚焦于以太坊生态。通过系列文章,我们将深入探讨 Gas 的基本原理、EIP-1559 的改革、交易生命周期中的 Gas 变化、智能合约的 Gas 优化技巧,以及多链环境下的 Gas 模型对比等内容。专栏内容面向开发者,力求提供清晰、专业的知识体系,助力读者在实际开发中更高效地管理和优化 Gas 费用。

创建于2025-05-23 12:25 订阅(13)
交易所钱包开发业务拆解

⭐️ 最近在整理交易所钱包开发业务的笔记,趁此机会将我对交易所钱包的业务理解解构出来,供后人参考。

  • 以图为主:大部分逻辑将以流程图方式展现。

  • 图文结合:文字将用来讲解基础概念和描述流程图。

  • 最小代码:每个独立业务将抽离出极简代码的实现,方便理解业务逻辑。

  • 开发语言:大多数程序代码以 Go 、Typescript展示。

PS:文章过于硬核,已下架。。

创建于2025-05-01 19:08 订阅(50)
小白专享-图解以太坊编程

🎆此专栏知识涵盖以太坊基本知识、solidity基本知识、以太坊核心项目,为以太坊编程初学者提供一个简洁、快速的入门教程。

⭐️专栏特点

  1. 图解为主:停止概念抽象,用流程图阐述以太坊编程的核心概念。
  2. 语言简练:拒绝长篇大论,以最简单的语言说清核心知识点。
  3. 代码核心:拒绝冗长代码,用核心代码来描述核心知识点。
  4. 适合新手:停止纵向横向拓展,做到提炼核心知识点。
创建于2025-04-13 02:42 订阅(27)
  • ‹
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • ›
退款后将取消订阅本专栏 !
退款原因:
退款 取消
专栏删除后将不可恢复 !
删除 取消
zhwanwan
zhwanwan
0x86Fd...A472
贡献值: 53 学分: 10
Web3.
78 关注 3 粉丝
关于
关于我们
社区公约
学分规则
Github
伙伴们
DeCert
ChainTool
GCC
UpChain
合作
广告投放
发布课程
联系我们
友情链接
关注社区
Discord
Twitter
Youtube
B 站
公众号

关注不错过动态

微信群

加入技术圈子

©2025 登链社区 版权所有 | Powered By Tipask3.5|
粤公网安备 44049102496617号 粤ICP备17140514号 粤B2-20230927 增值电信业务经营许可证

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

提醒

检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
编辑封面图
封面预览

创建课程

编辑封面图
建议尺寸: 1920*1080
编辑封面图
封面预览