解讀最新Final的ERC-6147:極簡的半強制性NFT產權分離標準

就在 2023.3.7 日,由 10 K Universe 提出的以太坊改進提議 EIP-6147 已移至最終版本(Final)!

該標準是 ERC-721 的擴充套件,分離了 NFT 和 SBT 的持有權和轉讓權,並定義了一個新的可設定到期時間的”守衛者”角色 Guard,可使得 NFT 防盜、借貸、租賃、SBT 等更具靈活

本文將系統講述 ERC-6147 的實現機制,並對比往期 NFT 租賃協議專案 ERC-4907、ERC-5055 ,來綜合分析點評此協議以及適合的應用場景!

1、背景

NFT 已經可謂是個老生常談的話題了,藉助鏈上的不可篡改特性以及合約本身的自動化運作,實現了鏈上資產的確權與管理,筆者也從標準協議,租賃拓展協議,乃至於 NFT 交易市場的幾種主流模式來撰寫過多篇文章長文。

如果要論證 NFT 的優勢可能可以羅列上幾頁紙,但要論證 NFT 的劣勢,則千言萬語匯聚成一個詞:流動性!

當然各位可能要質疑的是,流動性不足的困境與實現產權分離標準有什麼關係呢?

在筆者看來,事實上 NFT 流動性的困境更多不是源於 NFT 協議本身,對 ID 的非同質化機制和限定 ID 區間導致的,哪怕是近乎無窮的 ERC 20 token 難道就不缺乏流動性了嗎?更重要的是,流動性本身是出於對金融產品的定價訴求而產生的話題,如何讓 NFT 本身具有使用價值,便成了讓價值有所依歸而不是隻依賴於市場操作的協議。

影響使用價值 NFT 使用價值的,也正是 NFT 協議本身

1.1、產權耦合,高價值 NFT 會傾向於安全避險

目前 NFT 被盜的案例很多,然而現有的 NFT 防盜方案,比如將 NFT 轉入冷錢包等都會使得 NFT 的使用不便。

並且在目前的 NFT 借貸中,NFT 所有者需要將 NFT 轉移到 NFT 借貸合約中,NFT 所有者在獲得借貸期間不再擁有 NFT 的使用權,這邊是產權耦合的問題,這其實和我們現實中購買房產再房產抵押換取流動性資金時,再非風險條件下是不用被佔用房屋使用權的情況很不同。

記憶尤新的是,猴子 APE 空投時被攻擊者用閃電貸結合 NFTX 進行攻擊

原事件分析可拓展閱讀:EIP-5058 能否防止 NFT 專案方提桶跑路?

整件事情裡,唯一受損的則是質押了猴子的使用者,本來是賺取微不足道的時間利差卻痛失了 ape 的海量空投。

同樣的,產權耦合的還有 SBT 的問題

對於 SBT,目前主流觀點認為 SBT 是不可轉讓的,這使得 SBT 與以太地址繫結。但是,當使用者地址的私鑰洩露或丟失時,找回 SBT 將成為一項複雜的工作,並且沒有相應的標準。SBT 本質上實現了 NFT 持有權和轉讓權的分離。當 SBT 所在的錢包被盜或不可用時,SBT 應該是可以恢復的。

例如,如果一所大學向其畢業生頒發基於文憑的 SBT,如果大學後來發現畢業生有學術不端行為或損害大學聲譽,它應該有能力收回此文憑的 SBT。

1.2、產權分離分案,強制性維度難以把控

過往十四也解讀過若干嘗試產權分離的方案,例如 ERC-4907 和 ERC-5058 ,不可避免的最大的難題在於強制性程度的衡量,這並不是方案本身的問題,而是方案本身的哲學理念問題。

1.2.1、簡單哲學 ERC-4907 ,定義願景剩下交給共識

在 2022-07 月,NFT 租賃市場 Double Protocol 提交的可租賃 NFT 標準“EIP-4907 ”透過了以太坊開發團隊的最終稽覈,成為第 30 個 ERC 標準“Final”的狀態。

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

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

