作者:zhixian.eth
一、快速了解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 這些概念有些陌生,這裡有一篇我之前寫的名詞解釋可以參考。