代理合约(Proxy contract)
简而言之 代理合约将调用转发给独立的逻辑合约,让开发者能在不更改代币地址的情况下,日后修改代币代码。
代理合约是一种智能合约,承载用户交互所用的地址并保存数据,但会将每次调用转交给另一个包含实际逻辑的合约。用户始终使用同一个地址,背后的代码却可以替换为新版本。团队会在 Ethereum、BNB Chain 和 Base 上采用这种模式,修复原本部署后就无法修改的代码中的漏洞。
从机制上说,代理使用的是委托调用(delegatecall)。它使用代理自身的存储来执行逻辑合约的代码,因此余额和配置保留在代理中,具体规则则来自实现合约。管理员地址可以是单个钱包、多签钱包或时间锁合约,有权将代理指向新的实现合约。透明代理和 UUPS 等标准的区别在于升级权限由哪里管理,但基本思路相同。
这一点很重要,因为你读过或看过审计的代码,未必是明天实际运行的代码。你买入后,一次升级就可能加入增发函数、黑名单或隐藏的卖出税。代币合约已放弃所有权也可能具有误导性,因为升级权限通常掌握在独立的代理管理员手中。许多正规项目也使用代理,所以这种模式本身不是危险信号。关键在于谁控制升级,以及升级前会提前多久通知。
在区块浏览器上,检查合约是否被标记为代理,并找出实现合约地址和管理员地址。确认管理员是普通钱包还是多签钱包,是否有时间锁强制延迟升级生效,以及审计覆盖的是当前实现版本还是旧版本。查看实现合约的变更记录,留意近期是否发生过替换。Solana 上对应的是设有升级权限的可升级程序;升级权限被撤销,就意味着代码已不可更改。