歸咎原理,其實 4907 只是新增了一個資料物件 UserInfo 在所有權的概念之外增加“使用者”的維度,但是畢竟其強制性有限,只要轉移就能強行終止出租授權

詳情可拓展閱讀:

  • 721 租賃協議解讀:以太坊新標準 EIP-4907 是怎樣實現 NFT 租賃的?
  • 1155 租賃協議解讀:NFT 租賃提案 EIP-5006 步入最後稽覈!

1.2.2、 0 信任哲學的 ERC-5058 ,程式碼即法律

他本質上是對 NFT 的鎖定狀態進行管理,讓專案方在繼承 5058 實現的 NFT 專案中,提供鎖定即轉移的功能,也可以在繼承中實現更多功能比如版稅等

他封裝提供了若干提供方法:只有使用者許可以及專案方執行之後才會完全鎖定

使用者可呼叫

  • lockApprove(許可鎖定單個 NFT)
  • setLockApprovalForAll(許可鎖定該地址下全部 NFT)

專案方合約呼叫:

  • lockFrom(鎖定使用者的 NFT)
  • unlockFrom(解鎖使用者的 NFT)

鎖定期的定義也極具強制性,近乎只依據設定之初的時間點

專案方(第三方)鎖定 NFT 時,需要指定鎖定過期的區塊高度,該高度必須大於當前區塊高度。鎖到期後,NFT 自動釋放,才可以進行轉移。

專案目前還是處於草稿階段,或許強制性過高以及使用者專案方雙向操作的較高成本所致

詳情可拓展閱讀:EIP-5058 能否防止 NFT 專案方提桶跑路?

講述完上述完全不強制 4907 ,以及完全強制的 5058 ,便到了本文主題:最新透過以太坊基金會審查,確定為 Final 的 ERC-6147 ,雖然他原生的標題是:《Guard of NFT/SBT, an Extension of ERC-721 》,但十四君從系列的租賃研究經驗來看,他更應該稱是《半強制的 NFT 產權分離標準》

2、ERC-6147 的運作機制

此協議整體程式碼也非常精簡且高度複用,屬於對 ERC 721 的拓展標準,但是要注意,如果使用了他,則轉移的操作可能與常規的 721 的邏輯不同,操作不當可能容易被釣魚,具體如何咱們展開說說。

建議拓展閱讀:【原始碼解讀】你買的 NFT 到底是什麼?

2.1、Guard 是什麼?誰能控制?

首先 ERC-6147 定義了一個名為 Guard(守衛者)的角色,和 4907 的 UserInfo 很相似,

而 Guard 只有該 NFT 的當前所有者地址以及有代扣許可權的地址,可以透過changeGuard設定,

透過原始碼可以看到,在設定 Guard 的時候若干的細節// 防止誤鎖定,所以 Guard 不能設定為 0 地址

設定成功後,任何人都可以透過 guardInfo 方法來查詢某個 NFTID,當前的 Guard 資訊,同時這裡也沿用了和 4907 一樣的基於時間戳的設計,所以是到期無需二次上鍊交易,就可以自動失效。

那 Guard 的身份,誰可以去除掉呢?只有 Guard 自己以及時間(到期)可以。

2.2、Guard 能做什麼?

首先具有了強制轉移權,對於設定了 Guard 的 NFT 而言,在進行transferFrom的時候,會查詢交易發起方是否是守衛地址,是才能轉移。

 💡 請特別注意 1 :

對於設定了 Guard 的 NFT 而而言,原持有者將只有持有權,並沒有轉移權(即使用權),其他 Dapp 依舊可以查詢到此 NFT 的所有者是原使用者,但原使用者無法驅動其進行轉移。

所以對於設定了守衛的 NFT,在 opensea、x2y2等交易平臺上的簽名是有效的(但是無法進行實際轉移,因為 Seaport 等協議執行轉移的時候,是由 Seaport 協議透過代扣授權來執行)

