现代 DeFi: AAVE V4
概述 本文核心内容其实是对 AAVE v4 代码仓库的 Overview 文档 的翻译,但是相比于文档,本文补充了与该部分对应的代码,所以本文可以视为以文档作为纲领对 AAVE v4 代码库的阅读。 AAVE v4 继承了 AAVE v3 内的一些概念,对于这些概念,建议读者阅读笔者之前编写的 AAVE 交互指南 一文,该文内给出了概念的功能和数学表达。 ...
概述 本文核心内容其实是对 AAVE v4 代码仓库的 Overview 文档 的翻译,但是相比于文档,本文补充了与该部分对应的代码,所以本文可以视为以文档作为纲领对 AAVE v4 代码库的阅读。 AAVE v4 继承了 AAVE v3 内的一些概念,对于这些概念,建议读者阅读笔者之前编写的 AAVE 交互指南 一文,该文内给出了概念的功能和数学表达。 ...
概述 Balancer v2 作为以太坊内最核心的 AMM 之一,不久前遭受了一次严重的黑客攻击,接近 1 亿美金的 ETH 流动性质押代币被盗取。本文将以黑客在主网上发起的 攻击交易 为例,该攻击攻击了 [WETH, BPT, osETH] 池。我们将以此攻击为例,介绍攻击者如何执行攻击,以及攻击合约到底进行哪些链上计算。 ...
概述 在 AMM 领域,跨多个 AMM 进行路由优化始终是一个问题。所谓路由优化是指单笔 swap 对单个池子可能产生较大冲击,但是假如我们将该笔交易分配到多个池子,那么我们可以获得更好的交易输出。一个典型的案例是 odos 求解出的 100 ETH 兑换 USDC 的路径: ...
概述 在构建基于 Uniswap V4 Hook 的借贷协议 Licredity 时,我们希望引入 PT 作为担保品,但此前我并没有详细了解过 PT 预言机的开发生态,所以我阅读了目前 Morpho 内几个较大使用 PT 的市场,并阅读了这些市场内的预言机实现。 ...
概述 Lotus Router 是 jtriley2p 开发的一个用于 MEV 的交易路由的合约。此处我们需要特别强调该路由合约是适用于 MEV 交易的,该路由合约完全不会处理来自 Uniswap 合约的回调内的数据,这使得交易发起者必须预先计算出精确数值已进行交易。 ...
概述 在 Uniswap V4 内,我们可以看到一些复杂的数学计算模块,这些数学计算相关的模块大部分都使用了内联汇编实现,同时包含了大量的 magic number。在本文,我们将详细分析数学计算模块的实现。 ...
概述 在上一篇博客内,我们详细介绍了 Uniswap V3 的基础原理。在本篇博客内,我们将继续介绍与 Uniswap V3 差别不大的 Uniswap v4 的原理及代码。需要注意的,Uniswap v4 的 AMM 曲线部分与 Uniswap v3 是一致的,但增加了一些优化的业务逻辑。本文将跳过所有与 Uniswap v3 类似的部分,只介绍 Uniswap v4 的特性。 ...
概述 本文将带领读者从零实现 Uniswap V3 的所有功能。在内容上,本文主要参考了 Constructor | Uniswap V3 Core Contract Explained 系列教程,同时部分内容也来自 Uniswap V3 Development Book 以及 Paco 博客。 本文内的代码可以参考 clamm 代码库。 ...
概述 Morpho 是目前以太坊内第四大借贷协议(数据来源为 defillama)。相比于其他高度复杂的借贷协议,Morpho Blue 的合约使用了 500 行代码就完成了所有的借贷工作。同时,Morpho 也是一个无许可的借贷协议,任何用户都可以调用合约内部的 createMarket 函数使用指定的参数创建交易市场。但是需要注意,Morpho 也并不是完全自由的,用户不可以随意指定一些借贷参数。 ...
概述 本文主要介绍AAVE V3合约中的取款withdraw函数。在阅读本文前,请读者确保已经阅读过以下文章: AAVE交互指南,本文将大量使用此文中给出的各种数学计算公式 深入解析AAVE智能合约:存款,此篇文章内给出的部分函数和大部分数据结构在本文内页有所使用,重复部分在本文内不再解释 读者也可选读深入解析AAVE智能合约:计算和利率,此文介绍了数学计算底层实现逻辑,与代码逻辑关系不大,读者可选读此文。 本文可认为是对深入解析AAVE智能合约:存款的进一步补充,由于取款逻辑较为简单,所以此文的关键在于进一步深挖某些常用函数。这些函数在《存款》一文中虽有提及但未深入探讨的函数,如updateInterestRates等。 代码分析 在src/protocol/pool/Pool.sol合约内,我们可以找到如下函数: ...