ERC-6551 类比式解读

昨天被问了好几次 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 这些概念还有些陌生,这里有一篇我之前写的名词解释可以参考。

Subscribe to zhixian
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.