透明代理和uups代理哪个更省gas ,为什么?
在比较透明代理(Transparent Proxy)和UUPS代理(Universal Upgradeable Proxy Standard)时,UUPS代理通常更省Gas。以下是原因的详细解释:
1. 透明代理的工作原理
- 透明代理使用一个独立的代理合约来转发调用到逻辑合约(实现合约)。
- 它通过
delegatecall将调用转发到逻辑合约,同时在代理合约中保留了升级逻辑。 - 升级逻辑由代理合约中的管理员函数控制。
Gas 消耗的原因:
- 每次调用都需要通过代理合约转发到逻辑合约,这会增加额外的存储和逻辑开销。
- 升级逻辑(如管理员权限检查)也存在于代理合约中,增加了合约的复杂性和调用成本。
2. UUPS代理的工作原理
- UUPS代理将升级逻辑移到了逻辑合约中,而代理合约本身只负责转发调用。
- 逻辑合约实现了
upgradeTo等升级函数,直接控制合约的升级。
Gas 优化的原因:
- 代理合约更轻量:UUPS代理的代理合约只负责调用转发,不包含升级逻辑,因此更简单、更轻量。
- 减少存储开销:透明代理需要额外的存储槽来记录管理员地址,而UUPS代理不需要这些额外的存储。
- 调用成本更低:由于代理合约的逻辑更少,调用时的 Gas 消耗也更低。
3. 对比总结
| 特性 | 透明代理 | UUPS代理 |
|---|---|---|
| 升级逻辑位置 | 在代理合约中 | 在逻辑合约中 |
| 代理合约复杂度 | 较高(包含升级逻辑) | 较低(仅负责调用转发) |
| 存储开销 | 需要额外存储管理员地址等信息 | 不需要额外存储 |
| 调用成本 | 较高(多了权限检查等逻辑) | 较低(代理合约更轻量) |
| Gas 消耗 | 较高 | 较低 |
4. 为什么 UUPS 更省 Gas?
- 轻量化代理合约:UUPS代理的代理合约仅负责调用转发,减少了不必要的逻辑和存储操作。
- 减少存储槽使用:透明代理需要额外的存储槽来记录管理员地址,而UUPS代理不需要这些额外的存储。
- 调用路径更短:UUPS代理的调用路径更短,减少了权限检查等逻辑的执行。
5. 注意事项
- 安全性:UUPS代理将升级逻辑放在逻辑合约中,可能会增加升级逻辑被篡改的风险,因此需要严格的权限管理。
- 复杂性:透明代理的升级逻辑独立于逻辑合约,管理更清晰,但成本更高。
6. 结论
在 Gas 优化方面,UUPS代理更省Gas,因为它的代理合约更轻量,调用成本更低,存储开销更少。然而,选择哪种代理模式需要根据具体的业务需求和安全性要求来决定。

浙公网安备 33010602011771号