zhwanwan
UniswapV2 技术深度解析项目
本项目基于 Solidity 0.8.30 与 Foundry 工具链,从零完整实现 UniswapV2 的生态系统,包括核心协议、外围组件、安全防护和高级特性,配套 23 篇系统化的中文教程文档。
本项目参照 Jeiwan 的 Programming DeFi: Uniswap V2 系列教程,结合现代 Solidity 开发最佳实践(Foundry + Solidity 0.8.30),为中文开发者提供完整的学习路径。
🌟 项目特色
🎉 项目完成状态
✅ 项目已完结 - 所有核心功能已实现,全部测试通过
已完成的核心模块
📊 项目统计
🚀 快速开始
环境要求
安装步骤
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
🎯 核心特性
🔷 核心协议层
🔶 外围组件层
🔒 安全防护系统
🔮 高级特性
📚 完整学习路径(23 篇系列教程)
🔰 基础篇(第 1-5 篇)
🔧 进阶篇(第 6-14 篇)
🚀 高级篇(第 15-23 篇)
💡 学习建议:建议按顺序阅读教程,每篇文章都配有完整的代码实现和测试用例,可以边学边实践。
⚡ 性能与优化
Gas 优化成果
完整测试套件
测试覆盖范围
✅ 核心协议层(32 测试):Pair 流动性管理、交换、闪电贷、费用机制
✅ 工厂合约(17 测试):交易对创建、地址计算、权限管理
✅ 外围组件(11 测试):Router 流动性操作、精确输入/输出兑换
✅ 安全防护(9 测试):重入攻击防护、恶意代币处理
✅ 预言机系统(12 测试):TWAP 累积价格计算、时间窗口查询
✅ 工具库(3 测试):价格计算、储备查询、路径管理
🛠 技术亮点与最佳实践
现代 Solidity 开发实践
安全防护机制
代码质量保证
🔄 与原版 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 注释 |
功能对比 ✅ 完整实现:
✨ 额外增强:
学习友好性
🎓 适用人群与学习收获
适合以下开发者
学完本项目你将掌握
📖 参考资源
官方文档
学习资源
相关项目
🤝 贡献与反馈
代码贡献流程
git checkout -b feature/your-featureforge testforge fmt文档贡献
反馈渠道
📜 许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。
⚠️ 免责声明
本项目仅供学习和研究使用,未经过专业安全审计,请勿在生产环境或主网中直接部署使用。
🙏 致谢
如果本项目对你有帮助,欢迎 Star ⭐ 支持!
项目作者:RyanWeb31110
项目仓库:https://github.com/RyanWeb31110/uniswapv2_tech
《Web3 敲门砖计划》是一套面向初学者的 Web3 入门读物,共计划推出 100 篇文章,每篇聚焦一个核心概念。
我们不讲高深术语、不堆代码,只讲人话,只讲“你真的该懂的”。
从钱包、DApp 到签名、Gas,再到 DID、ZK、链抽象……让你从零起步,真正理解 Web3 世界运作的底层逻辑。
如果你刚接触 Web3,或者想把碎片知识系统化梳理 —— 这,就是你的敲门砖
专栏结构
与传统 AMM(如 Uniswap V2)遵循的 “xy=k” 恒定乘积模型不同,Uniswap V3 的集中流动性机制允许 LP 将资金聚焦于特定的价格区间。这一设计带来了双重优势:
Uniswap V3 的代码库因其复杂性闻名,其核心在于将数学逻辑与区块链技术的深度融合。为实现集中流动性,协议引入了一系列创新组件:
如果你是初学者,建议可以首先阅读 Uniswap V2 书籍 并完成 Uniswap V2 谜题。
目录
3.Q 数字格式
6.Uniswap V3 工厂以及 Tick 间距和费用之间的关系
8.平方和乘法算法
ERC(Ethereum Request for Comment)标准是以太坊生态中最核心的协议规范,决定了代币、NFT、金库、账户抽象等的行为方式。对于 Web3 开发者和求职者而言,理解 ERC 系列标准不仅是编写合约的基础,更是解构 DApp 与协议交互逻辑的关键。本专题将系统梳理主流 ERC 标准(如 ERC-20、ERC-721、ERC-1155、ERC-4626、ERC-4337 等),从功能定义、代码结构到应用场景、常见变种与扩展标准,逐一讲解其设计理念与实际用法,助你从“会用”到“精通”。适合 Web3 入门者、Solidity 开发者与智能合约面试准备者阅读。
区块链钱包是 Web3 世界的入口。对于 Web3 初学者和求职者来说,理解钱包的工作原理、连接协议与前端集成方式,是迈入去中心化开发的第一步。本专题从理论到实战,系统讲解钱包类型、连接协议(如 WalletConnect、EIP-1193)、登录签名流程(EIP-191、EIP-712)、以及如何使用 wagmi + viem 等现代前端工具实现高质量的钱包连接模块。同时,还涵盖 ENS、合约钱包、UI/UX 最佳实践与常见坑点,帮助你真正掌握“从连接钱包到登录验证”的完整链路。适合希望进入 Web3 行业的前端开发者与技术转型者。
区块链产生的初衷,即解决传统中心化金融系统中的信任问题,通过去除中介来增强交易的安全性和透明度。本专栏文章 将和大家一同深入探讨了区块链的工作机制,包括如何形成交易历史、去中心化和共识机制。通过这系列技术解析,读者将理解区块链如何用代码重构信任体系——不是基于对机构的信任,而是基于对数学法则和博弈论机制的信任。
从智能合约到共识机制,从状态树到 Layer2 扩容,本专题系统梳理以太坊的技术核心与运行机制。内容由浅入深,结合架构图、EVM 指令与开发实战,带你从“懂区块链”进阶为“精通以太坊”。无论你是 Web3 开发者、系统架构师,还是对去中心化技术充满好奇的工程师,这都是一份值得收藏与落地实战的技术学习地图
本专栏旨在系统性地解析区块链中 Gas 的概念、运作机制及其演进,特别聚焦于以太坊生态。通过系列文章,我们将深入探讨 Gas 的基本原理、EIP-1559 的改革、交易生命周期中的 Gas 变化、智能合约的 Gas 优化技巧,以及多链环境下的 Gas 模型对比等内容。专栏内容面向开发者,力求提供清晰、专业的知识体系,助力读者在实际开发中更高效地管理和优化 Gas 费用。
⭐️ 最近在整理交易所钱包开发业务的笔记,趁此机会将我对交易所钱包的业务理解解构出来,供后人参考。
以图为主:大部分逻辑将以流程图方式展现。
图文结合:文字将用来讲解基础概念和描述流程图。
最小代码:每个独立业务将抽离出极简代码的实现,方便理解业务逻辑。
开发语言:大多数程序代码以 Go 、Typescript展示。
PS:文章过于硬核,已下架。。
🎆此专栏知识涵盖以太坊基本知识、solidity基本知识、以太坊核心项目,为以太坊编程初学者提供一个简洁、快速的入门教程。
⭐️专栏特点