ERC-5192用locked(tokenId)回答“此刻能否转移”,再用Locked和Unlocked事件通知状态变化。它是最小接口,不等于凭证永久存在、不可撤销或没有管理员。
本文从ERC-165探测、locked读取和转移反例出发,避免把Soulbound营销词当成权利保证。
对一个tokenId做四步检查
- 先调用
supportsInterface确认合约声明ERC-5192支持。 - 调用
locked(tokenId)并保存区块号与布尔值。 - 从铸造区块起检查Locked、Unlocked及ERC-721 Transfer事件。
- 阅读burn、revoke、upgrade、pause和管理员函数,判断“不可转移”之外还能发生什么。
| locked结果 | ERC-721转移测试 | 能推出的结论 |
|---|---|---|
| true | 常规转移应被拒绝 | 当前实现声称该token不可转移 |
| false | 仍需检查批准、暂停等条件 | 最小接口未锁定,不保证一定能转 |
| 调用失败 | 可能不支持或token不存在 | 不能按Soulbound处理 |
Locked/Unlocked事件用于索引状态变化,但最终状态应回到指定区块的locked()读取。
ERC-721转移对照实操清单
- 核对合约地址、链和tokenId,避免同名NFT混淆
- 用ERC-165探测接口,不凭市场标签判断
- 固定区块读取locked并回溯状态事件
- 检查升级代理、燃烧、撤销与管理员权限
- 在隔离账户尝试转移路径并记录回滚原因
一手规范给出的结论
接口与事件表
ERC-5192扩展ERC-721并提供locked(tokenId)只读函数,用布尔结果表示该NFT当前是否不可转移。
锁定状态机
合约在锁定状态变化时发出Locked或Unlocked事件,并通过ERC-165声明最小Soulbound接口支持。
ERC-721转移对照
最小接口没有规定铸造、销毁、撤销、管理员权限或元数据真实性;locked为真也不等于凭证永久不可撤销。
接口与事件表如何做双盲复核
作者先依照“核对合约地址、链和tokenId,避免同名NFT混淆”收集一份不含结论的证据包,内容包括目标对象、网络或版本、完整返回、查询时点和使用的工具。复核者收到材料后,按“用ERC-165探测接口,不凭市场标签判断”自行解释锁定状态机。双方最后才交换结果;如果结论不同,优先比较原始字段与口径,不能用页面颜色或多数意见裁决。
接着建立反例包。反例一只模拟“locked=true就写成“永久不可撤销””,反例二只模拟“只监听Locked事件,漏掉后续Unlocked”。每个反例必须说明预期拒绝点和实际拒绝点。程序若把错误输入修正后继续执行,应把修正动作完整展示;静默修正会让用户误以为原输入有效,因此仍判为不通过。
为了覆盖不可撤销误区,还要在状态改变前后各保存一次“固定区块读取locked并回溯状态事件”的结果。两份证据必须有独立时间和上下文,不能只留最终快照。若变化由缓存、节点或索引造成,报告应注明观察层级,而不是直接断言链上事实改变。
上线页面把原始证据、解释规则和结果状态拆开呈现。原始栏不做舍入和自然语言改写;解释栏写清公式、版本或字段映射;结果栏允许已确认、被否定和待核验。触发“忽略代理升级后逻辑和权限可能改变”时,按“检查升级代理、燃烧、撤销与管理员权限”重新取证,禁止继续自动处理。
故障与停止条件
| 误判 | 正确处置 |
|---|---|
| locked=true就写成“永久不可撤销” | 保留原始证据,停止外推并按本文步骤复核 |
| 只监听Locked事件,漏掉后续Unlocked | 保留原始证据,停止外推并按本文步骤复核 |
| 忽略代理升级后逻辑和权限可能改变 | 保留原始证据,停止外推并按本文步骤复核 |
来源、增量与风险边界
| 来源 | 本文用途 |
|---|---|
| Ethereum Improvement Proposals | 正式接口、字段与规范语义 |
| ERC-721 | 实现路径、兼容性或安全边界 |
本文资料读取于2026-07-20。具体项目可能通过升级、燃烧或管理函数改变实际权利,核验时必须继续读取合约代码和权限。
站内相邻主题可继续阅读:NFT锁定边界、链上权限模型。Soulbound状态可能影响身份或资格,但最小标准不保证发行方、元数据和权利真实性。不要购买或提交身份材料前只看locked值。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。