什么是 ERC-4626 代币标准?
作者 Alchemy
虽然目前存在几种主流的代币标准,去中心化金融(DeFi)领域在代币化金库方面仍然存在一个反复出现的重大问题。这促成了最新标准 ERC-4626 的诞生。
本文将解释什么是金库、开发者在代币化金库时面临的问题,以及 ERC-4626 如何解决 DeFi 开发中的这一问题。然后我们会深入探讨这一标准带来的新变化,并展示如何在智能合约中实现它们。
什么是金库?
金库是一种多签解决方案或智能合约,可以存储和管理加密资产等资产。每个金库都会产生对应的代币作为收益的一种形式。这些生成的代币之后可以兑换回最初锁定在金库中的代币。
例如,当你在自动做市商(AMM)Sushiswap 上质押 Sushi 时,你会获得 xSushi 作为奖励。类似地,当你在 DeFi 借贷协议 Compound 上通过收益耕作(yield farm)USDC 稳定币时,你也会获得 cUSDC。
cUSDC 和 xSushi 都是计息代币(yield-bearing token),可以兑换回原始代币(在此例中即 USDC 或 SUSHI)。只要金库或资金池中锁定的代币在增加,计息代币的价值就会随之上升。
金库被认为比钱包更好、更安全,这也是许多 DeFi 协议选择将资金存入金库的原因。使用金库的知名 DeFi 协议包括 Sushiswap、Aave、Balancer 和 Compound 等。
代币化金库存在什么问题?
开发者在处理计息代币时面临的问题在于如何整合不同协议的代币。
例如,如果你想构建一个 DeFi 应用,需要整合各个协议的代币,你就得逐一研究每种代币,了解其收益累积模式,并将其调整适配到你的代码库中。
如果你想整合 Maker DAO 的 vDAI、Curve 上的 stETH 等等,你需要理解这些智能合约各自的特殊之处,并构建自定义方案才能成功将它们整合进你的 DeFi 应用。
除了整合不同计息代币这一过程本身既繁琐又耗时之外,由于潜在的错误,它还会增加智能合约风险。
开发者需要花费更多时间检查适配器中的潜在漏洞,在某些情况下,甚至可能需要将这项工作外包给智能合约审计人员,而这可能相当昂贵。鉴于目前有大量协议和 DeFi 应用的安全性遭到攻击者破坏,这一点变得更加重要。
ERC-4626 标准是谁提出的?
2021 年底,Fei Protocol 创始人 Joey Santoro 注意到开发者整合各自独立的计息代币十分困难,于是带领另外四名 Ethereum 开发者提交了Ethereum Comment Proposal 4626(ERC-4626)。
经过多轮审查和讨论后,Ethereum 最终在 2022 年 5 月批准了该标准。
ERC-4626 对金库有哪些好处?
ERC-4626 的主要好处在于它将代币化金库标准化,使协议整合变得更容易、更不易出错。
由于现在有了一个可以直接整合的通用标准,实际上不再需要为每个协议单独构建适配器。简而言之,它加快了开发速度,将可组合性发挥到极致。
同样,由于构建者不再需要审计人员来协助其适配器和接口,成本也随之降低。最重要的是,ERC-4626 增强了处理计息代币的应用和收益聚合器之间的安全性。
ERC-4626 标准引入了哪些变化?
有了新的 ERC-4626 代币标准后,开发者在构建涉及收益代币的 DeFi 应用时,终于有了统一的标准可循。
简而言之,ERC-4626 标准实现了以下特性:
- 为想要接入该标准的开发者提供优化的金库接口
- 存款时给予份额(shares)作为回报,份额代表对金库底层代币的部分所有权
- 为开发者构建计息合约提供一致的标准
- 经过实践检验的金库代币安全性
ERC-4626 的工作原理:函数与事件
ERC-4626 是 ERC-20 标准的扩展,并与之兼容。因此,ERC-20 代币合约中适用的大多数常规变量、事件和函数在 ERC-4626 金库标准中依然适用。
该金库标准引入了"份额"(shares)这一概念,作为从整个资金池中获得部分所有权的方式。这些 shares 指的就是计息代币。
现在让我们开始使用 ERC-4626 进行开发。
虽然你也可以使用 Cairo、Viper 等语言,但我们将使用 Solidity 来编写这份合约。
1. 将 OpenZepellin 扩展导入你的 IDE
打开你的 IDE(我们推荐使用 Remix)后,指定编译器所使用的 Solidity 版本。
在本例中,声明你使用的是 0.8 版本。之后,你需要导入两个 OpenZeppelin 扩展:ERC-20 和 ERC-4626。
接下来,创建并命名一个合约。
2. 创建你的合约
命名你的合约,并进一步确定它同时基于 ERC-20 代币和 ERC-4626。
Contract, testingVaults is ERC20, IERC4626 { your entire code here}
3. 实现该标准
创建合约后,你需要了解该标准中方法、函数和事件的一些重要变化。接下来,我们看看 ERC-4626 中的一些方法和事件:
存款(Deposit)
当用户向金库存入资金时,deposit 函数会触发智能合约向存款人铸造相应数量的份额。作为一个事件,每当发生存款时,智能合约必须触发该事件。
通过这个函数,我们指示合约将一定数量的代币存入金库,并将份额的所有权赋予调用者。提款函数的编写方式与此类似。
提款(Withdrawal)
提款函数帮助所有者销毁份额以换取资产。当从金库中提款时,必须触发提款事件。
该事件中的 address indexed _from 代表批准将代币存入金库的用户,而可以提取已存代币的人则是 address indexed _to。
Asset 与 totalAsset
金库代币的地址应在 asset 函数中使用。智能合约中底层资产的总量应在 totalAssets 中声明。
convertToShares 与 convertToAssets
在 ERC-4626 标准下,有两个转换函数:convertToShares 和 convertToAssets。
当你需要将资产转换为份额时,convertToShares 是应该调用的正确函数,因为它会返回对应该资产数量应发放的份额数。
反之,convertToAssets 的作用方向相反,用于将份额转换为资产。
铸造(Mint)
当发生存款时,mint 函数会为接收者调用。maxMint 是金库中可以为某个用户或接收者创建的份额总量。作为开发者,你需要设置这个值。
赎回(Redeem)
redeem 函数会销毁所有者(msg.sender)的一定数量份额,并将资产发送给接收者。如果由于某种原因份额无法被赎回,redeem 必须被回滚(revert)。
maxRedeem 是所有者在金库中可以赎回的份额数量。
预览(Preview)
在使用 preview 系列方法时,开发者必须清楚,这些方法返回的值并不完全精确,但会足够接近。你不应将它们当作预言机(oracle)来依赖。
你可以将 preview 与其他方法结合使用,例如 mint、withdraw、redeem 和 deposit。
到这里就完成了。你已经成功开启了 ERC-4626 的开发之旅!
总结——ERC-4626 的未来
随着 ERC-4626 的出现,DeFi 领域正迎来一波新的浪潮。
由于此前没有统一标准,DeFi 聚合器一直很难聚合多种计息代币。但现在,借助 ERC-4626,只需一次 API 调用就能获取计息代币的详细信息。
借助这一经过实践检验的标准,为增强涉及计息代币的 DeFi 应用安全性而额外付出的努力问题,在很大程度上得到了解决。
未来几年,各 DeFi 协议之间可组合性和互操作性的应用将不断增加。这一标准甚至有可能成为构建和推出 DeFi 生态系统中全新产品的基石。
相关概览
Ethereum2026年7月28日
在 Robinhood Chain 上发行 memecoin
使用 Foundry 和 Alchemy RPC,在 Robinhood Chain 主网上编写并部署固定供应量的 ERC20,或者用 Alchemy CLI 把整个发行流程交给编码代理完成。
Ethereum2025年11月18日
什么是 Ethereum Fusaka 升级?12 个 EIP 的开发者指南
对 Fusaka 升级的实用解析,介绍 12 个核心 EIP,以及它们如何改变 Ethereum 技术栈中的数据可用性、密码学、Gas 成本和验证者操作。
Ethereum2025年5月19日
EIP-7702:Pectra 升级后 Ethereum 开发者快速集成指南
Ethereum 即将迎来 EIP-7702 这一重要升级。以下是面向所有开发者的集成注意事项快速指南。

构建区块链应用
Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。