证书上链但不转让:ERC-4671 不可交易代币的签发与吊销 图 1
证书上链但不转让:ERC-4671 不可交易代币的签发与吊销 · 图 1

证书上链但不转让:ERC-4671 不可交易代币的签发与吊销

把毕业证铸成 NFT 转手卖掉,听起来是个段子,却暴露一个真问题:ERC-721 为可流转的稀有物而生,而证书、执照、会员证明的本质是不可转手——它们证明”某人与某事实的绑定”,换人即作废。状态为 Stagnant 的 ERC-4671(2022 年 1 月创建)为这类凭证提出不可交易代币(Non-Tradable Token,NTT)接口:用 ERC-721 的骨架,做一件卖不掉的事。

骨架与扩展件

NTT 建立在 ERC-721 与 ERC-165 之上,balanceOfownerOftokenURI 照旧存在供钱包识别展示,合约却从源头不提供转让路径,“不可转”写进能力而不是靠约定。它补齐的是凭证专属函数:isValid 查询某编号当前是否有效——证书会过期会被吊销,“持有”与”有效”在凭证世界是两个状态;hasValid 看某人名下是否还有至少一份有效凭证;issuerOf 回答”这枚凭证是谁签发的”,把签发机构的链上身份变成可查询字段;emittedCountholdersCount 给出签发总量与持有人数,方便公开统计。发行侧 mint 把代币直接铸给受证人地址、mintBatch 批量办理,配 MintedRevoked 事件留痕。标准还把接口拆成可选扩展:Delegate 扩展允许持有人把一次性发行权或展示代理权委托给操作者;Pull 扩展给了一种自愈场景——凭证若误铸到错误地址,原持有人用自己私钥对代币编号、持有人、接收地址组成的结构签名后调用 pull,把代币拉回自己的正确钱包,全程无需误收地址配合。giveThatManABadge 这类彩蛋函数则暴露了起草者的幽默感,也提醒读者:参考实现终究只是参考。

证书上链但不转让:ERC-4671 不可交易代币的签发与吊销 图 2
证书上链但不转让:ERC-4671 不可交易代币的签发与吊销 · 图 2

与灵魂绑定路线的分工

读这份标准绕不开灵魂绑定代币话题,两条路线侧重不同:SBT 谱系用”禁止转让”实现不可流通,但多数实现不给有效性状态留标准位置,一张过期毕业证与一张刚吊销的处分在链上长得一模一样;ERC-4671 从压根不做转让出发,把签发方身份与有效性查询当一等公民。核验时问的问题因此不同:对 SBT 先查它为什么转不出去(合约限制还是市场拉黑),对 NTT 先查 isValid 现在返回什么、发行权限握在哪个地址手里。两条路线在”证书上链”这个交集里各取所需,并存而非替代。

停滞原因与用户清单

给机构读者的反面提醒

这份标准停滞的教训同样值得做产品的人读:凭证上链的瓶颈从来不是链,而是签发方的运营成本与法律责任。想复刻 NTT 思路的团队,先把三件事想清楚再写合约——吊销交易的密钥由哪个岗位保管、密钥泄露的应急预案、机构解散后链上状态由谁接管。合约写得再干净,接不住组织能力的塌方;反之组织能力到位的小机构,用一份签名文件加公告哈希就能达到八成效果。技术标准的价值边界,往往就是业务成本的边界;把 ERC-4671 当需求调研而不是代码模板,它反而更耐用。

停更原因在采用侧:证书可信的根基永远是签发机构,链上化只是给机构的话加公开锚点,多数机构不愿自建合约、管理吊销密钥、承担每笔吊销交易成本,更轻的链下签名加公告哈希路线抢走了需求;“绝对不可转”也有反例,限量周边、企业席位用户既想证明持有又想转赠,缺转让函数反成缺陷。给读者的日常清单因此很具体:收到证书类代币,先核对 ownerOfissuerOf,确认它记在你名下、发行方是机构公布的链上地址;隔段时间回访 isValid,确认它没有悄悄变 false;涉及学历资质用途时,把它当线索起点,再到签发机构自己的查询系统交叉验证。链上凭证的第一价值从来不是防伪,而是让”谁发的、还有效吗”变成任何人随时可问的问题。本文只做协议机制科普,不构成投资建议。