Universal Upgradeable Proxy Standard (UUPS)/EIP-1822
Summary
EIP-1822 描述了可升级代理模式的标准,其中upgrade逻辑存储在逻辑合约中。这样,就不需要在代理级别检查调用者是否是代理中的管理员,从而节省了gas。它还消除了实现合约上的函数与代理中的升级逻辑发生冲突的可能性。
UUPS 的缺点是它被认为比 TPP 风险更高。如果代理没有正确初始化或者实现合约要自毁,则无法保存代理,因为升级逻辑存在于逻辑合约上。
UUPS 代理还包含升级时的附加检查,以确保新的实施合同可升级。
一般来说UUPS还包含了EIP-1967.
Implement
- 逻辑合约地址-存储在根据EIP-1967得出的slot中
- 升级逻辑-在逻辑合约中
- 合约验证
如今,当协议寻求部署可升级合约时,这是最广泛使用的模式。
Advantage
- 消除了逻辑合约函数与代理合约冲突的风险,因为升级逻辑存在于逻辑合约上
- 减少了运行时的Gas消费,因为代理合约不需要检查caller是否是admin
- 降低了部署新代理的成本
- 减少了因为EIP-1967带来的存储冲突风险
Disadvantage
- 由于升级逻辑存在于实现合约上,因此必须格外小心,以确保实现合约不会 selfdestruct 或由于初始化不当而处于错误状态。如果 impl 合约被破坏,则代理无法保存。
- 代理依旧会产生Delegatecall的费用