原文作者: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是否為發起人所擁有的,如果是的話,則將傳入的那三個租賃人信息進行寫入。

最新的以太坊標準可租賃標準ERC-4907是怎麼實現的?

然後userOf函數是用來查詢某個NFT的租賃人,傳入ID後進行檢索,並判斷是否到期,如果存在且未到期,則返回當前NFT租賃人的地址,否則返回空地址。

最新的以太坊標準可租賃標準ERC-4907是怎麼實現的?

userExpires是單獨用來獲取某個NFT租賃人到期時間的函數,上面那個是獲取NFT的租賃人,下面是獲取租賃人的到期時間。

最新的以太坊標準可租賃標準ERC-4907是怎麼實現的?

它還對_beforeTokenTransfer函數進行了override重寫,_beforeTokenTransfer這個函數本身在ERC721中存在的,它在NFT轉移之前會先被調用,默認是空的,子合約可以對它進行重寫,可以將它理解成是NFT轉移的前置操作,我們會看到它這裡加了一個判斷,首先校驗from持有人和to被轉移者之間是否是同一個人,然後校驗當前NFT是否存在租賃人,如果存在租賃人的話,就會把該租賃人進行刪除,其實這個邏輯我沒有太理解用意,即我將NFT租給了張三,然後還沒到期呢我又把它轉移給了李四,然後張三租的好好的突然沒了,這不太合理的。

最新的以太坊標準可租賃標準ERC-4907是怎麼實現的?

其實看完示例代碼會發現,EIP-4907非常的克制,接口化很嚴重,即它只是增加了以上幾個裸接口,單純的實現了兩個角色和到期時間等非常基礎的能力,沒有在上層增加任何業務邏輯,比如一些看起來更有必要的判斷,即剛才提到的可以把已經租出去的NFT再轉移給其他人剝奪租賃人的權限,以及它其實從使用程度還是不能實現開箱即用的“租賃”效果,而是非常依賴上層應用產品對其的接入適配,舉個例子,比如owner和user這兩個角色,owner是原生的,user是新定義的,所以如果有一個社區需要持有NFT才可以進入,正常的則是校驗當前用戶是否為該NFT的owner,這時候就算你租賃了NFT成為了user也沒有用的,需要該產品專門為此新增一個功能再去判斷一下當前用戶是否為user,這應該也是協議開發者的考量,作為協議需要平衡可擴展性和可適用性的天平,所以必須要很克制將其能力做成基礎接口,給出上層應用更多的想像空間,總之還是很期待NFT能夠誕生出更多的實用場景。