NFT 可以不记地址吗:ERC-7962 用密钥哈希管理所有权 图 1
NFT 可以不记地址吗:ERC-7962 用密钥哈希管理所有权 · 图 1

NFT 可以不记地址吗:ERC-7962 用密钥哈希管理所有权

区块链账本默认把一切所有权写成一个二十字节的地址,谁持有什么一目了然。ERC-7962 尝试换一种登记单位:用密钥哈希 keyHash(即 keccak256(key))代替地址来记录代币归属,配套两枚接口——面向非同质化资产的 ERC-KeyHash721 与面向同质化资产的 ERC-KeyHash20。按 ercs 仓库记录,提案状态为 Draft(草稿),创建于 2025 年 5 月 16 日。它的关键词有两个:隐私和代付。

把所有权和发币人拆开

在 ERC-721 里,ownerOf 返回一个地址,钱包签名与链上登记共用同一套身份。ERC-KeyHash721 把两者拆开:ownerOf(tokenId) 返回的是 bytes32 类型的密钥哈希,而不是地址;想把代币转走,需要在 transfer(tokenId, toKeyHash, key, signature, deadline) 里同时出示公钥本体和它对应的 ECDSA 签名,合约验证 keccak256(key) 与登记值一致、签名有效、期限未到,才改写下一次的 keyHash。签名数据里又允许自由指定发送方使用哪个地址发起交易——于是“资产的钥匙”和“付 Gas 的账户”第一次成了两件独立的事。

NFT 可以不记地址吗:ERC-7962 用密钥哈希管理所有权 图 2
NFT 可以不记地址吗:ERC-7962 用密钥哈希管理所有权 · 图 2

代付与批量的红利

这个拆分带来的直接好处写在规范里:第三方可以替持有人广播交易、垫付手续费,而拿不到资产控制权;批量场景也能用一份归集合约统一处理。对新手最直观的例子是“免费 mint 页帮你代付 gas”——在普通 ERC-721 上,代付方常常要求先授权;在 keyHash 模型里,代付只是代你提交交易,钥匙仍在你的密钥手里,两类方案的安全结构完全不同,读活动规则时要分清。

隐私的另一面

因为链上不存地址,同一把钥匙可以用不同地址参与交易,外部分析者难以把所有活动归并到一个人身上。但要精确理解这份隐私的范围:它隐藏的是行为归因,不是余额本身——一旦某个 keyHash 与某次活动的对应关系被泄露,链上轨迹照样清晰。而且 tokenURI 允许返回空字符串,元数据大多仍在链下服务器,托管方的日志随时能把拼图补全。这份提案提供的是链上层面的归因摩擦,不是端到端匿名。

与现有工具的兼容缺口

ERC-KeyHash721 不实现 ERC-721 接口:ownerOf 返回类型不同,也没有 approvesafeTransferFrom 这些标准函数,钱包的 NFT 页面、市场挂单、区块浏览器的持仓视图都不认识它。规范自己也把 mint、destroy 划成可选的管理函数,要求实现方自行加上严格访问控制。也就是说,采用这套接口的系列大概率要做专属前端,用户在“专属页面”里看到的余额与所有权,验证成本比标准 NFT 更高。还有一个细节要留意:签名函数里的 deadline 只是提交期限,超时后交易被拒是保护,反过来签名一旦泄露、期限又长,风险窗口同样长。

怎么看待这类实验

签一笔转让之前核对四件事

keyHash 资产的转让以签名为核心,签名之前有四件事值得逐条过一遍。第一,接收方 toKeyHash 必须是对方公钥的哈希——要求对方把公钥本体发给你,本地重算一遍 keccak256 再比对,只收一串十六进制等于把信任外包给复制粘贴。第二,deadline 按区块时间戳口径设定,给够用即可的窗口,期限越长、签名被截获后越危险。第三,问清代付方将用哪个地址广播:你的签名只证明钥匙控制,广播地址与所有权无关,但重放风险与广播时序有关。第四,链上存在按 keyHash 查询的 getNonce 类函数,动笔前读一次当前序号,避免同一份签名被重复执行。四条都干净,代付才真的是便利;任何一条说不清,宁可自己发那笔交易。

把密钥哈希当作所有权登记单位,是一场把“身份”从账户体系里剥离的实验。它与 ERC-4337 类智能账户、会话密钥等方向解决的问题彼此相邻:都想让资产控制权不被单一地址绑架。对普通读者的行动清单只有三条:先确认代币遵循哪套接口再选钱包;代付活动优先选择“签名即转让、不需要 approve”的机制;任何要求把私钥或助记词交给“哈希生成器”的页面,无论宣传语里有没有隐私两个字,都直接远离。本文为机制说明,不构成任何投资建议。