智能合约为什么可以升级?代理合约、管理员权限和风险是什么?

🔄 区块链上的代码不可修改,智能合约为什么还能升级?
常见做法不是修改原合约代码,而是将系统拆成两部分:
代理合约:保留用户访问地址、余额与状态数据
实现合约:提供实际业务逻辑

用户始终与代理合约交互;代理通过 delegatecall 执行实现合约的代码,但执行环境、存储和余额仍属于代理。升级时,管理员只需将代理记录的实现地址从 V1 切换到 V2。

常见模式包括:
Transparent:升级与管理员机制位于代理侧
UUPS:升级逻辑位于实现合约,必须严格限制 _authorizeUpgrade
Beacon:多个代理读取同一 Beacon,更新 Beacon 可同时切换这些代理的实现

可升级机制便于修复漏洞和增加功能,但升级权限也可能改变费用、冻结、铸造及转账规则。因此必须关注:
谁拥有升级权限(单签、多签、时间锁还是 DAO)
新实现是否公开源码并经过审计
存储布局是否兼容(变量顺序或类型改变可能破坏旧数据)
初始化函数是否只能执行一次,实现合约是否已锁定
是否公开升级事件并留出用户审查时间

⚠️ 可升级并不等于无需信任。代理地址虽不变,真正决定系统规则的是它当前指向的实现代码。

下一期预告|周五·交易技术课·第006期
《ATR 是什么?如何用波动率设置止损而不是固定百分比?》