现代 DeFi: Uniswap V4

概述 在上一篇博客内,我们详细介绍了 Uniswap V3 的基础原理。在本篇博客内,我们将继续介绍与 Uniswap V3 差别不大的 Uniswap v4 的原理及代码。需要注意的,Uniswap v4 的 AMM 曲线部分与 Uniswap v3 是一致的,但增加了一些优化的业务逻辑。本文将跳过所有与 Uniswap v3 类似的部分,只介绍 Uniswap v4 的特性。 ...

January 1, 2025 · 39 min · 19458 words · WongSSH

现代 DeFi: Uniswap V3

概述 本文将带领读者从零实现 Uniswap V3 的所有功能。在内容上,本文主要参考了 Constructor | Uniswap V3 Core Contract Explained 系列教程,同时部分内容也来自 Uniswap V3 Development Book 以及 Paco 博客。 本文内的代码可以参考 clamm 代码库。 ...

December 12, 2024 · 38 min · 18851 words · WongSSH

现代 DeFi: 最小化借贷协议 Morpho

概述 Morpho 是目前以太坊内第四大借贷协议(数据来源为 defillama)。相比于其他高度复杂的借贷协议,Morpho Blue 的合约使用了 500 行代码就完成了所有的借贷工作。同时,Morpho 也是一个无许可的借贷协议,任何用户都可以调用合约内部的 createMarket 函数使用指定的参数创建交易市场。但是需要注意,Morpho 也并不是完全自由的,用户不可以随意指定一些借贷参数。 ...

November 28, 2024 · 31 min · 15215 words · WongSSH

深入解析AAVE智能合约:取款

概述 本文主要介绍AAVE V3合约中的取款withdraw函数。在阅读本文前,请读者确保已经阅读过以下文章: AAVE交互指南,本文将大量使用此文中给出的各种数学计算公式 深入解析AAVE智能合约:存款,此篇文章内给出的部分函数和大部分数据结构在本文内页有所使用,重复部分在本文内不再解释 读者也可选读深入解析AAVE智能合约:计算和利率,此文介绍了数学计算底层实现逻辑,与代码逻辑关系不大,读者可选读此文。 本文可认为是对深入解析AAVE智能合约:存款的进一步补充,由于取款逻辑较为简单,所以此文的关键在于进一步深挖某些常用函数。这些函数在《存款》一文中虽有提及但未深入探讨的函数,如updateInterestRates等。 代码分析 在src/protocol/pool/Pool.sol合约内,我们可以找到如下函数: ...

December 28, 2022 · 13 min · 6430 words · WongSSH

深入解析AAVE智能合约:计算和利率

概述 本文主要讨论AAVE V3中的数学计算模块,该模块位于src/protocol/libraries/math文件夹内,基础合约为WadRayMath。 ...

December 21, 2022 · 6 min · 2833 words · WongSSH

深入解析AAVE智能合约:存款

概述 我们在上一篇文章AAVE交互指南中主要介绍了aave前端、利率计算等内容,本篇文章 将在交互指南基础上介绍aave-v3的合约源代码的相关情况。 与之前所写的深入解析Safe多签钱包智能合约系列文章不同,本文主要以我们在AAVE交互指南中进行的合约操作为主线进行分析介绍,较为实战化。 相比于其他项目,AAVE提供了一个较为完整的文档。在文档内基本涵盖了所有函数的签名及其作用,读者也可作为阅读源代码的重要参考。 AAVE的总体架构如下: ...

December 10, 2022 · 24 min · 11900 words · WongSSH

AAVE交互指南

概述 本文主要介绍如何在AAVE内进行质押、借贷等基本操作,为读者进一步研究AAVE源代码奠定坚实的基础。 本文要求读者具有以下条件: 熟悉以太坊钱包使用 拥有一定的GoerliETH测试网ETH,可前往Goerlin Faucet进行领取 上述条件可以保证读者可以理解本文的大部分内容,由于笔者本人具有较强的技术背景且未来准备编写AAVE智能合约解析系列文章,所以本文给出了部分合约裸交互(即直接与合约函数交互而并不通过网页),理解这一部分内容需要读者了解智能合约开发和cast使用。如果您不是技术人员,可以酌情跳过此部分。考虑到安全性问题,本文提供的裸交互均为eth_call而不涉及真正的交易(需要签名和区块确认的交易)。 ...

October 15, 2022 · 21 min · 10254 words · WongSSH