买合约还是买控制权:ERC-173 与 ERC-2304 都回答不了的归属问题 图 1
买合约还是买控制权:ERC-173 与 ERC-2304 都回答不了的归属问题 · 图 1

买合约还是买控制权:ERC-173 与 ERC-2304 都回答不了的归属问题

一个项目方说“我们的合约控制权归社区”,这句话可能指三件不同的事:合约按标准回答 owner 是某个多签;某个名字解析出来指向项目金库;或者持有一枚代币能调用合约里的某些函数。三件事在宣传语里经常互相冒充。用两份正规但边界清晰的规范做参照,能把这三种说法分层看清。

第一层:合约自己说 owner 是谁

ERC-173 是这层的参照物。它把归属问答压到最小:合约暴露 owner() 查询,用 transferOwnership 转交,转交时发 OwnershipTransferred 事件;把新 owner 写成零地址就是放弃。它的确定性来自“合约自己回答、谁都能查”,但它对 owner 是什么形态完全沉默——一个EOA、一个多签、一个 DAO,接口层面看不出来,必须点开那个地址看它的代码和配置。规范正文的安全考量部分也只强调了一条:owner 若是普通账户,私钥丢了就全丢。

还有一个容易被忽略的限制:ERC-173 回答的是“合约归属”,不是“合约里每个函数的开关”。一个 NFT 合约可能 owner 归了多签,但代码里铸币、暂停、改元数据等敏感函数仍然保留;合约归属与功能权限是两张清单,尽调时要分开过。

买合约还是买控制权:ERC-173 与 ERC-2304 都回答不了的归属问题 图 2
买合约还是买控制权:ERC-173 与 ERC-2304 都回答不了的归属问题 · 图 2

第二层:名字解析到哪

ERC-2304 处在完全不同的层面。它解决的是“同一个名字在多条链上分别指向什么地址”,查询函数带币种编号参数,返回各链原生二进制格式的字节,没有记录时返回零长度字符串。名字在这层是一个指针集合:今天能改,明天也能改,改的动作由名字对应的 owner 发起,跟合约本身归属没有任何关系。

所以看到“官网域名/名字指向官方合约”这类表述,正确的处理顺序是:先确认这个名字的 owner 是谁、解析器合约是哪个、它申报了哪些接口,再核对解析出的地址与你在区块浏览器验证过的是否一致,最后才是把资金放进去。任何一环里,名字 owner 换解析器都是一笔普通交易就能完成的事,而链上资金按解析结果执行时不会多问一句。名字是“查到哪里”,不是“归谁所有”。

第三层:谁能调用、调用到什么程度

这两份标准都没覆盖的地方,才是日常纠纷最多的地方。常见的三类说法各有对应现实:其一,把控制权装进一枚 NFT——ERC-173 当年的取舍说明里恰好记录过这个备选方案:用 ERC-721 代币代表合约所有权,可以复用 NFT 基础设施转手,但需要专门编程让关系成立,而且与既有合约不兼容。也就是说这种结构存在与否完全取决于实现,买前应在合约代码里找到“读取代币持有人并据此授权”的逻辑,找不到就只是宣传语。其二,多角色分工——合约里铸造权、升级权、参数调整权各归不同角色,这类权限矩阵与 ERC-173 的单一 owner 不是一回事。其三,治理代币与合约权限之间,可能隔着一整套需要人肉执行的约定。

一份按顺序执行的核对清单

把上面三层压成动作:第一步在区块浏览器看合约的 owner 查询结果,点开 owner 地址确认是EOA、多签还是合约,看最近有无转让事件。第二步查合约的构造函数与敏感函数权限,确认铸币、暂停、升级、黑名单这些开关各在谁手里、有没有时间锁。第三步如果有人名式入口,按 ERC-2304 的思路核对它的解析器归属与接口申报,别把名字当成归属证明。第四步对任何“持币即拥有某物”的说法,回到合约代码里找依据,找不到就把这句话归档为营销文本。

这四步不需要任何工具许可,全部基于公开可读的数据;区别只在于是否愿意把“听起来是一件事”拆成三件事分开验证。本文为机制说明,不构成任何投资建议。