UniPass 聯創知縣:ERC-6551 類比式解讀
作者:zhixian.eth
昨天被問了好幾次 ERC-6551 跟 AA 的關係,聊起來才發現大家對它的理解有各種各樣的偏差。我把今天討論裡用到的一些類比記錄下來,希望能對大家的理解有點幫助。老規矩,這篇小作文不是嚴肅的技術文章,為了便於理解會使用並不精確的類比。
快速了解 ERC-6551
首先,ERC-6551 不是 Token 標準 ,它跟 ERC-721 等不是一個範疇的概念,而是更像 ERC-4337 ------ 是的你沒聽錯,它更像一個 AA 標準 ,只不過是應用層的標準。如果說最像的,應該是(私貨預警 ?)ERC-7093 的社交恢復標準,都是在考慮 AA 應該怎麼用。所以你可以說「UniPass v2 是 4337 / 6551 / 7093 兼容的 AA 賬戶」,但是並不存在「ERC-6551 兼容的 NFT」這種說法。
看到這裡你可能一臉問號❓:不是說給每個 NFT 綁定一個賬戶嗎,怎麼就變成 AA 標準了?這就是敘事的力量了 ------ 同樣一件事情,描述的角度不同,受眾的認知就會天差地別。
站在 NFT Holder 的角度:
我的地址 A 裡有一個 NFT,它有個關聯的地址 X,我可以用 A 控制 X 轉帳;當我把 NFT 轉到地址 B 之後,A 失去了控制 X 的能力,同時 B 獲得了這個能力,所以 賬戶 X 是跟這個 NFT 綁定的。
站在 AA 賬戶開發者的角度:
在 AA 賬戶裡實現一種 NFT 關聯的鑑權方式 ,如果發起轉帳請求的 Key 是一個以太坊地址,並且該地址擁有某個預先登記的 NFT,那麼鑑權通過,可以解鎖賬戶。當然,也可以通過在生成地址時把 NFT 的唯一 ID 編碼進去的方式來達成「先天綁定」的效果。如果你恰好是一個會寫合約的小夥伴,其實可以很快地通過 Safe Module 來實現一個類似功能的 AA 賬戶。
實際上,如果你閱讀過它的 Abstract,應該可以很輕鬆地發現這個結論:
This proposal defines a system which gives every ERC-721 token a smart contract account . These token bound accounts allow ERC-721 tokens to own assets and interact with applications, without requiring changes to existing ERC-721 smart contracts or infrastructure.
用類比解釋 ERC-6551
相信大家已經理解了 ERC-6551 描述的是一種 AA 賬戶而非 NFT,那麼接下來我們就用 AA 科普的最佳道具 ------ 智能門鎖 來進行類比解釋。
首先我們把私鑰類比為指紋。它們分別對應 Crypto 世界和物理世界的「身份」概念,如果被第三方獲得,其他人無法分辨是「自己」還是「別人」在做操作,所以一般我們不會共享給其他人。
然後咱們先從最簡單的 AA 賬戶開始:由單個密鑰(EOA)控制的 AA 賬戶,比如一個單簽的 Safe 賬戶。它的解鎖邏輯就是驗證密鑰的簽名,如果匹配就可以解鎖賬戶;類比到智能門鎖的話,就是用指紋解鎖的邏輯。這種跟身份強綁定的邏輯在一些場景下其實是不合適的,比如澡堂儲物櫃,這時候就需要「鑰匙卡」這種跟人無關的解鎖憑證了,也就是「認卡不認人」。
最後,我們把「人
拿著鑰匙卡
開儲物櫃
拿了 100 美金
」映射到「地址
拿著 NFT
解鎖綁定地址
轉了 100 USDT
」------ 恭喜你,ERC-6551 的基本原理你已經懂了!
ERC-6551 就是把每個 ERC-721 的 NFT 當作鑰匙卡,然後給它配了一個儲物櫃。
小結
是不是有種「戛然而止」的感覺?因為用類比來講的話確實不複雜,實際的 Spec 裡還有一些類似 ERC-4337 裡 Entry Point 的設定,以及關於「循環引用」(就是把鑰匙卡鎖櫃裡了)的處理方法,這些跟大家理解基本原理無關,所以也就不做涉及了。
這個標準雖然思路比較簡單,就是換個視角敘事,但有時候換種角度也會讓一些場景的設計更加自然,比如 NFT 遊戲裝備穿戴的邏輯可以變成「把裝備 NFT 打給人物 NFT 的綁定地址」(感謝史迪仔提供的案例)。因此 ERC-6551 可以說是一種對 AA 的普及有很大助力的協議,希望類似的協議或者用例能夠越來越多,讓大家都感受到 AA 的魅力。
最後,如果你對 AA / EOA 這些概念有些陌生,這裡有一篇我之前寫的名詞解釋可以參考。