源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

來源:十四君

內容概要

在這周,NFT 租賃市場 Double Protocol 提交的可租賃 NFT 標準“EIP-4907”通過了以太坊開發團隊的最終審核,成為第 30 個 ERC 標準“Final”的狀態。

讓我們一起來閱讀這極簡的源代碼,來縷清其他是如何實現 NFT 租賃的?

為什麼需要租賃?

NFT 的爆發毋庸置疑,而伴隨普及引發了對其資產實用性的需求,尤其是在元宇宙和邊玩邊賺 (P2 E) 的場景下,僅僅單純的資產所有權並不足以支撐更多的應用玩法的誕生。

一直的痛點是供給不平衡,導致的好項目少,浮於金融玩法的韭菜項目多,既然如今 web3 有大量 web2 行業精英在湧入,也必然需要快速的新標準推出,來將創造力的供給釋放。

NFT 流動性的緊缺,使得他風風火火的同時也備受詬病,他之前產權一體化的金融化操作,市場各類安全問題欺詐、剽竊、釣魚、跑路、資產被盜層出不窮。

而 Eip-4907,想要解決的就是分離 NFT 的資產價值和使用價值,釋放出 NFT 的市場流動性

源碼解讀

由於 Eip4907 極其簡單,因此對代碼的解讀無論是否技術同學均可來嘗試理解其細節設計。

2.1、實現原理:

他作為 ERC-721 的擴展,EIP-4907 增加了一個變量 UserInfo,讓應用可以查詢此 NFT 當前被租出去的目標地址“user”和出租時間”expires"。如果發現已經超出出租時間,則租賃關係宣告失效。

代碼極為簡單僅有 72 行,使用這個標準,就是在原來的 ERC721 之上新增

1 個事件(用於通知鏈下應用稱為事件)
3 個方法(用於實現鏈上數據管理功能)

分別是

UpdateUser 事件:當 NFT 轉移,租賃校色設置時,發出租賃用戶改變的通知
setUser 方法:NFT 所有者授權者可用,設置此 NFTID 的出租用戶和過期時間
userOf 方法:任何人可用,查詢此 NFTID 的出租用戶
userExpires 方法:任何人可用,查詢此 NFTID 的過期時間

2.1、數據結構:

理解 ERC 標準協議的最佳方式就是理解他管理數據的最底層數據結構

例如:前文【源碼解讀】你買的 NFT 到底是什麼?‌

其實 NFT 只是通過 2 個映射(_owners,_balances),即一種字典形式的 key-value 對應關係的存儲結構去記錄數據

源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

而 Eip-4907 則是新增了一個數據對象 UserInfo 在所有權的概念之外增加“用戶”的維度

源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

數據結構簡單,就意味着管理的方法實現也非常簡單

2.2、設置用戶 setUser 方法

設置用戶僅有 3 個步驟

【審計】此交易的發起者其是否持有此 NFTid 或是有 Approved 自動扣款權利

【設置】設置 UserInfo 中用戶的用戶地址和到期時間

【通知】發出設置成功的 UpdateUser 事件

源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

2.3、查詢 NFTid 的用戶信息

媒體處處宣傳的超時自動失效,而無需二次鏈上交易登記失效節約 gas 的邏輯就在這了。

查詢的邏輯很簡單,按指定的 NFTID 查詢_users 的 user 信息即可,但他增加了,if 判斷,當前塊的時間 block.timestamp 是否會超過設置的過期時間 expires,所以此查詢僅在時間內有效。

源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

2.3、查詢 NFTid 的用戶過期時間信息

此處無需類似 user 查詢時候判斷是否過期,因為得知上一次過期時間,也是加快 NFT 用戶使用率的一種方式。

源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

2.4、租賃關係的強制性設計

此 eip4907 的協議,對標準交易方法 Transfer 增加了一部分內容,通過_beforeTokenTransfer 實現,就是強制在進行 Transfer 交易轉移后就刪除掉這部分對用戶的信息,並且發出事件通知已經用戶失效了。

源碼解讀:以太坊新標準 EIP-4907 是如何實現 NFT 租賃的?

總結

沒想到吧,這麼快就代碼講完了,因為確實他寫完了,對的,不像是之前的通過限制轉移權的方法 EIP-5058,見前文【EIP-5058 能否防止 NFT 項目方提桶跑路?】‌

其實他 EIP-4907 只是多了個變量,並稱之為租賃用戶而已,可以聲明,但是其他應用認不認就是另一碼事了,畢竟其強制性有限,轉移就能強行終止出租授權

當然你或許會問,為什麼這麼簡單反而火速成為了難得一見,且每次都能掀起一番波浪的 Final 標準呢?

這也就是 web3 的哲學:越簡單,越優雅,剩下的交給共識。

我個人認可這樣的哲學與趨勢

web3 過去爆發或是得益於金融操作,但是好的生態不能只是金融價值,還需要更有商業價值,需要更廣大的用戶融入於生活生產形成價值閉環,貨幣終究只是手段而不是目的本身

引用:

https://GitHub.com/ethereum/EIPs/blob/master/EIPS/eip-4907.md‌

本文鏈接:https://www.8btc.com/article/6763322

轉載請註明文章出處

(0)
上一篇 2022-07-08 09:45
下一篇 2022-07-08 10:13

相关推荐