ERC-5006:1155 代币的出借,拆成了一份带数量的可用余额 图 1
ERC-5006:1155 代币的出借,拆成了一份带数量的可用余额 · 图 1

ERC-5006:1155 代币的出借,拆成了一份带数量的可用余额

ERC-4907 已经告诉过读者一件事:在 ERC-721 上,所有权和使用权可以分开——持有人把整枚代币的“使用者”角色租给别人,租客不能转卖。但 ERC-721 是“整件”的标准,出租单位是一枚完整的代币。当资产本身是 ERC-1155 里的一批可消耗代币,比如游戏门票、体力值、会员次数,出租需求就变了:可以只借出其中一百份,到期自动收回。状态为 Final 的 ERC-5006(2022 年 4 月 12 日创建)就是给 1155 补上这类“按数量出借”接口的扩展。

一条带数量和到期时间的用户记录

标准的核心数据结构是 UserRecord,每条记录带五个字段:tokenId 表示借出哪一类代币,owner 是持有人,amount 是借出的数量,user 是使用方,expiry 是到期时间戳。创建记录调用 createUserRecord,收回调用 deleteUserRecord,两个动作分别广播 CreateUserRecordDeleteUserRecord 事件,链上留痕可以逐条回放。余额被拆成两本账:usableBalanceOf 返回某个地址对某类代币当前可用的数量,frozenBalanceOf 返回被借出冻住的数量。借出的份额从持有人的可用余额中冻结,到期或记录删除后回到持有人账上。想清点一份合约的全部出借关系,可以按 recordId 逐个调用 userRecordOf。标准要求以 ERC-165 声明接口,接口标识符为 0xc26d96cc,钱包和浏览器据此判断该用哪套读法。

ERC-5006:1155 代币的出借,拆成了一份带数量的可用余额 图 2
ERC-5006:1155 代币的出借,拆成了一份带数量的可用余额 · 图 2

与 ERC-4907、ERC-5187 的分工

三个标准各管租赁拼图的一块。ERC-4907 面向 ERC-721,出租整枚代币,接口围绕设置使用者和到期时间;ERC-5006 面向 ERC-1155,可以按数量出借,适合“把一百张门票分给一位玩家用一周”的场景;ERC-5187 走第三条路线,把使用权铸成一枚枚会到期的新 1155 代币,租客甚至可以把权利再转让出去。选择顺序其实很简单:出租单件藏品看 4907,出租批量消耗品看 5006,租客需要转手权益才看 5187。核对方法也是统一的:先用 ERC-165 的 supportsInterface 查询,确认合约真的声明了对应标识符,再调用相应函数;能调用但没有声明,钱包和区块浏览器同样可能不认识它。

出租与承租之前的风险清单

标准化降低了租赁的技术门槛,没有降低风险本身。第一,到期由合约时间戳控制,过期后使用方自然用不了,但冻结状态要等有人读取或回收记录才在界面上体现,别把“链上已过期”当成“对方已归还”的全部凭证,事件和记录才是可查证据。第二,使用权默认不含处分权,可项目方的自定义逻辑千差万别,接口文本只保证所有权与冻结这一层,若合约把租赁挂进更复杂的玩法,仍需读源码确认有没有额外授权。第三,接受陌生业务的承租方,等于把自己资产的可用量记进别人的剧本,接单前先查 userRecordOf 与事件历史,先小额试跑再放量。涉及资产出借、押金和分成的任何安排都可能造成本金损失,收益不会因为有标准就自动兑现。本文只做协议机制科普,不构成投资建议。

从出借到回收的完整操作顺序

把一次 1155 代币出借从头到尾走一遍,链条是这样的:持有人先确认合约声明了 5006 扩展,然后调用 createUserRecord 写入使用方、数量与到期时间,交易成功后链上出现 CreateUserRecord 事件,双方余额同步变化——持有人一侧的可用量减少、冻结量增加,使用方一侧的可用量上升。到期时刻由链上时间戳自动裁决,没人需要准点操作;但如果使用方提前归还,持有人调用 deleteUserRecord 即可立刻解冻。整个流程里最容易出错的是数量口径:1155 代币在链上只有整数,所谓“借出一千次门票”就是字面的一千个整数单位,任何“折现”“按天扣减”都是合约外或自定义层的话题。对使用方还有一个隐蔽提醒:合约里若有消耗逻辑,你在别人名下消耗的就是冻结份额,账单会体现在 usableBalanceOf 的下降上,签约前把这类读函数放进钱包自定义面板,比事后翻浏览器省力得多。

一个容易被忽略的对照实验

想直观理解 5006 的价值,可以拿两种假想方案做对照。方案一只用原生 1155:出借必须先整批转给使用方,到期靠对方人品转回,中间所有信任悬在口头协议上。方案二自造登记合约:在链下表格记“谁借了多少”,链上什么都不发,争议时拿不出任何密码学证据。5006 的位置介于两者之间且偏向可验证一侧——资产本体不转移,冻结关系与到期时间都落在链上,双方各执一条事件编号就能复盘全程。这个对照也解释了标准采用面的现实:需要它的场景高度集中在票务、游戏道具、会员额度这类批量消耗资产,普通藏品持有人一年可能都碰不到一次。见到某项目宣称“支持代币租赁”时,不妨先问一句租的是 721 还是 1155,再决定去查 4907 的 user 还是 5006 的记录表,问题往往在这一步就从模糊变清晰。