"Locked"前缀的由来:thirdweb 漏洞后锁定、快照与迁移的标准动作 图 1
"Locked"前缀的由来:thirdweb 漏洞后锁定、快照与迁移的标准动作 · 图 1

2023 年 11 月到 12 月,web3 圈经历了一场”没被盗也算危机”的事件:一个被大量项目使用的开源合约库里的组合用法存在漏洞,虽然尚未发现被盗,但无数老合约必须尽快处置。处置方式催生了一个当时刷屏的现象——一大批合集的名字前缀突然多了”[Locked]“字样,NFT 突然转不动了。这篇文章复盘漏洞的成因结构、平台方的处置动作链,以及普通持有人如何在”锁”和”迁”的过程里保护自己。

漏洞是什么:两个常用标准的组合出了问题

工具商 thirdweb 后来在安全报告中说明:2023 年 11 月 20 日,其审计伙伴 0xMacro 通报了一个在常见开源库中对两个标准的组合使用(multicall 批量调用与转发器相关的调用模式)存在的漏洞,影响部分经其面板和 SDK 预建的合约。这类合约广泛存在于合集铸造、领取、市场等场景。平台在 11 月 22 日 19 时(太平洋时间)之前为新建部署推出了修复版本,12 月 4 日公开发布通报,12 月 8 日披露已有超过 9,800 个合约通过专用工具完成处置、覆盖 37 条链;截至公告时,该漏洞尚未在 thirdweb 合约上被利用。

对持有人来说,漏洞本身的技术细节不重要,重要的是它的形态:可利用、未利用、存量合约大量中招。这正是”提前锁”的合理前提。

"Locked"前缀的由来:thirdweb 漏洞后锁定、快照与迁移的标准动作 图 2
“Locked”前缀的由来:thirdweb 漏洞后锁定、快照与迁移的标准动作 · 图 2

处置三板斧:锁、快照、迁移

工具给出的处置路径分两种。可升级的合约,升级到修复版即可。不可升级的老合约,走”锁定—快照—迁移”:先锁定,通常包括在合约元数据名称前加”[Locked]“、停用铸造与转账等关键动作、回收全部管理权限,并尽量把散落的调用合并成一笔交易完成;再做快照,把每个持有人对应的代币清单固化下来,质押或托管在其他合约里的代币不在快照范围内,所以平台建议先让用户从这些池子里取出再锁;最后部署新合约,用快照的默克尔根把新代币空投或开放领取给原持有人。

锁定这一步是不可逆的:转不动、铸不了、以后也不再能用,它的作用只是把资产”原地封存”,等新合约接管。

Gala VOX 的完整执行样本

游戏公司 Gala 对旗下 VOX 合集的公告提供了一个完整的落地样本:确认部分合约受影响后,先锁死相关合约使漏洞不可被利用;随后声明漏洞未被利用、采取的是预防措施;接着完成快照并部署新合约,向快照时点的持有人自动空投新代币,持有人无需操作即可继续在以太坊上转移新币;同时推进与 OpenSea 调整合集收录,并把受影响的代币情况通报主流交易所做风险标记;对领取异常的持有人开放工单通道并给出截止日期。

这份清单值得抄作业的原因在于:它展示了”安全事件”和”用户资产事件”的分界线——只要完成了快照与迁移,旧合约锁不锁都不再影响所有权;反过来,任何拿”旧币被锁”制造恐慌、私聊要你操作的人,都该先被当成可疑。

用户核对清单

看到自己收藏的合集改名带”[Locked]“:先确认这是项目官方或工具商公告的处置,而不是异常;不要向任何”解封地址”主动转账或签授权;新代币如果是自动空投,核对合约地址是否在官方公告里列出;质押、在其他平台挂单中的代币要按公告要求提前取回;交易所标记期间出入金和上链确认可能有特殊处理,以各平台公告为准。

时间尺度上的两个教训

第一条关于窗口:从 11 月 20 日接报到 12 月 4 日公开,中间隔了两周,工具商选择先修补新部署、压住信息再发布,这段静默期里旧合约持有人既不知情也无从选择,这是”负责任披露”模式的固有代价——它同时保护了未修补合约,也推迟了用户的知情权。第二条关于记录:锁定合约不会消失,它会永远挂在浏览器里,名称带前缀、总供应不变、无人可动;几年后有人翻钱包看到”转不动的 NFT”,第一反应应该是去查当年有没有快照与迁移,而不是找”解锁服务”。

本文所涉数字与日期以 thirdweb 与 Gala 官方公告为准。本文不构成投资建议;任何要求你”配合安全处置”提供助记词或签名的,都要按钓鱼处理。