LXDAO 技术分享|ERC-6551 快速上手
2023-11-2510:32
LXDAO 技术分享由 Expert WG 出品,主要由各个领域资深专家组成。工作内容包括但不限于:专家咨询、Code Review、专题研究、技术分享等。一、ERC - 6551
1、TL;DR
ERC-6551 从进入大众视野已经半年多时间了,在 NFT 领域引发了很高的关注度,也出现了不少黑客松项目,覆盖了社交、交易市场、NFTfi 和游戏领域。下面是从产研角度对它进行一些分析。2、什么是 ERC - 6551
在了解什么是 ERC-6551 前,需要先了解 ERC。ERC 是 EIP(以太坊改进提案)的一个类型,主要代表应用层的标准和约定,包括智能合约,比如代币标准(EIP-20),抽象账户(EIP-4337)等。
ERC-6551(https://eips.ethereum.org/EIPS/eip-6551) 是于 2023 年 2 月份被提出的一个应用层提案,作者之一曾经也是加密猫的其中一位创始人,可以说是很有正统性的。该提案标题为:非同质化代币绑定账户(Non-fungible Token Bound Accounts),副标题为:被非同质化代币拥有的一个智能合约接口和注册表。从字面意思不难理解这是一个跟 NFT 和 账户相关的提案。
从该提案摘要和动机描述中可以归纳出,该提案的主要目的是让 NFT 可以管理以太坊账户(合约)资产,而不仅仅是非同质化代币功能。
当前该提案的状态是 Review,后续有修改的可能。
业界对 ERC-6551 提到最多的是可组合性,下面技术上的一些分析。
二、技术剖析
1、流程图

上面的流程图描述了账户(EOA 或 AA)、NFTs(ERC-721)、TBAs(TokenBound Account)之间的关系。
- 账户 A 和 B 分别持有 Token#123 和 Token#456。
- 能过 ERC-6551 Registry 合约创建 TBAs。
- Token#123 被绑定到 TBA-A 和 TBA-B,也就是说 1 个 NFT 是可以创建多个 TBA;Token#456 被绑定到 TBA-C。
- TBA 是通过 Create2 方式以 Implementation 代码为 copy 对象创建,由创建者控制。
2、智能合约
下面对 ERC-6551 的 2 个重要合约进行最小化实现分析。
(1)Registry 合约
- https://etherscan.io/address/0x02101dfB77FDE026414827Fdc604ddAF224F0921

a. 该方法内部实现使用了 Create2 计算合约地址。
a. 该方法内部实现使用了 Create2 创建合约,遵循 EIP-1167 标准,可以有效的减少生成合约时的 Gas 消耗。b. 生成的 TBA 合约,取决于 implementation 的实现,也就是说用户可以自定义 TBA 合约的实现方式。
(2)Implementation 合约
前面提到的 implementation 具体是怎样实现的呢,这是一个例子:https://etherscan.io/address/0x1a0e97dae78590b7e967e725a5c848ed034f5510- 必须实现 IERC6551Executable 接口

- token:返回该账户持有的 token 信息(chain id、token 合约地址、token id)。
- state:返回一个值,每次账户执行 execute 时该值都会 +1,默认 0 。
- isValidSigner:判断 signer 是否是 token 持有者。在 execute 时会内部会调用此方法。

- Execute:内部是调用了一个底层方法 Call。to 为调用者,value 和 data 为参数。operation 是类型,0: 表示 CALL,1 表示 DELEGATECALL ,2 表示 CREATE ,3 表示:CREATE2 。
三、简单示例
NFT(#1)
链接:
https://opensea.io/assets/ethereum/0x26727Ed4f5BA61d3772d1575Bca011Ae3aEF5d36/1- 这是一个 TokenId 为 1 的 NFT,可以挂在 Opensea 上售卖。
TBA(0x71)
- 有 2 种方式可以快速查看到 TBA 资产信息信息。
- 方式一:通过链接https://tokenbound.org/assets/ethereum/0x26727Ed4f5BA61d3772d1575Bca011Ae3aEF5d36/1
- 方式二:点击 opensea NFT 图片左上角按钮,可以弹窗显示。
- 可以看到这个 NFT 下绑定的 1 个 TBA,该 TBA 下有 2 种类型资产,Collectibles 表示 NFT(ERC-721 和 ERC-1155),Assets 表示原生代币和 ERC-20 。


- 更加详细的资产信息,可以通过区块链浏览器(https://etherscan.io/tokenholdings?a=0x718a9D173E66C411f48E41d3dA2fa6f0CE8f5D3c)查看。
Transfer
- 那么该 NFT 被交易后,由于它所绑定的 TBA 为 NFT 所有,意味者合约里面的资产也随之被交易。
- 该 NFT 可以绑定多个 TAB 的,也会随着 NFT 被交易。
特性
通过上述的合约讲解和示例,可以总结出 ERC-6551 有以下特性。
- 该提案对 NFT(ERC-721)没有侵入性,完全兼容。
- NFT 与 TBA 的关系是 1 对 n(n≥1),也就是说可以把多个合约钱包的资产进行打包,组合到 1 个 NFT 里面进行交易。
- implementation 合约除了必要的接口实现外,其它功能是可以自定义的,也就是说,TBA 完全可以是一个 AA。
四、开发者生态
Tokenbound (https://docs.tokenbound.org/)提供了非常完善的开发指引。
- 前面的合约分析只是最基础的功能,实际上官方团队提供了功能更加丰富的 Registry、TBA Proxy、TBA Implementation 等合约支持。
- Registry 合约里的方法由 Yul 实现,低 Gas。
- TBA Proxy 是一个代理合约,用于升级,低 Gas,可以设置 Guardian。初始化时设置 Implementation,升级时 Initialize 替换 Implementation。
- TBA Implementation 是一个继承自 AccountV3 的合约,里面已经有实现一些基本抽象账户功能,可以监控到 ERC721、ERC1155、ERC20、pay 等行为。
- 前端 SDK,当前最新的 V3 版本,如果要兼容 V2,需要做迁移。
五、应用场景
我们对 ERC-6551 提供的特性进行归纳 ,在应用领域将有诸多使用场景。游戏
- Bundle game character and assets:将角色与其游戏内的资产绑定,比如装备、金币、道具等。
资产管理
- Asset Transfer:将大量资产放到 NFT 的多个 TBA 中。
NFT 创新
- NFT VIP Cards:将 VIP 内的积分、优惠券等资产与 NFT 进行绑定。
- DAO Membership Cards:将 Membership 制作成 SBT(NFT 的特殊形式),与代币、badges、积分等进行绑定。
- Asset Bundles for Sale:组合多个 NFT 进行售卖。
- Social Profile:将社交账户当作一个 NFT,可以做一些资产账户绑定操作,创造更多的玩法。
应用例子
- ERC-6551 官网(https://tokenbound.org/):帮用户钱包中的 NFT 部署 TBA。
- The Managers(https://themanagers.wtf/):是一个基于 ERC-6551 的新一代所有权和数字身份管理工具。
- Lens Profiles V2 已经支持 ERC-6551,Profile 可以当作钱包使用。
- Onchain CD(https://www.onchainalbum.xyz):链上音乐专辑,专辑 NFT 创建 TBA。
- AirStack(https://app.airstack.xyz/api-studio):通过 ChatGPT 方式获取 ERC-6551 的一些统计数据。
- 小猪存钱罐(https://ethglobal.com/showcase/piggybank-6551-nft-e2ai5):用户可以铸造 Piggybank NFT,然后通过支付函数向其存入 ETH,或是直接向 NFT 的 ERC-6551 地址发送 ETH。随着 ETH 余额的积累,NFT 元数据的颜色、文本标签和属性都会不断更新。通过销毁 NFT 的方式取出其中的 ETH。
- Habitat(https://ethglobal.com/showcase/habitat-zpg07):链上蚂蚁森林。
六、总结
可以肯定的是 ERC-6551 是一个应用非常广的以太坊改进提案,有 NFT 的场景都有可能使用到,其潜在价值会随着 NFT 在不同领域的渗透而逐渐被挖掘。当前官方 Github 代码更新频率很高,配置的基础设施也相越来越完善,产品集成是比较容易的。从代码分析看,合约部分逐渐有与 AA 融合的趋势,是一个比较好的现象,非常值得被关注。希望此篇文章让读者对 ERC-6551 有更多了解。
撰文 | Kahn、 Bruce
编辑&排版 | Cikey
设计 | WangTeng
在论坛参与项目讨论、发起想法
https://forum.lxdao.io
加入正在运行的项目
https://lxdao.io/projects
微信群入口已经开放!
公众号后台回复“入群”即可获取二维码
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。