Ethereum-Solidity Quiz Q2:Solidity 中的 proxy 是什么?
发布: (2025年12月24日 GMT+8 05:57)
2 min read
原文: Dev.to
Source: Dev.to
什么是 Solidity 中的代理?
在 Solidity 中,代理是一种用于实现合约可升级性的设计模式。这一点很重要,因为智能合约代码在部署到区块链后是不可变的。
代理是一个智能合约,它存储状态变量,同时将所有逻辑委托给一个或多个实现合约。当代理收到调用时,它使用低层的 delegatecall 将调用转发到逻辑合约,代码在实现合约中执行,但执行上下文(存储、msg.sender、msg.value 等)仍然是代理合约本身。
基本的可升级架构
- 代理合约 – 存储状态并将调用委托给实现合约。
- 实现合约 – 包含实际的业务逻辑。
- 管理员 – 一个单独的地址(或更好的多签),负责升级存储在代理中的实现合约地址。
常见的代理模式
- UUPS(通用可升级代理标准) – 升级逻辑位于实现合约中。
- 透明代理 – 使用更复杂的模式,以避免管理员函数和用户函数之间的函数选择器冲突。
- Beacon 代理 – 多个代理可以指向同一个 Beacon 合约,后者持有实现合约地址。