對於交易市場的運作機制可拓展閱讀:

  • X2Y2十萬 NFT 訂單,分析版稅可以不收後多少使用者真這麼做了?
  • 一文講清-NFT 市場新秀 SudoSwap 的 AMM 機制-創新挑戰與侷限
  • 【合約解讀】CryptoPunk 世界上最早的去中心化 NFT 交易市場

💡 請特別注意 2 :

如果守衛直接進行了轉移該 NFT,如果是使用原生的transferFrom或者 safeTransferFrom 方法,其實守衛的設定是不會自動清除的,當然如果是守衛將 NFT 轉給自己自然無妨,但是如果轉給某使用者,然後再借助守衛者的設定是可以再次進行轉移的。

因此如果後續使用 Guard,則更多是需要檢驗是否使用的是transferAndRemove 方法,此方法會在轉移後直接清除守衛者資訊。

並且,守衛者本質上也是一種較高的控制權力,雷同於房屋租賃,抵押的那一刻,其實本質已經屬於銀行,只是只有銀行在滿足某些社會條款的情況下(如違約)才會執行拍賣等操作,既然是某種金融抵押品的屬性,則自然也可以二次轉移此守衛權使用changeGuard方法即可。

對於transferRemove的設計原則是為了適應不同場景。

比如防盜中,如果 NFT 在熱錢包,而熱錢包被盜了,冷錢包依然安全,其實只要transferFrom到其他安全地址就好了。

或者租賃的時候,guard 呼叫transferFrom轉到新的租賃地址,就實現了租賃。

還有 SBT 的社交恢復,將 SBT 轉移到新地址,依然不影響 SBT 的不可轉移特性

2.3、Guard 不能做什麼?

從原始碼可以看到 Guard 相關的只有在授予時,是持有者和 Approve 授權者可以設定,但 Guard 是不能設定代扣的。

一方面是出於已經不需要考慮代扣授權者了,因為本質上該 NFT 的轉移權被限制到了 Guard 上,另一方面是 Guard 也不能設定Approve,是防止在守衛者歸還了轉移權後,反而用 approve 轉移走了 NFT,這樣違背原本意願,使用者又難以發現的場景。

3、總結

用一張充滿金融屬性,稍有世俗的統計來呈現如今以太坊上 NFT 型別的資產概覽把

每天 30 多萬筆 NFT 交易, 20 餘萬各類 NFT 合約,這樣的總數都呈現出的是圍繞資產確權帶來的金融屬性價值。

但是任何時候金融屬性都需要逐漸依歸,我們可以看到用 NFT 來確認社交關係的 Lens,可以看到用 NFT 來做遊戲資產的各種 Gamefi,也可以看到圍繞內容創作藉助分拆眾籌的 Mirror 等,

在以太坊問世區區 8 年多的時間來,圍繞 EIP 的提案總數已經達到 6500 ,

對比於同樣重磅的 4907 而言,6147 更多是強在相容性的最佳化

比如 4907 做租賃,user 這個角色需要專案的主動認可,如果一個遊戲沒考慮 user 這個角色,只考慮 owner, 4907 是不適用的。而 6147 只要認可 owner 就夠了,並不用在意遊戲專案和 NFT 本身是否支援租賃,現在大部分應用協議仍然是隻認 owner 的,這也是 4907 問世後,還無法大幅度改變現狀的原因,只有先適應時代潮流之中能逐漸發光發熱。

另外 6147 也提出了“可管理的 SBT”和“有效的 SBT”概念,現在的 SBT 提案設計太注重 Vitalik 提出的“不可轉移”特性了,但是卻忽略 NFT 的潛在管理場景,比如社交恢復、收回 SBT(比如學術不端,需要收回學位,或者一個 DAO 成員在社羣作惡,需要收回它的 SBT 許可權)

參考連結:

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-6147.md

https://ethereum-magicians.org/t/final-eip-6147-guard-of-nft-sbt-an-extension-of-erc-721/12052

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *