
蒋剑伟
代理模式可能是学习 Solidity 开发中最令人困惑的方面之一,因为在其他软件开发领域几乎没有类似的类比。进一步复杂化的问题是——尽管从概念上讲,delegatecall 是容易理解的——完全掌握其细微差别需要对 EVM(以太坊虚拟机)和 Solidity 编译器的工作原理有一定的背景知识。这些细微差别并不是简单的“你知道吗”的琐事,而是对智能合约的运行方式有重要影响。此外,代理模式的标准仍在发展中——截至撰写本文时,ERC-7201 到现在还不到一年的时间。
任何合格的 Solidity 开发者或审计员,都应该对 delegatecall 及其所依赖的代理模式有全面的理解。代理模式并不简单,一个错误就可能破坏可升级性,或者更糟,导致灾难性错误。
本书旨在帮助这样的读者高效且全面地掌握这一主题,同时深入探讨在其他文献中省略或忽视的细节。与此同时,我们力求范围明确;本书不是关于 EVM 的完整课程——我们仅讨论与正确理解 delegatecall 及现有模式设计相关的部分。
详解 Compound V3 - 待修改
一个协议工程师坐下来与你一起,逐步讲解代码库和设计决策。这就是本书的样子。
关于 Compound V3
Compound 只借出一种资产,称为“基础”资产。
与 Compound V2(和 AAVE)不同,后者允许借款人从资产菜单中借款,在 Compound V3 中,借款人只能借用单一资产(而贷方也只能贷出单一资产)——每个“市场”。在撰写本文时,有一个借用(和贷出) USDC 的市场和一个借用和贷出 ETH 的市场。