一級標題
一級標題
一級標題
內容概要
隨NFT租賃場景的EIP-4907被納入以太坊標準,NFT該如何應用的問題,正在從協議底層得到認可和解答。近期同樣由NFT 租賃市場Double Protocol 提案的針對1155型的NFT租賃標準EIP-5006 ,也已經步入最後審核階段(last call),如無意外將在2022-08-01結束審核。
雖然兩份提案出自同一團隊,但實現與用戶使用方式截然不同!這是為什麼呢?
特別說明! !此標準有風險,鑑權不完全,如需使用注意需重寫權限管理部分(見文末)
通過本文你將理解
一級標題
一級標題
1、背景
一級標題
1、背景
為什麼需要豐富的NFT標準呢?
721標準的NFT為什麼不夠用?
因此即使eip-4907為NFT除了所有者確權之外,帶來了用戶租賃的概念,這是個應用層很好的開始,見前文【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
但也依舊不能打破721標準下的NFT太過於精簡,無法在足夠宏偉的gamefi場景中得到很好應用的痛點。
而一款活得久的遊戲最小經濟模型,也往往需要3種玩法角色的互相作用達成一種穩定供給平衡。例如Ember Sword 土地項目中的三種角色
基礎生產者PvE:採集資源,打怪升級
那咱們深入來聊聊最適合遊戲裡的NFT標準ERC1155,以及為他設計的提供租賃功能的EIP5006。
一級標題
一級標題
其實我們可以這麼理解,區塊鏈作為全球的底層賬本,確保了智能合約這種code is Law的能力,即是將規則代碼化,通過固定暴露的接口限定了任何人對他的使用方式,而智能合約裡定義的存儲數據,則是全球共享的數據庫。
二級標題
二級標題
二級標題
2.1 概念普及:20和721是如何定義資產關係的?
mapping(address => uint256) private _balances;
其實標準ERC20協議,核心是管理了兩個對應關係,資產和授權關係,這裡只看資產關係
_balances :每個地址有多少Token餘額數量
下方則是代碼對數據存儲的定義,猶如一個Excel表格的行與列,Key與value
mapping(address => uint256) private _balances;mapping(uint256 => address) private _owners;
同樣的ERC721則是管理了兩個資產上對應關係
_balances :每個地址有多少個NFT
所以常說NFT 是一個ID走天下,實現了具有唯一資產的確權性,確實畢竟他也只有一個ID。【源碼解讀】你買的NFT到底是什麼?
下圖為3大資產標準中合約的方法,都是圍繞資產關係與授權關係的管理
二級標題
二級標題
二級標題
2.2 ERC1155多重代幣標準-Multi Token Standard
1155即多重代幣標準,則是管理了1個“嵌套的”資產對應關係依舊是使用_balances 作為名字,但他的結構則是NFT-ID 對應地址(所有者) 再對應token數量
比如愛死機NFT項目中
mapping(uint256 => mapping(address => uint256)) private _balances;
見前文:
當奈飛的NFT忘記了web2的業務安全
好比mirror上鑄造的文章NFT,可以被多人mint走,其收益成為作者的創作收益。
二級標題
二級標題
二級標題
2.3 小結
結合了上述的三種主流資產標準,目前大量遊戲都在將生態內的道具做了資產化。
並且現在越來越多的遊戲內出現了1155類型的NFT,應用在遊戲內UGC創作場景(如The SandBox和Voxels中的可穿戴裝備和部分消耗性裝飾品資產)並且OpenSea的為了降低UGC創造新NFT的成本,特地設計基於1155標準的懶惰鑄造(Lazy Mint)特性的共享商店合約,讓創作的NFT只在確定有交易之後才在鏈上形成真正的鑄造,從而大幅度降低使用者成本
雖然筆者並不認同這種改變過多原始標準的設計
【解密】OpenSea免費創造的NFT都沒上鍊竟能出現在我的錢包裡?
3、EIP-5006 將如何實現1155型NFT的角色租賃?
二級標題
二級標題
見前文:【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
【源碼解讀】以太坊新標準EIP-4907是怎樣實現NFT租賃的?
可以發現,之所以如此迅速通過以太坊基金會的審核,來自於簡約而不簡單的實現方式
核心原理是在前文提及的721標準的核心數據之外,額外增加了一個關聯屬性,即指定ID的用戶和過期時間,其他的代碼則是提供了三個接口:
設置承租人User 的地址與到期時間
查詢NFT-ID當前的User
都不定義,所以剩下的問題就交給共識,代碼裡只存放最底層規則,即user是他
二級標題
二級標題
二級標題
3.2 1155的租賃實現大不相同
租賃功能面對721標準:一個ID對應一個user和expires到期時間很合理,但1155標準:他這個ID的所有者可不只一個,所以EIP-5006仿照1155的數據結構,額外增加了3種數據來表示嵌套的資產角色租賃關係。
最終呈現出來的特點是:
1:不再考慮被租賃的時間!等於是無限期,也完全由owner來控制時間
2:由於租賃無限期,因此所有者需要再次合約交互才能來消除掉租賃狀態。
3:賣出NFT之前,如果超過租出去導致凍結的數量,則需要先消除租賃的部分
/** mapping(tokenId => mapping(owner => mapping(user => amount))) */
mapping(uint256 => mapping(address => mapping(address => uint256))) private _allowances;
通過源代碼可見,他最核心數據是_allowances:
代表著每個NFT-id的每個所有者,分別有哪些租賃用戶分別租了多少。
基本等於是在原始的1155核心數據上,再嵌套一層補充上租賃者和出租量的數據。
為了使用,提供了4個接口來管理1155的租賃關係
setUser:設置某個NFT-id下的某個所有者,設置多少個token數量給某個用戶
balanceOfUser :查詢哪個NFT-ID的哪個用戶租賃到多少
雖然使用上和4907差異有所差異(無過期時間)影響了使用成本,也導致所有者更高的應用成本,但依舊是收斂最小的強制性,僅通過對owner的frozen數據的管理來防超額出租的BUG。
二級標題
此標準目前的實現是有風險的,因為在標準中,對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應用層的協議豐富起來。最後,對比採用強制性限制的租賃標準,
參見前文:
總之做好定義,剩餘的放心交給社會共識吧
一級標題
一級標題