换币不用两头跑:ERC-4931 代币升级接口的比例、状态与零头处理
项目换合约是老剧情:迁移、合并、修复,每一步都可能伴随”请把你的旧币换成新币”的公告,而每一次公告同时也是一次钓鱼邀请。ERC-4931 试图给”升级”这个动作装上标准仪表盘,让持有人不问任何人就能查清规则。标准文档记录的状态为 Stagnant,创建于 2021 年 11 月 2 日,现状以标准仓库为准。
一份仪表盘:六个只读函数
接口先回答”谁和谁”:upgradeSource 返回被升级的旧合约地址,upgradeDestination 返回新合约地址,两个地址写进链上,公告里再多的链接都不如链上这一对可信。再回答”现在能不能换”:isUpgradeActive 是升级总开关,规范要求它为真时合约正在受理升级、为假时必须返回假,不存在”公告说开了链上没开”的模糊地带;若合约实现可选的降级扩展,另有 isDowngradeActive 对应回退窗口。接着是”换多少”:ratio 返回一个二元组,比如 (3, 1) 表示每 1 枚源币换 3 枚目标币,比例直接由合约给出,不由网页文案给出。totalUpgraded 记录累计已升级数量,未实现降级时严格递增,实现降级时可能随回退回落——两个方向都写进了规范文本。

零头去哪了:computeUpgrade 的诚实设计
这份接口最有人情味的部分是 computeUpgrade(sourceAmount):它做一次纯查询,返回两个数——你能拿到的目标币数量,以及换不干净的零头数量。规范给的例子很具体:比例 (3, 2) 意味着每 2 枚源币配 3 枚目标币,你提交 5 枚源币,函数返回 (6, 1)——4 枚源币换成 6 枚目标币,剩下 1 枚源币原地留下。零头不会被静默吞掉,而是被显式命名。想”试算但不成交”,调用这个 view 函数即可,不需要真的烧一笔 gas 去试。降级方向的 computeDowngrade 同理镜像。
它挡不住钓鱼,但能验钓鱼
必须把话说全:实现这套接口的项目不会因此免疫冒充——骗子完全可以部署一个字段齐全的假合约。价值在核验成本:真伪对比从”读十页公告”压缩成一次调用清单。第一步,升级合约地址只从项目官方文档与已验证的源合约引用中取,不看群链接;第二步,调用 upgradeSource 与 upgradeDestination,确认返回的两个地址与自己长期持有的源币、官方公布的目标币逐字符一致——假升级合约最常见的死穴就是源币地址指向冒牌代币;第三步,看 isUpgradeActive 与官方公告的时间线是否一致,公告满天飞而开关为假,要么活动未开始要么渠道有诈;第四步,用 computeUpgrade 算一遍自己持仓的应得数量与零头,再到模拟环境或小额试换核对输出,最后才动大额。
对 NFT 玩家的引申
虽然接口面向 ERC-20,这套”问合约而不是问公告”的方法论对藏品同样适用:版本迁移、合集重铸、平台换壳,核验顺序同样是地址对来源、状态看链上、数量先试算。历史教训反复验证同一件事——升级类公告是钓鱼高产区,恰恰因为持有人有”不操作会作废”的时间焦虑。任何升级都有官方时间线可查,真正的迁移不会以小时为单位催促,越是急的文案越值得慢下来验证。
为什么很多升级选择不用标准接口
值得一提的是,现实中大量项目迁移并没有实现 4931,而是自建兑换页。原因通常是条款太个性化:分阶段比例、快照资格、税务合规开关,很难塞进六个只读函数。这提醒读者不能反向使用本文——查不到 4931 接口不等于升级是假的,只能说明你必须回到项目文档与已验证源码逐条核对条款。标准接口是加分项与加速器,不是真伪判定器;把”有没有 4931”当成唯一检验,反而会给做得干净的定制合约泼脏水、给字段齐全的假货放行。
本文只做机制科普,不构成投资建议;文中提案状态以标准仓库当前记录为准。凡以”资产升级”为名要求先转币、先授权、先填助记词的,均与本机制无关,按诈骗处理。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。