聊聊即將過審的多權限NFT管理協議EIP-5496

對於整個Web3 行業來說,我認為一切可以降低普通用戶進入的門檻和成本的都是好東西,對於NFT賽道來說,我認為一切可以增強流動性和實用性的也都是好東西。

在此之前對於可租賃NFT協議4907也專門寫了一篇文章,NFT 發展到後小圖片時代下一個敘事我認為就在於更貼近生活場景的實用型NFT。

首先先對於小圖片這個事再囉嗦兩句,貌似很多人將小圖片看作NFT的原罪,將NFT嘲諷為小圖片,但是我不這樣認為,小圖片對於crypto走向大眾視野一定是有不可估量的推動作用,不能拿起碗吃飯放下碗罵娘。

在此之前crypto其實對於普通人的理解和參與門檻還是非常高的,花花綠綠的k線和刺激的漲跌幅度決定了其還是小部分人的金融遊戲,但是NFT出現後至少貼在上面的那張小圖片是實實在在能看得著的東西,就算不懂金融和加密,不知道挖礦和defi,但是至少能判斷圖片好不好看,社區有不有趣,小圖片+頭像帶來的社區文化極大的降低了普通用戶的理解和參與門檻,極強的推動了大量場外人員的加入,所以小圖片對於crypto的普及絕對有著極大的功勞不可置否。

只是因為NFT的低流動性導致產生的殭屍資產遠高於token,這也就是為什麼提升NFT流動性很重要,其二是NFT的資產屬性我覺得只釋放出了它一半的價值,因它的唯一性和一切皆可NFT(URI掛載)所帶來的另一半實用價值價值的想像空間遠大於token,但是迄今為止實用價值還沒有被完全釋放出來,這依賴於基礎設施的建設所帶來的應用場景探索,另外實用性的提升也會帶來其資產價值的升值,這是一個左腳踩右腳1+1>2的效果,單有實用性無資產交易價值的NFT我覺得也沒什麼意思。

NFT實用性的背後即持有者權益的賦能,目前最常見的賦能大多集中在資產校驗到進入社區這個過程,也能看到逐漸的出現瞭如阿迪達斯發售的可穿戴NFT,或是一些可訂閱NFT(我們BuidlerDAO社區正在提案中)等。

本文中的EIP-5496提供了可共享的多重權限,已經進入到LastCall狀態即將過審,這裡小科普一下EIP的流程,它的全稱是以太坊改進建議,任何人都可以去提交EIP,描述你發現以太坊的不足並給出對應解決方案,經過初審後會按照時序給你一個編號,並進行如下圖所示的生命週期進行討論審核。 EIP分為很多類型,包括Core、Networking 、Interface 、ERC、Meta、Informational,每一類解決的問題都不一樣,比如Core是涉及到核心的共識分叉等底層內容,耳熟能詳的ERC就是應用級的標準制定,20、721、3535、4337(賬戶抽象)、5192(靈魂綁定)都屬於這一類,所以ERC也是離普通用戶最近也最好理解的一層。我平時喜歡看EIP,它既是一本以太坊的史書,可以了解其從誕生至今所有的問題與建議,同時也是一本預言書,每個EIP背後都可能蘊含著巨大的機會,看EIP也是把握市場方向的方式,建議大家沒事的時候也可以多關註一下https://eips.ethereum.org/all

它認為NFT除了圖片和資產屬性外,在不同的場景下都有實用性可以拓展,權益可能是存在於鏈上如投票權、瀏覽權、空投權等,或者在鏈下如購物優惠、餐廳折扣、機場貴賓室使用權等,在EIP-5496的眼裡每個NFT都可以包含多種權益,並且這個權益應該具備幾種可選特性

  • 可驗證:權益可以被驗證通過

  • 可轉移:權益可以被轉移給他人

  • 可共享:權益可以被共享給多人

  • 可截止:權益可以被設置有效期

因為作為發行方對於NFT的權益賦能可能會有很多,擁有NFT的人不一定想使用他們的權益,而傳統的ERC721只記錄NFT的擁有權和轉讓過程,NFT的權益是不被記錄在鏈上的,EIP-5496可以讓項目方將權益寫入鏈上,並授予特定人群,並且權益擁有者可以獨立管理每個權限,從而對於項目方和holder均具有權益的管理能力,釋放了NFT在權益實用性領域的價值。

目前對於項目方來說如果想將NFT持有者進行多層權益賦能的方式是空投多類NFT,如一家航空公司向Crypto Punk持有者空投了一系列NFT並賦以權益,吸引他們加入航空公司的會員,但是新空投的NFT和其主NFT不是綁定關係,所以如果Crypto Punk主NFT被轉移,空投的NFT依然在原主人手裡繼續享受權益,而新的主NFT持有者則不能自動的享受權益,所以EIP-5496可以將權益和底層主NFT綁定,並允許用戶自主的管理權限。

