链上也能欠着事:ERC-5604 的 NFT 留置权接口 图 1
链上也能欠着事:ERC-5604 的 NFT 留置权接口 · 图 1

链上也能欠着事:ERC-5604 的 NFT 留置权接口

你买了一枚 NFT,合约干净、持有人只有你。但在金融世界里,“干净”的资产可以背着债:车抵押给银行,车仍停在车主车库,法律上银行对它享有留置权。状态为 Draft 的 ERC-5604(2022 年 9 月创建)把留置权搬进 ERC-721,让代币携带公开的债权标记。

两个函数加一对事件

接口极薄。addLienHolder(tokenId, holder, extraParams) 为某枚代币添加一个留置权人地址,文本要求若该持有人已有留置权则必须报错;removeLienHolder 按同样参数解除。添加成功发 OnLienPlaced,移除成功发 OnLienRemoved,事件原样携带当初的 extraParams,方便审计重建历史。查询侧 hasLien(tokenId, holder, extraParams) 返回布尔,回答”某地址对某代币此刻有没有留置权”。extraParams 是一段不透明字节,金额、期限、依据合同哈希都塞这里,标准不统一格式、由各协议自定——这也意味着不同借贷产品的字段互不翻译。文本在 Rationale 部分交代了取舍:只为 ERC-721 设计,其他代币标准留给以后;动机是贷款方需要公开可查的方式声明”这件数字资产欠着事”,让潜在买家交易前看得到。整套机制的 Gas 代价也小得与它的用途相称。

链上也能欠着事:ERC-5604 的 NFT 留置权接口 图 2
链上也能欠着事:ERC-5604 的 NFT 留置权接口 · 图 2

与锁定机制的分工

两类机制常被混为一谈。锁定类(不可转移标志、时间锁、质押锁)限制代币能不能动,解除即可自由交易;留置权不限制交易本身,它记录”这件东西上附着债权”。ERC-5604 没有把”带留置权禁止转让”写进规范——链上默认转让照常执行、标记跟着币走,这恰是担保物权的法律语义:权益不因转手消灭。现实中市场平台可能主动给 hasLien 为 true 的藏品加挂单限制,那属于平台风控而非标准强制。读者的正确提问顺序因此是三问:合约层面转得动吗、平台层面挂得出吗、协议层面债务怎么清偿且谁有权加标记——第一问看合约代码,第二问看平台规则,第三问回到法律文本,链上标记只完整回答第三问的一半。

Draft 状态背后的开放问题

一个思想实验:假想的链上抵押品市场

想象一个 NFT 借贷成熟的世界:每笔抵押都在链上挂留置权,二级市场买家点开任何藏品先查标记,清算流程写进合约,登记处本身可竞争可审计。ERC-5604 就是这个世界的一块地基砖,薄薄一层却改变博弈——抵押物变得带着债务可见,定价才能包含风险。今天的读者恰好站在实验早期:借贷产品越来越多,留置语义的实现却各自为政,同一枚 NFT 在不同协议里的负债状态可能互相不可见。在标准统一之前,把所有借贷入口当作一个整体来管理自己的授权与抵押记录,是个人用户能做的最好的人肉登记处。

这份标准停在 Draft 的核心原因是权限模型:谁有资格调用 addLienHolder?标的不规定,实现自由度过大。人人可加,它退化成公告板甚至抹黑工具;仅发行方可加,它近似黑名单变体;治理投票加,争议流程又太重。留置权本质是法律概念,链上写个地址本身无法定效力,现实登记靠合同、登记机构与法院,标准提供的只是透明度层。对普通用户,它当下的实用价值是把可查变成一个动作:参与 NFT 借贷或抵押类产品时,若项目实现了这套接口,交易前对目标 NFT 调一次 hasLien 是零成本习惯;若查询根本不存在或报错,务必别把”没有记录”读成”没有负债”——没有登记处不等于没有债务,只是登记还没上链。把链上可见性当信息上限而非信息下限,是对一切标记类标准的健康预期。顺带提醒索引层的坑:留置权不改变 Transfer 事件,钱包资产页对带留置权的币与干净的币显示完全相同,想在二级市场看到差异标记只能靠市场自己读取 hasLien——链上写了不等于界面会展示,这句老话在标记类标准上加倍成立。本文只做协议机制科普,不构成投资建议。