把可验证凭证挂上 ERC-721:ERC-7861 加密、撤销与两个查询
“这个 NFT 是一张权威证书”——要把这句话当真,需要回答四件事:谁签发的、什么类型的证书、内容加没加密、还能不能撤销。传统 NFT 元数据用一个 description 字段同时回答(也同时糊弄)这四个问题。ERC-7861 把它们拆成合约层的正式字段:这是 ERC-721 的可验证凭证扩展,2025 年 1 月 14 日创建于 ethereum/ERCs 仓库,目前是 Draft,基于 ERC-165 与 ERC-721。它的灵感来自 W3C 的可验证凭证体系——一种防篡改、可验证的数字证书概念,ERC-7861 想把链下 VC 的字段语言搬进代币合约。
合约要开口的五个字段
合规合约必须实现一组 view 函数。issuer() 回答“谁签发的”——注意它返回的是字符串标识,不强迫签发者拥有以太坊地址,这是给跨体系兼容留的门;credentialType() 声明证书类型,同样可以是外部体系的类型标识;encryptionMethod() 报告加密方法,标准用非常克制的方式定义了“没有加密”:当且仅当凭证未加密时才返回空字符串,避免“返回算法名但算法未启用”的暧昧状态;verificationMethod() 报告验证凭证证明的方法,标准建议与 W3C 的验证方法概念保持兼容;credentialURI(tokenId) 定位这枚代币对应的凭证内容,如果实现用其他方式取凭证,这个函数必须返回空串而不是硬编一个假地址——同样的哲学:空值要有唯一的、可依赖的含义。事件侧是两个生命周期锚点:CredentialIssued 与 CredentialRevoked。查询侧 isRevoked(tokenId) 被要求对未撤销凭证返回 false、已撤销返回 true,对不存在的代币则允许返回 true——保守方向的不存在即无效。ERC-165 探测用的接口标识也在标准里写死。
这套字段的共同气质是“不许含糊”:每个字段都规定了空值和边界情形的唯一含义,验证工具因此可以机器化地处理,不被实现方的措辞技巧牵着走。它说明“证书”确实可以在链上结构化;它不能说明签发字符串背后那个机构的现实资质——字段保证的是声明的格式纪律,不是声明内容的真实性。
核验一张链上证书的正确动线
收到一枚“证书 NFT”,动线应当是:第一,ERC-165 探测,确认合约声称支持;第二,读 issuer 与 credentialType,去签发方的官方渠道交叉确认它确实运营这个合约地址、这个类型在其业务范围内;第三,读 verificationMethod,按其指引真正验证一次凭证证明——这一步是“验证”与“查看”的分界线,只看 credentialURI 指回来的 JSON 不叫验证,只有沿验证方法执行密码学或后端验证才算;第四,查 isRevoked 并订阅 CredentialRevoked 事件,证书的效力会随时间变化;第五,若涉及加密凭证,确认加密声明与真实解密路径,别让“encrypted”三个字替你做安全判断。
常见误区
误区一:把 NFT 转给他人等于把证书转给他人。可验证凭证的语义里,持证人与证书主体经常不是同一个地址,转卖可能违反签发条款,且凭证内容可能绑定的是原持有人的身份信息。误区二:认为撤销会销毁代币——标准管的是效力标记,代币本身仍在你钱包里,只是效力状态变了。误区三:忽略 Draft 阶段实现不统一,用 ERC-165 结果决定你的工具信不信它。还有一个新手常问的问题值得在这里回答:这类“证书 NFT”和 POAP 一类纪念徽章的区别在哪?徽章证明“你来过”,撤销语义通常缺席,转让也很少受限;可验证凭证强调“权威机构声称某事实成立”,效力可以随撤销变化,转卖往往触及签发条款。判断标准不在图片好不好看,而在它是否老老实实回答了签发、类型、验证与撤销这五个字段。对普通读者最实用的一句话:证书的价值在签发机构,链上字段只是把那家机构的话钉在一个公开位置——先核机构,再读字段。本文不构成投资建议或法律意见。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。