不靠任何人先动手:ERC-7955 用 EIP-7702 免许可部署通用 CREATE2 工厂 图 1
不靠任何人先动手:ERC-7955 用 EIP-7702 免许可部署通用 CREATE2 工厂 · 图 1

不靠任何人先动手:ERC-7955 用 EIP-7702 免许可部署通用 CREATE2 工厂

确定性部署是”同一个合约地址出现在所有 EVM 链”的技术底座,NFT 多链部署、跨链地址一致性都靠它。可底座本身有个鸡生蛋问题:那条人人都信任的通用工厂合约,最初是怎么出现在每条链上的?ERC-7955(Permissionless CREATE2 Factory)用 EIP-7702 的第 4 型交易给了一个不需要任何人先动手的答案。按 ercs 仓库记录,该提案状态为 Draft,创建于 2025 年 5 月 15 日。

鸡生蛋问题的三种旧解法各缺什么

想让一条新链上出现指定地址的合约,旧办法有三支箭:预置地址(要求链在创世时预先写入,新链不等你)、由某个已知 EO 在特定 Nonce 上部署(要求大家永远记住并信任那个密钥)、或用固定地址的工厂做 CREATE2 派生(工厂本身又得先部署,回到原点)。三种办法共同的前提是”先有个被信任的东西在场”。ERC-7955 的目标是把任何先验信任都拆掉:任何人在任何兼容 EIP-7702 的链上,用一笔普通交易就能把工厂放到位,参数全网统一。

不靠任何人先动手:ERC-7955 用 EIP-7702 免许可部署通用 CREATE2 工厂 图 2
不靠任何人先动手:ERC-7955 用 EIP-7702 免许可部署通用 CREATE2 工厂 · 图 2

一笔 0x04 交易怎么把工厂放到位

方案围绕 EIP-7702 的 Set Code for EOAs 交易类型展开:这类交易能把一段委托代码临时挂到普通地址上。提案为”部署”这个动作固化了一组参数:一个固定的工厂地址 0xC0DEb853af168215879d284cc8B4d0A645fA9b0E、工厂的运行字节码、以及一个关键的引导代码。流程上,部署者先把引导代码作为 7702 委托目标挂到自己地址,再调用其 deploy 入口:引导代码执行 EIP-1014 定义的 CREATE2 操作码,把字节码已知的工厂合约精确放到那个固定地址上;工厂就位后,任何人再调用工厂的 deploy,用 CREATE2 语义以任意盐值派生出新合约,得到可预先算出的确定性地址。失败的分支也有标准报错,例如 CreationFailedInvalidDelegation。整个机制不需要预装、不需要秘密密钥、不需要链方基础设施配合。

对 NFT 生态的意义与要盯住的风险

用户侧核验一条链上工厂是否”正版”的四步

普通持有人很少亲手部署工厂,但核验能力应当保留。第一步查地址:目标链上直接访问那个规范地址,看有没有代码;没有代码说明这条链还没人做过 bootstrap,任何”我们已在全部链部署”的说法当场存疑。第二步对代码哈希:把该地址的运行字节码与提案表格中公开的运行时码与代码哈希对照,逐字节相同才谈得上”同一份工厂”;这里防的正是同址换码的历史残留。第三步查委托痕迹:bootstrap 依赖 7702 委托机制,核验者可以用浏览器工具看相关账户的委托状态,确认部署路径与描述一致而不是用了某个中心化的私有部署密钥。第四步看派生记录:经该工厂生成的合约,其创建交易应能从工厂地址的调用记录里追到,确定性地址可以离线重算比对,算得出、对得上,链条才闭合。整套动作没有一步依赖信任项目方口述,全部是对着公开数据做算术,这也是确定性部署哲学的本来面目。

价值侧:一条合集合约如果在几十条链上都是同一个地址,钱包做仿冒检测、索引器做多链归户、用户肉眼核对地址,成本都会显著下降;提案还想以单一工厂孵化更复杂的确定性部署器(如 CreateX),把基础设施收敛到一处。风险侧要盯三点。第一,工厂地址靠”全网共识这一个字节码”成立,遇到个别链分叉或有人塞入同址不同码的旧版本时,验证代码哈希成为必做动作,提案给出的工厂代码哈希值就是用来对照的。第二,7702 委托本身是账户状态的一部分,委托指向是否如预期,任何一步都能查链验证。第三,地址一样不代表合约一样,确定性只保证”放的位置对”,字节码核对才是”东西对”的证据。本文为机制说明,不构成任何投资建议。