钱包账户是进入 Web3 必不可少的一环,而比特币网络的 UTXO 模式和以太坊网络的账户模式一直以来都有在被对比优劣,当然两种模式各有千秋,不能单纯说谁更好,只能说更适合哪些场景。
撰文:CloudY、Jam
编辑:Vincero、YL
审核:Yasmine
钱包账户是进入 Web3 必不可少的一环,而比特币网络的 UTXO 模式和以太坊网络的账户模式一直以来都有在被对比优劣,当然两种模式各有千秋,不能单纯说谁更好,只能说更适合哪些场景。
但实际上,被用来对比的以太坊 EOA 账户是一个比较原始的产品,具体来说:
EOA 账户这么难用,Vitalik 其实早就知道了,以太坊团队也在尝试解决这个问题,而账户抽象就是解决方案之一。但由于无法为账户抽象修改以太坊底层共识,一直等到 ERC-4337 这个基于应用层的智能合约钱包的方案的提出,账户抽象才真正得到关注,成为热点话题。
本文将在对账户抽象和 ERC-4337 进行简单介绍后,根据账户抽象的应用与 Web2 账户体系的发展,推测未来 Web3 账户体系的演进和流量入口归属。
从生态角度看,过往用户需要利用 EOA 才能进行复杂的链上操作,并且由于目前链上生态发展有限,故而只能提供有限的协议,用户的实际需求并不能得到有效的满足。而账户抽象将上述操作执行简化,仅需用户 input,即可得到 output,不再有频繁的点击和繁琐的签名。可以说,AA 的落地使得链上生态由卖方主导转向买方主导。
账户抽象(Account Abstaction,以下简称 AA)具体指的是什么?将底层技术和数据结构抽象,以简化用户和开发者的操作步骤。简单理解就是「在 EOA 的基础上实现 CA」的功能性。
ERC-4337 成为了 AA 的基础标准。ERC-4337 引入了 UserOperation,它是一种表示用户意图的特殊交易,允许合约账户主动执行操作。这些 UserOperation 由一个名为 Bundler 的角色管理,它模拟执行 UserOperation 并将有效的操作添加到一个特殊的交易池。然后,EntryPoint 合约验证和执行这些 UserOperation,以实现用户意图。
以太坊中有两种主要类型的账户:EOA(Externally Owned Account)账户和合约(Contract Account)账户。
EOA 账户的地址长度为 20 字节,由用户创建时生成的私钥和椭圆曲线加密算法产生的公钥计算而来。EOA 账户状态包括交易次数(Nonce)和资产数量(Balance)。合约账户的地址也是 20 字节,但是它们是由合约创建交易的发送人地址和 Nonce 计算而来。合约账户状态包括合约数量(Nonce)、资产数量(Balance)、代码哈希(CodeHash)和存储根哈希(StorageRoot),后者用于存储合约数据的 Merkle Patricia Trie 树的根节点哈希值。
账户类型和状态信息对于以太坊上的交易和智能合约执行至关重要,也是 EOA 和 CA 的区别所在。
Source:《Account Abstraction, Analysed |Qin Wang∗, Shiping Chen∗ ∗CSIRO Data61, Australia 》
以太坊的交易包括发送者和接收者信息、数字签名、交易次数、资金转移数量、可选数据、燃料限制以及交易费用。上述 2 种不同的账户类型产生了 2 种截然不同的通信交易类型。
在签名过程中,交易数据被哈希后进行数字签名,验证人通过计算椭圆曲线上的点来验证签名的有效性,无需获取发送者的私钥,只需提供交易信息和公钥。公钥的恢复是通过签名中的 v 值来实现,确保了签名的安全和验证的高效。
以太坊的交易结构和签名验证过程揭示了一个重要事实,即发起交易的账户必须是拥有公私钥对的 EOA 账户。
合约账户,由于缺乏公私钥对,无法主动发起交易,而是在接收到交易后根据交易中的信息自动执行账户中的智能合约代码,或向其他账户发送交易信息,甚至创建新的智能合约。因此,目前由主流钱包应用程序如 Metamask 创建的钱包都是 EOA 账户。然而,EOA 账户在使用中存在一些缺陷:私钥风险、签名算法受限、签名权限过高、交易费用限制。
合约账户可以存储代码和数据,并执行预定义的智能合约逻辑来解决 EOA 账户的上述问题。然而,合约账户无法主动发起交易。
账户抽象是对以上两种账户的一种改进,尝试模糊二者之间的界限,变成一种包含复杂逻辑的通用性账户,使账户可以同时拥有 CA(合约账户)和 EOA 账户的功能 。
ERC-4337 在不修改以太坊共识层的情况下完成了账户抽象的功能,成为以太坊最终采用的方案。最终实现链下撮合,链上交易的终极愿景。
Source:《Account Abstraction, Analysed |Qin Wang∗, Shiping Chen∗ ∗CSIRO Data61, Australia 》
• UserOperation
ERC-4337 引入了一种名为 UserOperation 的新概念,以解决合约账户无法主动发起交易的问题,同时避免更改以太坊协议底层的交易类型。
UserOperation 与标准交易相似,但它仅表示用户的意图,而不是直接的交易行为。标准交易会被发送到以太坊的 mempool(交易池),然后由 searcher 和 builder 组合成一个完整的区块,最终由 proposer 发送到区块链上,通常选择回报最高的区块。与此不同,UserOperation 并不是一笔真正的交易,因此 ERC-4337 引入了一个新的 mempool 和一个名为 Bundler 的角色,以去中心化的方式执行 UserOperation。这种创新允许用户的意图能够被处理和执行,而无需直接参与标准交易流程。
Source: ERC 4337: account abstraction without Ethereum protocol changes
• Bundler
Bundler 在处理 UserOperation 时,首先进行基本的合法性检查,然后模拟执行操作以确认签名的有效性。如果模拟执行成功,UserOperation 会被添加到 UserOperation mempool 中,以等待实际链上执行。为了确保模拟和实际执行的一致性,UserOperation 限制了访问可能在执行中发生变化的变量,并只允许访问与发送者地址相关的数据。Bundler 可以根据自己的偏好对 UserOperation 进行打包,优先选择支付更高费用的操作。最终,Bundler 将有效的操作批次发送给 EntryPoint 合约进行链上执行。
• EntryPoint
EntryPoint 是以太坊中的单例合约,其主要任务是处理 UserOperation 的执行。它有两个关键函数:handleOps 和 handleAggregatedOps,它们都先验证 UserOperation,然后执行操作。验证包括检查账户、签名有效性和费用支付。在执行阶段,使用 UserOperation 中的数据调用目标合约账户中的智能合约代码。不同的智能合约钱包协议可能会有不同的解析和执行方式。
Source: ERC-4337: Account Abstraction Using Alt Mempool
• 数据
根据 SixdegreeLab 的 ERC-4337 半年度数据报告:
由此可见,ERC-4337 的采用率还有很大的增长空间,而基础设施的建设也才刚刚开始,这让 AA 的未来充满了可能性。随着 Layer2 和社交应用的兴起,AA 钱包的使用将会迎来一波快速增长。
在了解账户抽象的基本原理和 ERC-4337 的架构之后,我们将进一步探究 AA 的拓展方法。我们不会赘述无私钥和无 Gas 等智能合约钱包的基本功能,而是在 AA 的组件中寻找更多可能性:
ERC-4337 只是应对当前以太坊无法修改底层共识而采用的应用层解决方案,虽然它能使得账户抽象概念大面积普及,但终归是假借合约账户来进行交互。验证过程额外的 Gas 消耗,其他竞品 ERC 的采用,dapp 对合约账户交互的禁止,都是阻碍 ERC-4337 壮大的因素。
所以原生账户抽象,特别是 Layer2 的原生账户抽象就显得格外重要。当前 Layer2s 中,只有 Starknet 和 ZKSync 两条链支持原生的账户抽象。如下图所示,在原生账户抽象方案中没有 Bundler 和 Paymaster,Starknet 使用 Sequencer 确定交易顺序、支付 Gas 并执行,ZKSync 通过 Operator 确定交易顺序、支付 Gas,再调用 bootloader 一起操作。
而宣称要基于 OP Stack 构建的 DeBank Chain 也要在链级别原生集成类似账户抽象的系统,但具体架构就需要在其主网推出时才能知晓了。
Source:《zkSync 中的原生 Account Abstraction 介紹》
NFT 合约钱包是类似于 ERC-4337 的一种应用层的账户抽象方案,它们通过 NFT 使得 EOA 账户拥有 CA 账户的功能,而不是借由 Bundler 调用 EntryPoint 合约,当前有两种 NFT 合约钱包的主流实现方式:ERC-6551 和 A3S Protocol。
ERC-6551 允许用户使用自己 EOA 钱包中 ERC-721 标准的 NFT 作为控制器,操控一个 / 多个新创建的智能合约钱包,从而实现在不修改 ERC-721 代码的前提下,通过「外挂合约」的方式去为已有 NFT 匹配一个 / 多个智能合约账户。这种方式将现有的 NFT 与账户抽象结合,既打开了 NFT 的应用场景又普及了账户抽象的概念。
Source:《EIP-6551》
A3S Protocol 则是使用 NFT 本身的智能合约本身作为智能合约钱包,也就是说钱包资产就在 NFT 的智能合约账户上,完全跟随 NFT 所有权转移,不需要像 ERC-6551 一样为 NFT 合约外挂一个作为钱包的合约账户,用更短的路径实现了 NFT 合约钱包,但这也意味着对已有 NFT 的不兼容。
Source:《A3S Protocol Gitbook》
在多链钱包地址的统一上,两个方案都借用了混淆值 Salt 来实现在不同 EVM 兼容公链上获得一样的地址,以解决合约账户多链地址混乱的问题。这也是当初导致 Wintermute 向不同链上多签地址转账丢失 2000 万枚 OP 代币的问题。
模块化账户抽象的意义在于像 OP Stack 一样将开发和维护的成本降到最低,让钱包开发者能更多关注产品本身,而不是底层基础设施的构建与维护。当然,由此建立的模块化生态也是模块化平台的立足之本,因此模块化账户抽象一定要实现:
• 各模块的相互可组合性(EIP-6900 正尝试设立标准实现)
• 模块功能的多样性(签名方案 / 隐私性 / 抗 MEV/ 出入金 /Intent 等)
• 安全性(各个模块有统一标准避免储存冲突)
• 多链抽象(Vitalik 提出用统一的单链密钥库合约来实现多链智能合约账户协同)
我们在上文提到用 Salt 使多链智能合约账户地址一致,但一致的地址只是第一步,更重要的是让用户在操作中对跨链没有感知,即多链抽象,这是模块化的重要一步,也是账户抽象的重要一步。
Source:《Future of Smart Accounts: Modular, Specialised & Multichain》
我们之前提过以太坊上任何交易都只能依赖 EOA 发起并支付 ETH 作为 Gas。除此之外,EOA 只能使用 ECDSA 签名方案,这使得 EOA 的使用非常繁琐且功能单一,还有私钥泄漏风险,而量子计算机问世的那一天,也是以太坊 EOA 账户成为待宰羔羊的一天。
签名算法
在签名层面当前已经有通过智能合约来实现多重签名和社交恢复的方案(Gnosis Safe 和 Argent),也有用所谓签名抽象来实现一次授权后在给定范围内自由与合约交互的方案(Lens Protocl)。但是根据「Not your keys,not your coins」,我们可以多关注签名算法本身:
• 签名聚合
通过 Schnorr 或 BLS 实现更高效、更简单的签名,这不仅能从底层实现多签,还能通过聚合签名减少 Gas 消耗。当然他们都有各自的问题,例如需要额外的通信回合,不适合较大值 m 和 n 的多重签名方案,大量匹配验证的时间等。
• 后量子安全签名
通过 Lamport 或 W-OTS 等一次性签名来避免他人利用量子计算机破解公开的部分私钥来伪造消息和签名。
ERC7521 Intent Centric
当我们对比账户抽象,特别是 ERC-4337,和 Intent Centric 的架构时,可以发现其实 Bundler 和 Solver 可以是同一个人。也就是说用户的交互内容「UserOperation」可以由 Bundler 来给出,Bundler 解析用户给出的意图提出一个匹配的解决路径,再通过 EntryPoint 合约向用户确认路径的合法性,避免 Bundler 作恶,最后执行被验证的意图路径。
账户抽象和意图的结合将能够实现账户和交互的同步抽象,实现超越 Web2 的用户体验。
Source:《ERC-7521》
而整个交易过程可以通过见证人 / 挑战和响应等过程,使用 ZK 证明技术实现隐私支付。这既能让用户证明交易的有效性,而无需透露发送者的真实地址,还能将多个交易批处理为单个证明,从而减少计算开销并显著提高可扩展性,正所谓降本增效。而一些需要面对监管的企业用户也可以向监管方单独透明化交易,在不牺牲机密性的情况下满足监管合规要求。
Source:《ZKPayments: Achieving Privacy and Scalability》
Bundler MEV 与 Bundler Competition
Bundler MEV 和 Bundler Competition 都是基础设施不够完善的结果,Bundler MEV 来自于 Bundler 类似于 Searcher 的交易打包职责,Bundler 可以改变 UserOperation 的提交顺序获利,而 Bundler Competition 则在不同 Bundler 打包同一个 UserOperation 时产生这与 Searcher 的 Gas War 类似,打包的 UserOperation 没有上链的那个 Bundler 虽然花费了 Gas,但是交易却失败了。
他们都可以借鉴已有的基础设施,例如 MEV-Boost,打通 Bundler 之间以及 Bundler 与 Block Builder 之间的沟通渠道。Etherspot 正在为 AA 开发 mempool 的 p2p 网络,等待打包的 UserOperations 将在这个 p2p 网络中传输,一旦被打包并在链上处理,它们将被标记并从列表中删除,从而避免被多个 Bundler 打包。
Source:《为什么 ERC-4337 的 Bundler 需要与 Block Builders 合作》
Paymaster 出入金
Paymaster 可以为用户支付 Gas Fee,并与用户协商以任意代币或法币作为替代。因此,Paymaster 配合支付服务商为用户提供出入金服务就是一个很好的方案。
Visa 团队在以太坊 Goerli 测试网上部署了两个实验性的 Visa Paymaster 合约,一个用来探索用户是否可以用包括美元稳定币在内其他代币支付费用,另一个则尝试直接赞助交易费用。当然, 将 Paymaster 与现有的 ERC-20 代币整合,需要使用一个外部来源或链上预言机来确定代币价格,并检查 Paymaster 合约是否有批准向用户收取指定的代币。在这套成熟方案下,直接接入 Visa 卡使用法币支付 Gas,甚至实时与 ERC-20 代币进行转换,实现出入金抽象将很大程度降低 Web2 用户的进入门槛。
Web2 时代的网络流量入口和相应的账户体系演进反映了第二代互联网的快速发展和用户需求的变化。
起初,用户通过门户网站进入互联网,他们可以自由选择门户网站罗列出来的在线资源。然后,搜索引擎的出现使得用户能够通过搜索引擎查询关键词,搜索引擎通过分析 URL 来提供相关结果。Web2 时代见证了社交平台的崛起,包括 PC 端和移动端。用户除了主动使用搜索引擎进入 Web2,还可以借由 PC 媒体平台的信息被动接触 Web2,或是通过 PC/ 移动自媒体平台自主进入 Web2。这期间经历了两次从被动到主动的过程,和一次信息去中心化的过程。
而 Web2 的账户体系也在一同改变,从最初的短信 / 彩信以手机号为账户,到 QQ/ 微信 / 博客 / 微博建立多元账户并获得丰富的附加功能和独立的个人网络身份,这些平台引入了个人资料和联系人列表,将用户标识从单一 URL 扩展到更复杂的用户 ID 和社交图谱。
随着网络和硬件技术的发展,出现了两类发展自身生态的方式:
这两种方式都各自有效,并占据了一方天地,微信一个应用内能完成用户的大部分需求,而支付宝支付也可以在各大应用中被找到。
综合而言,Web2 时代的流量入口旨在给用户更多主动性和去中心化,而账户体系则从单一到丰富和多元,并通过两种方式实现自身生态的发展。
Source:OP Research
Web3 时代的账户体系演进既保留了部分 Web2 的影子,又呈现了独特的发展路径。
Web3 时代的账户体系演进延续了部分 Web2 的特点,同时呈现出独特的发展路径。在 Web3 中,出现了多种类型的账户,包括插件钱包如 Metamask、软件钱包如 Math 和 Trust、「操作平台」如 dAppOS 和 Gnosis Safe,以及嵌入在 dApp 内部的 UniPass 和交易所内置的 OKX Web3 Wallet。
我们曾在《Web3 流量入口》这篇文章中提到:
「根据用户进入 Web3 的流程,我们可以把 Web3 流量入口定义为两个大类:
如今我们仍旧这么认为,但是根据第二部分内容,所有这些入口都可以成为 AA 钱包的一部分。不过它们也反向地将 AA 钱包的采用路径分为了两类,即上文所述的账户与应用,用户是先获取账户再进行应用交互还是先进行应用交互再使用账户。
当我们从 AA 采用的进程来看,可以发现最初是 Instadapp 独立的 AA 钱包产品 Avocado 发布,随后 Metamask 发布 Snaps 小程序组件支持部分 AA 功能,支付巨头 Visa 也加入 Paymaster 试水并接入 Visa Card 支付,不久社交应用 Lens Protocol 尝试通过 ERC-6551 建立 AA 钱包,而 Safe 也兼容 ERC-4337 巩固自身「小程序」市场,紧跟着 OKX Wallet 支持使用 AA 钱包,Circle 则是选择发布自己的 AA 钱包。
从中我们不难发现,AA 的采用无外乎两种模式:
这也引出我们需要讨论的部分:既然链上生态因为 AA 的出现将会从卖方市场转变为买方市场,那么用户会对哪种模式买单呢?
Source:《Binance Research:Account Abstractation Report》
从短期的采用率来看基于自身钱包发展小程序生态的 AA 模式会更容易得到用户的接纳,本质上来说就是一个 To C 的方案。因为当前尝试 AA 钱包的大部分用户还是 Web3 用户,所以对于他们来说钱包本身并不陌生也不需要额外的理解就能直接使用,而丰富的功能且流畅的操作体验又能够吸引并留住他们。以 MetaMask 的 Snaps 为例,通过 API 接口允许第三方开发对应钱包小程序来在非 EVM 链交互,看似是为其他钱包引流,但实际上是为自己构建生态进行用户教育。毋庸置疑,MetaMask 彻底兼容 ERC-4337 的那一天,就是它成为 AA 钱包龙头的那一天。
当我们以 dappOS 为例:
dappOS=dappOS Account( 多链统一的 EOA)+dappOS Network 。
dappOS Account:让用户使用基于账户抽象的「统一账户」,而不是普通的外部拥有账户 (EOA),这种方式使得用户恢复账户、预批次处理交易、自动化执行等功能的实现成为可能,同时多链钱包聚合的方式也能方便用户对不同链上的资产进行统一管理。
dappOS Network:去中心化网络,帮助用户自动执行钱包和跨链的相关操作,完成交易背后复杂的交互流程。
dappOS 尝试将账户,公链和 Gas Token 的概念抽离,使用户能有类似 Web2 账户的使用体验,但是由于其还处于相对早期,平台的合作 dapp 有限,不过这并不妨碍它用户数据的增长。因为用户是有动力从 EOA 进入的,特别是需要多账户多链交互的用户,迁移后的交互体验是大于迁移成本的。最重要的是用户一旦进入,这个账户体系基本就不会离开,因为用户在使用的同时也在被教育,首先一开始就接触 AA 钱包的用户是无法使用 EOA 钱包的,其次 dappOS 这一类钱包能满足用户大部分交互需求,用户不必迁移,最后哪怕用户想要迁移,无形中的多链抽象也会让整个迁移过程变得繁琐。
可见,成型的钱包产品可以更快的获得并留住 Web3 AA 用户,例如 Safe,Avocado,OKX Wallet 等。
WaaS 则是与走小程序路线的 AA 钱包相对的应用路线 AA 钱包。先有应用再有钱包,显然是一个 To B 的方案。应用使用 WaaS 定制自己的钱包来配合产品功能,标准化的 WaaS 模块供不同应用挑选,借助应用的流量来扩大自己的生态,构建 AA 钱包平台,再转向 C 端发行针对用户的客制化钱包,用户自由搭配所需要的钱包功能。
以 Stepn 为例,作为一个出圈应用,Stepn 在全球拥有上千万的用户,而每一个用户都通过 Stepn 创建了一个钱包。倘若 Stepn 内置一个 AA 钱包并以该钱包为核心而不仅仅是 GMT 代币,继续发展生态,例如后续的 MOOAR NFT 交易市场,麻将游戏和 Gashero。那么单单这一个 AA 钱包就能为整个 Crypto 市场带来千万级别的增量用户,而且这些用户都是这个 AA 钱包的高粘性用户,因为对于他们来说迁移成本是极高的。
最近大热的 Friend Tech 也是同理,每一个推特用户都可以是它 AA 钱包的潜在用户,而法币出入金和 Gas 代付能让用户越过 Web3 的交互障碍,快速融入 Web3。
落地产品中我们可以关注 WaaS Pay 和 UniPass,这两个产品分别代表了 WaaS 方向钱包的特点:
• WaaS Pay 是一个智能合约帐户部署平台,利用 Safe{Core}协议套件和 Safe{Core}帐户抽象 SDK,专为寻求即时区块链支付同时优先考虑隐私的组织而设计。它提供了一个用户友好的无代码界面来定制智能合约帐户功能,例如社交登录、法定货币进 / 出坡道以及接收者的无 Gas 交易。通过 ZKBob 通过零知识证明 (ZKP) 促进匿名交易,WaaS Pay 可确保敏感的财务数据保持安全和保密。该平台由 Polygon ZKEVM 提供支持,可保证可扩展性和效率,而带有 Helia 的自托管 IPFS 节点可保护敏感元数据。
• UniPass 本质上也是一个为第三方 dapp 提供的 SDK,使得 dapp 可以绕过传统账户私钥和一系列签名以及 Gas 的限制或者托管私钥生成邮箱绑定地址的中心化,直接使用 UniPass 的 DKIM 验证实现邮箱控制的非托管账户,同时经由 Relayer 将链上交互简化,做到无 Gas/ 签名抽象 / 社交回复等大大提升用户交互体验的功能。作为一个由场景驱动的应用,UniPass 选择以联邦社交网络的方式,为不同应用提供定制化服务的同时,建立互通的账户体系。再基于由这个联邦社交网络的互通性,在提供数据所有权和隐私保护的前提下,将社交关系上链,建立对数据和资产具有所有权的 DID 证明自身的使用场景,来吸引更多应用使用 UniPass 的 SDK 进入 Web3。而这些应用的用户自然而然的就成为了 UniPass 的用户,并使用它继续在 Web3 交互,且粘性极高。
由此我们也能看出,在成长空间和对 Web2 用户的获取上 WaaS 路线的 AA 钱包更有优势,但这非常考验团队的产品质量和 BD 能力,不过一旦形成网络效应,就会拥有增长惯性,属于是后期发力的类型。
Reference
[1]《Sixdegree ERC4337 半年数据报告 》
https://sixdegree.xyz/research/Half-Year-Data-Report-of-ERC4337-by-Sixdegree.pdf
[2]《长文深度解读「账户抽象」:7 年路线演化及赛道图谱》
https://www.chaincatcher.com/article/2085142
[3]《解读币安研究院账户抽象报告》
https://www.techflowpost.com/article/detail_12784.html
[4]《EIP-6551》
https://eips.ethereum.org/EIPS/eip-6551
[5]《A3S Protocol Gitbook 》
https://a3sprotocolcontact.gitbook.io/a3s-protocol/a3s-v1.0/how-a3s-v1.0-works
[6]《Future of Smart Accounts: Modular, Specialised & Multichain》
https://longhashvc.medium.com/future-of-smart-accounts-modular-specialised-multichain-d04f083375a6
[7]《为什么 ERC-4337 的 Bundler 需要与 Block Builders 合作》
https://learnblockchain.cn/article/6205
[8]《账户抽象 (Account Abstraction) 完整指南》
https://news.marsbit.co/20230302172702633640.html
[9]《基础设施如何通过账户抽象为数十亿用户提供支持》
https://www.panewslab.com/zh/articledetails/24hz8399g6my.html
[10]《You Could Have Invented Account Abstraction: Part 1》
https://www.alchemy.com/blog/account-abstraction
[11]《以太坊账户抽象研报:拆解 10 个相关 EIP 提案与冲击千万级日活用户的瓶颈问题》
https://www.odaily.news/post/5183201
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。