租赁是非常重要的一种资产流动性手段,尤其对于高价值资产来说。
原文作者:jason陈老师
原文标题及链接:以太坊今天过审的可租赁NFT ERC-4907为什么这么重要?
可租赁NFT被喊了这么久,终于在今天6月29号正式进入产业化落地的阶段了,NFT 租赁市场 Double Protocol推出的EIP-4907通过了以太坊最终审核,从一个提案正式成为了ERC标准,可以兼容ERC721,相关的新闻大家已经看了很多了,今天带着大家来拆解一下到底它实现了什么,又是怎么实现的。
在研究可租赁NFT之前,我们先探讨一下NFT为什么需要被租赁。
首先从其资产属性来看,既然是资产,便天然应该具备可交易、借贷、抵押等行为,从而实现资产流动性,租赁是非常重要的一种资产流动性手段,尤其对于高价值资产来说。
但是租赁有一个很特殊的情况,交易、借贷、抵押这些行为都是对资产金融属性的使用,这里大家细品一下,这三种行为都是资产的金融属性,都在表达其“值多少钱”。但是租赁是将使用权和所有权进行了分拆,所以租赁一定是去金融化的一种资产流动性行为,因为将使用权分拆出去,而留下了所有权。
拆出去的使用权是什么?是资产的实用性,留下的所有权是什么?是资产的金融性,所以具备租赁的资产,一定是同时具备金融+实用两种属性的,从而才可以进行分拆。
这个时候推出可租赁NFT我认为恰到时机,NFT发展过程经历了粗旷蛮荒的土狗满天飞的PFP阶段,这个阶段其实NFT的实用属性是占比不高的,更多的是其金融属性,所以NFT流动性方案都集中在交易、借贷和抵押等金融行为,但是经历了市场的狂热进入熊市后,NFT如果接着把它当作纯金融产品去玩,市场空间的想象力是非常乏味无趣的,并且韭菜们已经被割伤了教育的很痛,再接着玩PFP很难让市场有新的增量,所以NFT去金融化,更实用有更多的工具属性是一个我认为大概率的趋势。
我们现在已经能看到paas卡类的NFT出现频次越来越高,通过NFT持有者的权益赋能来提升价值而非炒作fomo。以及随着链游的成熟那种剪刀石头布的游戏被洗下去后,游戏类NFT的实用性是必然趋势,比如EIP-3664可以实现的NFT组合拼装升级一定会随着链游落地,后面有空也为大家再讲解一下EIP-3664。
另外NFT流动性差是一个老大难问题,之前为了解决流动性也有碎片化等手段,租赁的出现与成熟也是提升流动性的有力手段。
以上是结合NFT其内在特质与行业发展趋势来为大家说明NFT租赁的重要性,以及EIP-4907为什么可以得到以太坊青睐的原因。
这是提案地址,感兴趣的朋友可以进入深度了解:GitHub地址
NFT顺利实现租赁的核心在于将其使用权与所有权进行分离,EIP-4907使用了双重角色owner和user进行权限划分,并且角色具备有效期,意味着租赁者的权限到期后自动终止而无需再进行任何链上操作。
接下来我们一起读一下协议的代码,它主要给出了几个接口,我们看是如何实现的。
首先是setUser函数,这个函数是由NFT拥有人进行发起的准租批准单,传入3个参数NFT的ID、租赁人和到期时间,然后判断当前NFT是否为发起人所拥有的,如果是的话,则将传入的那三个租赁人信息进行写入。
然后userOf函数是用来查询某个NFT的租赁人,传入ID后进行检索,并判断是否到期,如果存在且未到期,则返回当前NFT租赁人的地址,否则返回空地址。
userExpires是单独用来获取某个NFT租赁人到期时间的函数,上面那个是获取NFT的租赁人,下面是获取租赁人的到期时间。
它还对_beforeTokenTransfer函数进行了override重写,_beforeTokenTransfer这个函数本身在ERC721中存在的,它在NFT转移之前会先被调用,默认是空的,子合约可以对它进行重写,可以将它理解成是NFT转移的前置操作,我们会看到它这里加了一个判断,首先校验from持有人和to被转移者之间是否是同一个人,然后校验当前NFT是否存在租赁人,如果存在租赁人的话,就会把该租赁人进行删除,其实这个逻辑我没有太理解用意,即我将NFT租给了张三,然后还没到期呢我又把它转移给了李四,然后张三租的好好的突然没了,这不太合理的。
其实看完示例代码会发现,EIP-4907非常的克制,接口化很严重,即它只是增加了以上几个裸接口,单纯的实现了两个角色和到期时间等非常基础的能力,没有在上层增加任何业务逻辑,比如一些看起来更有必要的判断,即刚才提到的可以把已经租出去的NFT再转移给其他人剥夺租赁人的权限,以及它其实从使用程度还是不能实现开箱即用的“租赁”效果,而是非常依赖上层应用产品对其的接入适配,举个例子,比如owner和user这两个角色,owner是原生的,user是新定义的,所以如果有一个社区需要持有NFT才可以进入,正常的则是校验当前用户是否为该NFT的owner,这时候就算你租赁了NFT成为了user也没有用的,需要该产品专门为此新增一个功能再去判断一下当前用户是否为user,这应该也是协议开发者的考量,作为协议需要平衡可扩展性和可适用性的天平,所以必须要很克制将其能力做成基础接口,给出上层应用更多的想象空间,总之还是很期待NFT能够诞生出更多的实用场景。