協議最難的在於如何能夠在盡可能簡單的程度下,去支持拓展出更多複雜的業務場景,它要求優雅且克制,而不是一昧追求著強大和牛逼,所以接下來我們通過其技術實現看一下到底EIP-5496都做了什麼事,以及他的設計原則是什麼,代碼比較多我摘錄一些核心內容為大家講解。

首先在合約中它將權益全部ID化,在此之前我以為設置權益的過程,是直接將NFT的權益都有什麼寫入到合約中,比如一個NFT有3個權益,它並不是通過string文本的形式去寫【可以打折】【可以使用產品】【可以獲得空投】,而是直接設置該NFT的權益ID為1、2、3,對沒錯就在合約裡設置好有3個權益,而並不會直接將權益內容寫進去,這也就是我認為其作為協議優雅和克制之處,權益ID化的好處是:

1.我作為協議只需要你來設置有幾個權益,每個權益的ID是什麼,至於具體的權益內容則交給合約外部即鏈下來決定,就像是一台電腦有3個USB接口,它可以用來插U盤也可以插鼠標,插什麼用戶自己去決定。

2.權益ID化後對於驗證權益會非常的方便,比如一個產品要求NFT持有者只有具備“可以使用產品”的權益才可以使用,那麼當用戶打開該產品時,產品代碼裡需要寫一個邏輯去校驗用戶是否持有該NFT且具備對應權限,則需要去做權限名稱的逐字匹配少一個字都不行,“可以用產品”和“可以使用產品”對於代碼來說就是完全兩種不同的權限,但是如果ID化,則只需要校驗當前NFT是否具備“2”權限即可。

3.權益的內容變更是比較頻繁的,將權益內容放在鏈下,只將權益ID數量放在鏈上,若項目方對於權益進行改變則不會花gas費。

但權益ID化之後也同樣帶來的問題是無法直觀的看到這個NFT到底都有什麼權益,只有1、2、3這幾個ID數字, 還需要第三方產品去單獨做一個權益內容的設置和查詢功能去索引到對應ID。

具體的權益數據管理它使用了兩個結構體做雙層嵌套,首先定義了PrivilegeRecord,裡面存儲了用戶地址和到期時間兩個字段,然後又定義了PrivilegeStorage,裡面存儲了最新一次的到期時間,並用mapping的方式去將權益ID和PrivilegeRecord進行了綁定。

_setPrivilegeTotal函數用於設置全部的權益數量,這個數量會用在賦權的過程中,即只有3個數量,那賦權的時候ID肯定要小於3的。

下圖為核心的設置權益的代碼,首先設置權限時,需要傳入4個參數,被設置的NFT tokenid,要設置的權限ID,被賦權的用戶地址,權限到期時間。在賦權時需要進行3個校驗條件,分別文是否擁有權限、到期時間是否大於30天和權益ID是否在總權益範圍內,協議對於權益的時間限制必須要超過30天的原因我覺得還是比較奇怪的,不知道為什麼作為協議要加這麼個性化的限制,按理來說應該將這個限制給到項目方自己決定的。

privilegeBook也是一個mapping的數據類型用於管理每一個NFT被賦權的情況,代碼中對privilegeBook進行設置將某個NFT的某個權益的某個人設置為被賦權用戶地址,然後再更新到期時間。

下圖也是很核心的用於判斷用戶是否持有對應權益的接口,這個接口將作為其他第三方產品驗證權益的關鍵途徑,可見傳入了三個參數tokenId、權益id和用戶地址,先判斷當前權益是否還在有效期內,這裡獲取了其最新的到期時間來判斷是否大於當前區塊的時間戳,若存在有效期的話則校驗當前tokenid的對應權限ID的user是否為傳入的用戶地址。

下圖為獲取某個NFT的權益最新的到期時間。

以上就是EIP-5496的內容,總體看下來我覺得對於NFT在實用性角度是做出了貢獻的,但同時它也有自身的局限性,通過上述代碼分析可以看到它的權限顆粒度是到了某個具體NFT層面,即以tokenid為單位,也許是我還沒有研究的很透徹,但是如果我想對於某一批甚至整個collection的NFT均設置權限是非常麻煩的,有1萬個NFT就要設置1萬次呀,不知道提案人是如何考慮這個問題的,也歡迎大家交流探討。

總之如文章開頭所說,NFT已經過去了PFP的階段,下一個敘事到底要由什麼開啟,有待於基礎設施和上層應用的創新帶來下一次破圈後的增量用戶湧入。

來源:bress

Total
0
Shares
Related Posts