ERC-7721 给 1155 上锁:按额度锁定与取回的玩法
ERC-1155 的一个历史痛点:授权粒度太粗。setApprovalForAll 一按,操作方对你名下所有编号的余额通吃——想借出 1155 卡池里的 100 张,却把整个仓库钥匙递了出去。ERC-7721 在 ERC-1155 之上补了一套“按编号、按数量”的锁定与额度系统:锁多少、谁能花多少,分开记账。2026 年 9 月 9 日在 ethereum/ERCs 仓库核对,该标准状态为 Draft,创建日期标注为 2023 年 5 月 25 日,依赖 ERC-165 与 ERC-1155。
锁定语义:锁一个数量,挂一把钥匙
锁定动作有两个版本。简单版 lock(tokenId, account, amount) 由持有人或被授权方调用,locker 设为发起者本人;指定版多一个 _locker 参数,只有持有人本人能把钥匙交给第三方地址——通常是借贷平台合约。钥匙即解锁权:只有 locker 能调 unlock 取回锁定量。查询函数 getLocked(tokenId, account, operator) 回答“这个账户的这个编号被那个操作方锁了多少”,未锁定的答案必须是零。锁定的强制力体现在转账上:被锁定的数量从可转余额里扣掉,safeTransferFrom 一旦试图搬运锁定额度就回滚,最大可转量等于余额减锁定量——账本上你仍然拥有全部代币,只是部分数量被挂上了禁止搬动的标签。

额度授权与一步到位的 transferAndLock
另一条腿是按编号授权:setApprovalForId(tokenId, operator, amount) 给操作方对特定编号设定特定数量的花费权,getApprovalForId 查询当前额度。这与 ERC-1155 原生“全有或全无”的 setApprovalForAll 形成互补。最实用的组合拳是 transferAndLock:一步完成“转出给对方、立刻锁定、并可选把解锁授权留给自己”。租赁场景用它最典型——卡借给玩家的同时被锁定在玩家地址,对方不能转卖,到期你收回授权即可取回。锁定与授权随代币转移而被清除的具体口径在实现中务必读源码确认,这是各家适配器最容易出 bug 的位置。
与 ERC-5192、ERC-5753 的分工
以太坊上已有几把锁:ERC-5192 是全局可读的“锁定标志位”,ERC-5753 把解锁钥匙当 NFT 发,ERC-7066 给 ERC-721 挂按枚的锁。ERC-7721 的生态位是 ERC-1155 加“数量”维度——ERC-5192 的一个布尔回答不了“三千份里锁了几百份”这种问题,而半同质化合约恰好常有这个需求。选标准先看资产形态:单枚孤品选 7066 或 5753 一类,批量编号选 7721。
安全边界三条
一次租赁纠纷的账本还原
用一笔借卡纠纷收尾。玩家乙从你手里租走某编号 1155 卡券 500 张,走的是 transferAndLock:500 张转到乙地址、立刻锁定、locker 留你手中,Lock 事件记录 tokenId、账户、locker 与数量。纠纷点一:乙把卡转卖第三方——因锁定量计入最大可转量约束,safeTransferFrom 直接回滚,链上替他作证。纠纷点二:乙声称已还卡——按 getLocked 查询当前锁定量与 Unlock 事件时间线即可断案。纠纷点三:你单方提前收卡——unlock 只有 locker 能调,技术上你确实做得到的这个动作,恰恰是合约结构把信任成本压给一方的证据:用这套机制前,先想清楚谁配当 locker。对做资产通证化的团队,这也是选型的分水岭:需要“可核对的软锁”,1155 用 7721、721 用 7066;只要一个公开锁标志位,5192 更轻。最后补一个容易忽略的监控点:setApprovalForId 与 getApprovalForId 这对额度接口允许把“可花数量”而非“全部”交给操作方,与锁定账本是两套额度,仪表盘应当并排展示两列数字,任何一列异常都触发提醒——锁定与授权分开记账,正是这套扩展在风控上的全部精髓。锁定机制的世界没有新魔法,只有更整齐的账本。
第一,锁定不等于冻结黑名单:锁定只挡转账路径,操作方若同时拿到额度授权仍能花掉未锁定部分,两本账要分开监控。第二,getLocked 返回非零只代表“有锁记录”,务必与 balanceOf 联读,防止把“锁在旧地址”误读成“资产失踪”。第三,凡是引导你调用 transferAndLock 并勾选“保留授权”给陌生平台的流程,等于你主动把解锁钥匙交给对方,到期取回的主动权完全在对方手里——正规借贷平台的锁定流程会把解锁权留在双方都认可的合约里,用事件可预期地释放。本文为协议机制科普,不构成任何投资建议;标准状态以 ethereum/ERCs 仓库文本为准(核验时间 2026 年 9 月 9 日)。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。