随NFT租赁场景的EIP-4907被纳入以太坊标准,NFT该如何应用的问题,正在从协议底层得到认可和解答。近期同样由 NFT 租赁市场 Double Protocol 提案的针对1155型的NFT租赁标准EIP-5006 ,也已经步入最后审核阶段(last call),如无意外将在2022-08-01结束审核。

虽然两份提案出自同一团队,但实现与用户使用方式截然不同!这是为什么呢?

特别说明!!此标准有风险,鉴权不完全,如需使用注意需重写权限管理部分(见文末)

3.1 简述721极简的租赁实现
回溯之前对721标准下角色租赁实现的解读,

见前文:【源码解读】以太坊新标准EIP-4907是怎样实现NFT租赁的?

可以发现,之所以如此迅速通过以太坊基金会的审核,来自于简约而不简单的实现方式

核心原理是在前文提及的721标准的核心数据之外,额外增加了一个关联属性,即指定ID的用户和过期时间,其他的代码则是提供了三个接口:

设置承租人 User 的地址与到期时间
查询 NFT-ID当前的 User
查询 NFT-ID 当前的 租赁到期时间
必须强调的是,毫无任何强制性手段来限制这个user该怎么用,即不涉及租赁收益计算,也不为nft定价做价值衡量,甚至是这个user可以理解为被租用户还是借贷抵押品,都不做标准上定义。

唯一的强制性只在防止BUG上,当我卖掉自己的NFT那么之前的授权将失效。

都不定义,所以剩下的问题就交给共识,代码里只存放最底层规则,即user是他

3.2 1155的租赁实现却大不相同!
租赁功能面对721标准:一个ID对应一个user和expires到期时间很合理,但1155标准:他这个ID的所有者可不只一个,所以EIP-5006仿照1155的数据结构,额外增加了3种数据来表示嵌套的资产角色租赁关系。

最终呈现出来的特点是:

1:不再考虑被租赁的时间!等于是无限期,也完全由owner来控制时间
2:由于租赁无限期,因此所有者需要再次合约交互才能来消除掉租赁状态。
3:卖出NFT之前,如果超过租出去导致冻结的数量,则需要先消除租赁的部分
通过源代码可见,他最核心数据是_allowances:

代表着每个NFT-id的每个所有者,分别有哪些租赁用户分别租了多少。

基本等于是在原始的1155核心数据上,再嵌套一层补充上租赁者和出租量的数据。

/** mapping(tokenId => mapping(owner => mapping(user => amount))) */
为了使用,提供了4个接口来管理1155的租赁关系
setUser:设置某个NFT-id下的某个所有者,设置多少个token数量给某个用户
balanceOfUser :查询哪个NFT-ID的哪个用户租赁到多少
balanceOfUserFromOwner:查询某个NFT-ID的某所有者下的某个用户租赁到多少个
frozenAmountOfOwner:查询某个NFT-ID的所有者其持有的token,已经被租出去多少个了(要冻结掉防止重复出租)
整体来说,不失优雅

虽然使用上和4907差异有所差异(无过期时间)影响了使用成本,也导致所有者更高的应用成本,但依旧是收敛最小的强制性,仅通过对owner的frozen数据的管理来防超额出租的BUG。

3.3 风险点特别说明
此标准目前的实现是有风险的,因为在标准中,对setUser函数定义为公开且为虚函数(表示他可支持继承重写)但函数内并未明确限制,”谁“有权可以去修改”谁的“租赁关系,导致任意用户可修改任意租赁关系,因此如有项目想使用5006,需要注意继承后重写此setUser设置租赁用户函数。

4、能为大型游戏的链改提供怎样动能?

当然如果排除他权限上的风险,那可以想象EIP-5006一旦定为标准,将再次掀起NFT走向应用上的热潮,为何这么判断呢?

ERC-4907 的核心价值是为链上”原生租赁“提供了技术支撑,实现了 NFT 的所有权和使用权的分离,是解决NFT流动性短缺问题的重要基础设施。

EIP-5006 的核心价值则是将进一步强化围绕”用户创作应用场景上“所有权和使用权的分离,明确NFT扩大应用价值的方向,将会涌现更多丰富的玩法、应用场景和衍生品。

正如本文背景部分所述,好的生态内不能只有官方一级发售屠龙刀,好的生态里,必须引导创作者UGC经济在整体生态内形成”生产>加工>消费“的循环。

721型NFT的定义往往只来自于官方,极致的稀有度让所有权的作用远超过使用权。

而1155型的NFT再结合原生租赁5006的推出,将会让GameFi 生态里重资产的资金周转率会大幅提升。因为真正能够贡献在线时长的这些海量基础玩家们,可以用一种比较低信任的方式(非强制性转移型租赁)去租到游戏里的装备或资源(活动入场权益)等。

这将带来游戏的DAU和用户体验的上升。

目前看Land类型的游戏,top5中4家已经支持UGC创作,部分使用1155做资产标准。

同时,各类围绕游戏内置可视化编辑器辅助UGC的gamefi项目也在井喷而出。

实用性NFT协议的丰满,有了更多用铲子的人,自然就会有更多卖铲子做铲子的人。而市场的痛点和需求点倒逼各类NFT应用层的协议丰富起来。

最后,对比采用强制性限制的租赁标准,参见前文:EIP-5058 能否防止NFT项目方提桶跑路?这种4907和5006的依赖于社会共识的标准将最终占领市场

code is Law 代码即是法律,法律威严神圣不可侵犯,在区块链的世界,也应该坚持如此,一旦确定规则就原则上不允许反悔。

总之做好定义,剩余的放心交给社会共识吧

再次强调
当前合约代码有风险(不算BUG),笔者向项目方提Issues,项目方回复已确认此风险,提交了新修复提案,如使用项目方使用请务必注意权限问题。

https://zhuanlan.zhihu.com/p/545769262