Uniswap作为一种去中心化金融(DeFi)应用,允许用户以无需信任的方式交换代币。它采用自动做市商(AMM)模式,通过流动性池实现代币交换,并解释了AMM的工作原理、优势和劣势,以及与Uniswap V2架构相关的技术细节。
本文详细阐述了在自动做市商(AMM)中如何确定交易对的价格结算,特别是如何在保留恒定乘积公式的情况下进行代币交换。通过使用Uniswap V2示例,讨论了恒定乘积理论、实现和费率的影响,以及如何计算合理的交换数量,确保交易有效性。
本文深入解析了Uniswap V2的swap函数设计,包括其逻辑、闪贷功能、安全性检查以及如何通过代码实现K值平衡。文章通过代码片段和详细的解释帮助开发者理解该函数的运行机制。
文章详细介绍了Uniswap V2中的流动性提供者(LP)代币的燃烧和铸造过程,包括相关函数的工作原理、安全检查和费用机制。
本文详细介绍了Uniswap V2中协议费的收集机制,包括费用计算的数学公式、代码实现以及影响因素。文章还指出了在流动性提供者调用`mint`或`burn`时收集费用的效率问题,并通过示例和代码片段深入解释了`_mintFee`函数的工作方式。
本文详细探讨了Uniswap中的价格定义,强调价格作为一种比率的重要性,并介绍了时间加权平均价格(TWAP)的概念及其在防止价格操纵攻击中的作用。此外,文章深入分析了如何在Solidity中实现TWAP的计算和相关的智能合约设计,包括累积价格、快照机制和可能的溢出问题。
文章详细介绍了 Uniswap V2 Library 的功能和使用方法,主要包括getAmountOut()、getAmountIn()、getAmountsOut()、getAmountsIn()、getReserves() 和 quote() 等函数的工作原理和数学推导过程,并提供了相关代码和图片说明。
本文详细介绍了Uniswap V2的Router合约,包括其功能如安全地铸造和销毁LP代币、交换代币、处理ETH和滑点检查等,并解释了Router02相对于Router01新增的费转移代币支持功能。文章还探讨了添加和移除流动性的内部机制,以及与UniswapV2Library的交互。
文章提供了使用现代Solidity或Huff从头重建Uniswap v2的详细指南,涵盖了多个优化建议和注意事项。
《Uniswap V2 Book》是一本深入解析Uniswap V2代码的书籍,不仅逐行解释代码,还探讨了设计背后的原因、替代方案及决策动机。书中还引入了实践问题,并指导读者如何实现Uniswap V2的克隆版本。
Uniswap V2 之书是对代码库的全面且深入的解释。我们不仅仅是截取代码并逐行解析。希望你已经有能力阅读代码!我们会解释为什么一开始要这样编写,可能的替代方案是什么,以及决策背后的动机。
在编写这本书的过程中,我们发现很多工程师低估了这个协议的深度——它不就是一个 xy = k 吗?实际上,Uniswap V2 充满了巧妙的工程决策,它用少量的代码处理了相当多的复杂性。这是每个 Solidity 开发者都可以从中学习的内容。
此外,根据 DeFi Llama Fork Tracker,Uniswap V2 无论是按 TLV(总锁定价值)还是分叉数量,都是被分叉最多的 DeFi 协议。理解这个协议所付出的努力将让你对其他数百个 DeFi 应用有深入的了解。
对于那些想要实践的人,我们在读者已经掌握了足够知识的地方引入了来自 DamnVulnerableDeFi 、 Ethernaut 和 Mr Steal Yo Crypto 的问题,以便读者能够以最小的难度解决问题。最后,我们以一个指南作为结束,教你如何自己实现一个 Uniswap V2 的克隆,但由于原始代码库已经有四年多的历史,因此我们做了一个现代化的改进。
Uniswap 并不直接使用 ERC 4626 或 ERC 3156。然而,熟悉这些标准是有帮助的,因为 Uniswap 使用了类似的概念。任何一个优秀的 Solidity 开发者或审计员都应该熟悉这些标准。所以如果你还不了解它们,请先阅读那些文章。Uniswap 的文章将假设你已经了解这些标准。
Uniswap 使用定点算法来记录价格,因此读者在阅读关于 TWAP Oracle 的章节之前,应该先熟悉这一概念。
请控制好节奏——往脑子里塞满新概念并不是一种有效的学习方式。我们建议每天只阅读一章,然后在不看指南的情况下自己阅读源代码,以确保一切都理解透彻。
详解 Compound V3
零知识证明之书
Solana 60 天课程
代理模式与 Delegatecall 规范手册