LXDAO 技术分享|ERC-6551 快速上手
2023-11-2510:32
LXDAO
2023-11-25 10:32
LXDAO
2023-11-25 10:32
收藏文章
订阅专栏



LXDAO 技术分享由 Expert WG 出品,主要由各个领域资深专家组成。工作内容包括但不限于:专家咨询、Code Review、专题研究、技术分享等。


撰文 |  Kahn、 Bruce 


一、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
  • 核心接口 IERC6551Registry


可以看到 2 个关键方法:

  • Account:获取 TBA 合约地址
    a. 该方法内部实现使用了 Create2 计算合约地址。

  • CreateAccount:创建 TBA 合约
    a. 该方法内部实现使用了 Create2 创建合约,遵循 EIP-1167 标准,可以有效的减少生成合约时的 Gas 消耗。
    b. 生成的 TBA 合约,取决于 implementation 的实现,也就是说用户可以自定义 TBA 合约的实现方式。

(2)Implementation 合约

前面提到的 implementation 具体是怎样实现的呢,这是一个例子:
https://etherscan.io/address/0x1a0e97dae78590b7e967e725a5c848ed034f5510

  • 实现要求如下
    • 应该通过 Registry 创建
    • 必须实现 ERC-165 接口
    • 必须实现 ERC-1271 接口
    • 必须实现 IERC6551Account 接口
    • 必须实现 IERC6551Executable 接口

  • 核心接口 IERC6551Account



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

  • 核心接口 IERC6551Executable


  • 1 个关键方法:
    • 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。
  • 钱包与数字资产的关系多了一层中介(TBA)。





四、开发者生态


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,需要做迁移。
  • Iframe 解决方案,查看 TBA 中的资产。






五、应用场景


我们对 ERC-6551 提供的特性进行归纳 ,在应用领域将有诸多使用场景。
  • 更少的操作带来了便利,降低 Gas 消耗。
  • 资产价值重新标定,提高流动性。

游戏

  • 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




JOIN US


官网
https://lxdao.io


Discord 社区
http://discord.lxdao.io


Twitter
@LXDAO_Official


在论坛参与项目讨论、发起想法
https://forum.lxdao.io


加入正在运行的项目
https://lxdao.io/projects


微信群入口已经开放!
公众号后台回复“入群”即可获取二维码



【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code