ERC-5007 时间 NFT:startTime 与 endTime 把有效期写进合约 图 1
ERC-5007 时间 NFT:startTime 与 endTime 把有效期写进合约 · 图 1

ERC-5007 时间 NFT:startTime 与 endTime 把有效期写进合约

你手里有一张链上门票,活动散场之后它该“作废”吗?传统 ERC-721 没有内置答案——想让一张票失效,项目方要么挨个提交交易,要么在链下数据库偷偷记状态。ERC-5007 是ethereum/ERCs 仓库里状态为 Final 的扩展(2022 年 4 月创建,依赖 ERC-165 与 ERC-721),思路很朴素:给每枚代币附两个时间戳,链上程序自己看表行事。

两个只读函数撑起主接口

核心就是 startTime(uint256 tokenId)endTime(uint256 tokenId),各返回一个 uint64 的 UNIX 时间戳,表示这枚代币的生效时刻与结束时刻。合约本身不会因为时间到了就“执行”什么,它们是给外部逻辑读的裁判依据:核销合约放票前先查 endTime,过期直接拒;市场挂单时顺带查询,买家就知道手里的会员证还能用多久。标准还带一个可选的 IERC5007Composable 扩展,包含 assetIdmintmintAndSplitsplitmerge:一枚覆盖一整年的通行证可以按 splitTime 拆成两枚各自计时的新币,反向也能合并回去,拆分要求时间点落在原币的有效区间内。

ERC-5007 时间 NFT:startTime 与 endTime 把有效期写进合约 图 2
ERC-5007 时间 NFT:startTime 与 endTime 把有效期写进合约 · 图 2

对新手意味着什么

场景一:会员通行证。到期自动失效不用项目方手动回收,续费走 renew 类逻辑即可。场景二:分时段租赁。把租期切成两段卖给两个人,各用各的时间窗,彼此不打架——这正是它和 721 本身“非此即彼”所有权的最大差别。场景三:活动日程。两届音乐节的票共用一个作品图案,startTimeendTime 不同,查验时不会混。要注意的边界:endTime 到了不代表代币从钱包里消失,它仍然是枚 ERC-721 代币,只是按合约约定不再享有权益;二级市场挂单页面未必显示时间字段,买家要自己调函数或找显示该字段的面板。

它管不住什么

把 5007 和租赁、门票标准摆在一起看

同赛道的提案不止一个,摆开对比最能定位 ERC-5007。与 ERC-4907 的租赁接口相比:4907 解决“这段时间谁在用”,一枚币同一时刻只有一个租客,到期靠 user 角色过期;5007 的时间参数是铸造时就写死的使用窗口,更像入场券上印着的“仅限 14:00 场次”,还能用 split 把一段时间劈成两段分别售卖。与 ERC-7634 的转让次数上限相比:7634 限制的是“还能转几手”,和“还能用多久”是两个正交维度。与 ERC-5643 订阅相比:5643 的到期时间由续费行为推动,是活的;5007 主接口的 endTime 是静态坐标,续期在标准外由项目实现(或根本不支持)。理清这几条线,你就能回答新手最常见的疑问:为什么同样是“会过期的 NFT”,有的钱包显示续费按钮,有的只显示一个灰色倒计时——前者多半接了订阅式接口,后者是时间戳式接口,读的是同一枚币,问的是不同的函数。

上手前的五个小检查

围绕时间 NFT 列一份五步清单:先用 ERC-165 确认合约声明了 5007 接口;调用 startTimeendTime 并把时间戳换算成本地时区核对场次;查询区块时间源——合约以 block.timestamp 为准,跨时区宣传页的钟表仅供参考;确认权益核销方是否真的读取这两个字段,不看字段只认名单的“伪时间 NFT”并不罕见;最后翻一次事件历史,看有没有在封存规则之外的批量改期操作。五步都过了,才轮到欣赏作品本身。这份清单同样适用于任何声称“带有效期”的藏品,无论它是否恰好实现了这份标准。

顺带一提,时间字段还有个小细节值得记住:startTimeendTime 都是 uint64 秒级时间戳,写在合约状态里铸造即定稿,改动必然留下交易痕迹,这份“看表不靠人”的确定性正是它存在的意义。

时间戳口径是区块链时钟,矿工出块的 block.timestamp 允许有小幅度漂移,卡点到分钟级的核销要留缓冲。时间之外的一切——权益兑现、退款、活动取消后的补偿——标准一个字都没规定,全在发行方条款里。所以查一枚 5007 藏品时,先看 startTimeendTime 定窗口,再翻项目条款定权益,两样缺一不可。本文只解释标准机制,不构成投资建议,也不预测任何资产价值。