抽象账户的本质是合约账户( Contract Account ),在 Ethereum 中,账户有 2 种
一个简单的例子, Contract Address 即为合约部署的地址,任何一个 Ethereum 中可以被调用的合约,都有一个合约地址,以 USDT 的合约地址为例。 EOA 账户则为我们目前熟知的 ETH 账户,即 Metamask 钱包中现实的账户。
0xdac17f958d2ee523a2206206994597c13d831ec7, 该地址即为USDT的token 合约地址, 合约地址无法直接从外部创建,而是用 EOA来创建和管理,创建USDT合约地址的EOA是0x36928500Bc1dCd7af6a2B4008875CC336b927D57。
因此我们了解到, AA 账户是一种特殊的合约账户( CA ),在 ETH 中 AA 账户依然需要 EOA 创建,且由外部的 EOA 控制,因为 ETH 中与链交互的唯一方式是由 EOA 发起的。因此 AA 是一种对 CA 钱包的标准化和模块化实现,且在不断迭代。
上文阐述了 AA 与 CA 的关系,在ERC4 3 3 7的标准提出前,已经有相当数量的 CA 钱包,下面列举了 3 个主流的 CA 钱包和工作原理
在 ETH 发展的极早期,已经出现了多个合约钱包,最著名的合约钱包是由 PolkaDot 创始人 Gavin Wood 团队开发的 Parity 钱包。 Parity 为 ETH 节点的 Rust 实现,与之对应的是由 golang 开发的 Geth 节点。 Parity 钱包是一个支持多签的合约钱包,允许一个合约账户( CA )由多个 EOA 来控制和管理。在 2017 年,一个黑客通过发现 parity 钱包的 bug ,盗走了超过15万个 ETH 。该事件也引起了人们对 CA 钱包的不信任。
因此, AA 钱包需要大量的实践和标准化,来防止类似事件的发生
Gnosis 的多签钱包是目前主流的Multi-sig多签名钱包,并被大多数机构和开发者所使用,相当数量的团队将开发资金存储于 Gnosis 的多签钱包中以防止团队成员作恶。著名的使用 Gnosis Safe 的团队如 Yearn, Aave 和 Balancer。Gnosis Safe的安全性极高,但是使用相对昂贵,这也是CA钱包普遍存在的问题
Unipass 钱包将 MPC 技术和 CA 合约钱包结合,使得用户可以使用社交登陆而无需自我保管 EOA 钱包。需要注意的是 Parity 钱包和 Gnosis Safe 依然需要用户自我托管私钥。 Unipass 的大致流程是
需要注意的是, Unipass 的原始 AA 方案并没有严格执行 ERC4337 的标准。本质钱包的控制权依然由 Unipass 的 MPC 控制的 EOA 所托管。
AA 的本质是一种标准化,模块化的 CA 账户,4337中主要体现为如下的创新
上图大致描述了 ERC4337 下的标准交易流程
我们可以总结 AA 与传统 CA 的最大区别为:
在充分认知 AA 之前,不少人通常将 AA 与 MPC 的概念混淆,因为他们都支持了例如社交恢复,无浏览器插件等功能。 AA 与 MPC 的本质区别如下
下面介绍下 MPC ,以及 MPC 的特点。
MPC 方案在目前的社交登陆中被广泛使用,众多项目纷纷推出 MPC 钱包以满足 Ch a inless 的无感钱包体验,用户无需安装插件钱包和托管私钥。在行业内,该类托管钱包统称为 W a a S ( W a llet a s a Service )。目前成熟的项目诸如
面对雨后春笋般冒出的 Waas 服务,可以预见未来提供 WaaS 服务的产品会越来越多,但是中心化交易所在这方面有绝对的用户体量和大规模商用经验,可能未来所有的中心化交易所都会提供相关服务。
传统 EOA 账户的最大劣势是需要用户自主托管私钥,自主托管私钥存在以下问题:
AA 在设计时,允许用户设立社交恢复账户,借助另一个或者多个外部的 EOA 账户,来恢复对 AA 的控制权,以下为社交恢复的常见流程。
通过上诉的方法,即使用户丢失了控制 AA 的 EOA 账户,依然可以通过社交恢复更改为新的 EOA 。并且与 MPC 的社交登陆不同,该社交恢复完全基于去中心化方案,不存在 MPC 的单点故障风险。
GAS 代付是区块链大规模应用( Mass Adaption )的核心。对于初入 Web3 的用户,最大的痛点便是与链进行交互前,需要预充值 gas 。然而 Web3 的新人获取 ETH 或其他链的代币有较高的门槛,这便大大增加了 Web3 应用对新用户的获取成本。通过 AA 的 paymaster 来做 Gas 代付,可以允许 paymaster 在前期补贴用户的 gas ,降低 web3 的准入门槛。
另一个影响 Web3 大规模应用的核心是跨链问题,假设一个用户在区块链 A (比如 Ethereum )中有 ETH ,但是却想去体验另一条链 B 的应用(例如 Matic 或者 B SC),用户首先需要 swap 成相应链的 Token 并使用跨链桥将资产转移至 B ,整个过程繁琐且冗长。 Paymaster 通过集成跨链协议,如 Layer0 / Warmhole ,可以让用户在链 A 充值,并在任何其他链中无感的使用应用,这使得链的边界感消失,也使得新的 Dapp 更容易获得来自其他链的用户。
上文提到了 AA 账户的优势,然而目前 ERC -4337依然在快速的迭代和创新以解决目前 AA 中尚存的一些劣势
与 EOA 的账户不同,一个 EOA 账户在被创建之后,在任何 EVM 兼容链中,用户可以使用同一对公私钥在不同的链上进行交互。然而,因为 AA 的本质是 CA 账户( Contract Account ),在任何一条链或 Layer2 中使用 AA ,都需要重新部署新的 AA 合约。 AA 合约的部署成本较高,用户可能因此缺乏使用 AA 的动力。
同时,若用户部署不当,如使用了不同的 Factory 来部署 AA 合约账户,可能导致在不同链上的 AA 地址不同,这对用户使用和理解会造成相当程度的困扰。目前 AA 的 Wallet Factory 已经实现了不同链生成相同的 AA 地址的实现,但是在实际使用中,用户依然需要谨慎的检查使用的协议,以确保在不同链上的 AA 地址相同,防止未来可能出现的麻烦和困扰
上文提到, AA 账户需要用户在不同链和 Layer2 分别部署 Wallet Factory 生成的 AA 合约。即使目前的侧链, EVM 兼容链, Layer2 gas 较低,依然是一笔不小的开销。在当前的 gas , ETH 的币价 1800 的情形下,在 ETH 主网部署 AA 账户大致需要20-40美金, EVM 兼容链或者 Layer2 则为0.5美金-5美金不等。在用户尚未使用 Dapp 下就需要支付 AA 的部署费用,对于大多数用户是很难接受的。假设这部费用由 Bundler 或者 Paymaster 补贴,补贴的成本依然过高,需要较强的动机( incentive )。
取决于 AA 的实现方式,以及 Bundler 一次性打包交易的数量(数量越多,单个 UserOP 分摊的 gas 越低),当前标准ERC4 3 3 7交易的 gas 消耗可能为常规 EOA 账户数倍。原因是因为 AA 账户发起的一笔交易往往需要调用 3 个或以上的合约,并且有链上 BLS 签名验证这类及其复杂的计算。目前的4 3 3 7标准也在为此优化,路线包括
上述提到了使用 ERC4337 标准会有相对高昂的成本,具体的成本如何。首先,这里要普及一个知识,即 gas 费用的计算公式:
fee = gas × price
那么, ERC4337 的部署和使用成本具体成本为多少呢, StackUp 的团队在他们的博客中进行了准确的测算。
https://www.stackup.sh/blog/how-much-more-expensive-is-erc-4337
Table 1. Gas for ERC -4337 transactions
从上述的图表中可以看出:
Table 2. Gas fee estimates for ERC -4337 transactions
上述图表,是当前的 gas 价格下,对 ERC-4337 的 AA 账户各种操作的成本测算。我们可以看出:
总结一下 ERC -4337的成本测算,因为在主网创建 ERC -4337的 AA 账户的成本较高, ERC -4337的大规模采用大概率会在 Layer2 和 EVM 兼容链中率先采用。
目前另一个阻碍 AA 发展的原因是基础设施对 AA 合约的兼容,目前除原生 AA 链外的 Dapp 大多数仅仅支持 EOA 账户。对 AA 的支持需要 Dapp 使用 AA 的 sdk 发起交易,并更改查询( query )的参数来获取用户信息。
此外,区块链浏览器目前的用户体验更多是为了 EOA 账户设计,例如 Etherscan 。要更好的方便 AA 账户查询,区块链浏览器可能还需要在 UI 和 UX 进行一系列的优化来方便用户更方便的了解自己账户的变动。
在 ETH 之外的新公链,大多数已经实现了原生的 AA 账户。
共识层支持
原生 AA 账户( Native Account Abstraction )意味着在链的共识层,即链的节点中已经实现了账户抽象,而不需要社区开发者开发和部署。此类 AA 合约一般属于内部合约或系统合约,即由区块链的开发者来开发和维护。
较低的部署成本和额外 gas 开销
内部合约往往拥有更高的权限和优先级,且 gas 计算方式异于普通/外部合约。因此原生的 AA 相比较 4337 拥有更低的部署成本,且往往不会增加大幅交易的 gas 开销。
灵活性较低
因为原生 AA 的升级需要公链开发负责,往往需要对链进行软分叉或者硬分叉,因此不如模块化的 ERC4337 灵活,故而迭代速度和未来提供的新功能有限。
不过目前实现了原生 AA 的链也在积极的增加学习 ERC -4337的可扩展性和模块化,可以让开发者在原生 AA 的基础上拓展更多的功能
Near 在共识层实现了原生的 AA,账户直接存储于区块链中。用户可以通过多个 access keys 来控制账户,并且支持社交恢复(Email,手机号)。下图为 ETH 账户与 Near 账户的区别。
因为 Aptos 和 Sui 的 Resource Ownership 模型, Aptos 和 Sui 也在共识层实现了原生的 AA 。 以 Aptos 为例, Aptos 的账户是区块链上的一组资源,因此在 Aptos 创建账户,需要预先充值 Aptos 来完成账户的初始化。 Aptos / Sui 的账户也支持更改 authentication _ key ,但是账户的地址不变等 AA 特性。
与 Near/Aptos/Sui/Starknet 不同,ZKsync 在共识层同时支持 EOA和AA。因此 ZKsync 既可以用 EOA 发起交易,也可以由 AA 发起交易,借此 ZKsync 可以使用目前主流的Metamask钱包,以及 AA 的 Argent 钱包。ZKSync 的 AA 设计参考了 ERC-4337,因此对 EIP4337 的钱包和 Dapp 有较好的兼容性。目前 ZKsync 的 AA 发起交易的的额外 gas 消耗约为 execution_gas + 20000。在写作时,大约为 0.01USD。相比非原生 AA 的 ERC4337,开销很小。
Starknet 在原生支持 AA ,且不支持 EOA 发起交易。 Starknet 的 AA 账户在设计之中,也是参考了 ERC4337 ,目前 Starknet 的 AA 合约由 OpenZeppelin 提供,使用 Cairo 预言进行开发。
ICP 中的原生 AA 账户称为 Internet Identity ,以下简称 II 。 II 的实现与 ERC4337 有较大的区别。 Internet Identity 使用了在 Web2 框架中常用的 WebAuthn ,使得用户可以使用手机内置的安全芯片来控制账户,且可以自由添加,删除设备。 II 事实将用户的手机设备变成了硬件钱包。
Bundler 在 AA 生态中取代了原来节点 Mempool 的地位,用户的 UserOp 不在发给 Validator ,而是发给 Bundler 进行打包,并由 Bundler 上链。 目前主流的 bundler 如下:
Stackup 的 bundler 由 Go lang 实现,旨在与 Go Ethereum ( geth )轻松集成,并且是此列表上第一个完全符合 ERC -4337的生产标准 bundler 。 Stackup 正在积极维护,并具有完善的文档,是目前最主流的 bundler 。 Stackup 提供了 bundler 的服务,无需团队自己搭建 bundler 服务。
Infinitism 的 bundler 由 typescript 开发,且有 ERC -4337的原作者开发。 Infinitism 同时也开发 ERC -4337的合约,因此 Infinitism 的 bundler 具有与 ERC -4337最好的兼容性。但是因为由 typescript 进行开发,性能和稳定性还需要进一步验证。
Skandha Skandha s是由 Etherspot 开发的基于 Typescript 的 bundler 。 Etherspot 活跃于 bundler 的 mempool 实现. 在 2023 的4月份, Skanda 通过了所有的测试。
Voltaire
Voltaire 是由 Candide 团队开发的 bundler 协议,用于支持他们自己的 Candide 钱包。 Voltaire 是基于 python 的 ERC -4337实现。 Voltaire 目前对 Candide 自己开发的开源钱包有较好的支持。
Rundler 是有目前 eth 最大的节点服务商 Alchemy 自行开发的 Bundler 协议。目前 Rundler 尚未开源,但是因为 Alchemy 巨大的用户量,可能会因此获取大量的流量支持。
Bundler 目前尚处于快速的发展和迭代中。
目前 bundler 尚需解决的痛点是 bundler 的 mempool 一致性与通信问题,假设市面上存在多个 bundler 协议,且 bundler 的协议之间缺乏通信,那么会导致一个严重问题,便是对 bundler 的 DDos 攻击。假设一个用户同时像多个 bundler 发起交易,且 bundler 间无通信,那么这些 bundler 会同时将 UserOp 打包发给 validator ,此时只有第一个 bundler 的 UserOp 会被执行,剩余 bundler 的交易会因为 Nounce 相同被拒绝执行,此时假设该用户的 paymaster 中余额不足,那么 bundler 会为这些 UserOp 支付无效的 gas 。因此, bundler 间的通信是目前需要解决的问题,以防止对 bundler 的 UserOp Spam 攻击。
目前的 bundler 高度中心化,假设 bundler 将一些用户加入黑名单中,会导致这些账户的交易无法被执行。这严重违背了区块链的去中心化,以及无需可( permissionless )的基本逻辑。
Paymaster 是 AA 最重要的一部分, paymaster 可以补贴用户的 gas ,大幅降低 Web3 的准入门槛,下面介绍一些目前主流的 paymaster 实现。
Biconomy Dashboard 使组织和开发人员能够在其项目中利用 AA 的组件。项目方可以将项目配置为通过 Paymasters 为用户支付 Gas 费,添加 Gas 赞助条件。通过为任何受支持的链注册您的付款人, Dapp 可以大幅简化用户的 Web3 体验。
传统的 EOA 账户往往无法同时实现去中心化,易用性和安全性。
在传统的 EOA 框架下,用户需要使用 Web3 应用,往往需要先使用法币获取链的代币,如 ETH 。这需要涉及使用 CEX 的入金服务,再兑换成需要使用链的代币,最终转账到新创建的 EOA 账户中。整个过程,需要大量的 web3 基本认知,且在众多地区,该流程相当繁琐。通过引入 AA 的 paymaster ,用户初期的 onboarding 成本可转移到 Dapp 的项目方。 Gas 费的转移对 web3 的大规模应用,有极大的意义。
目前 ERC4337 尚处于非常早期的阶段,基于 ERC4337 的工具层出不穷,在 paymaster 侧,可以通过审计用户的 UserOp 来防止 rug 的发生,如超额 approve ,被黑资金转账等等。 paymaster 的安全审计可以使用在 web2 的金融领域非常成熟的方式来审查问题交易,保证用户的资金安全。
另一个正在开发的创新便是对账户的安全隔离,比如分离资金账户和游戏账户等。当用户使用熟悉的 defi 和转账功能时,使用对安全审计更为严格的资金账户。当用户尝试 gamefi 或者不熟悉的 defi 时,使用游戏账户。这样,在不增加用户需要管理的私钥的基础上,通过对账户的安全隔离设计,在底层保证了用户的资金安全。
目前,大多设备,如手机,笔记本电脑等,已经内置了安全芯片,如 Mac 和 Iphone 使用的 Apple T2 Security Chip 。因此本质上,每一台搭载了 Tee 芯片的设备,都是非常可靠的硬件钱包。但是这些安全芯片目前并不支持对 ECDSA 或别的常用区块链签名算法的支持。
当前的插件/手机钱包私钥的明文是直接存储于设备中的,若设备被黑,用户的资产会迅速丢失。因此浏览器插件钱包,如 Metamask ,易用性较高,但是安全性低。
硬件钱包
硬件钱包保证了私钥永远不离开设备,且无法被外界直接获取。但是大多数无法做到时刻带着自己的硬件钱包。安全性很高,但是易用较低。
通过 AA 钱包和创新链上验证方式,可以实现直接由设备的安全芯片来签名交易,这样用户的私钥永远不会离开设备,比传统的 EOA 账户更加安全。目前 Internet Computer 的 Internet Identity 和 ETHBogota Hackathon 中的一个项目 porton wallet 实现了通过设备安全芯片签名+ session key 的解决方案,让用户可以完全使用手机/电脑等设备并实现等效硬件钱包的安全性。
得益于 ERC -4337的高度模块化设计,通过对 ERC 4337的拓展和迭代,未来 AA 账户将获得极高的安全性提升。
当前,另一个验证阻碍 web3 大规模应用的问题是区块链生态在不同链上的割裂。
一个简单的例子,一个在 ETH 上的用户,如果要去体验 BSC 的应用,需要怎么做?首先,该用户需要将 ETH 兑换成相应的 USDT / USDT ,并通过跨链桥,将这部分 USDT / USDC 跨链至 BSC ,再通过 CEX 购买一些 BNB ,转账至 BSC ,至此用户才可以在 BSC 上体验一些 defi 等应用。整个流程耗时长,安全性差,且学习成本陡峭,因为大多数新用户并不知道什么是跨链桥。
通过目前通用的跨链协议,例如 Layer0 + AA ,在不同链上使用 DAp 流程可以被大大简化。 pay master 可以充分整合跨链协议,实现 charge it once , pay everywhere 。比如,用户在 ETH 的 pay master 充值了 USDC ,只要用户在不同链上的 AA 账户相同,且绑定了同一个 pay master , pay master 可以代为记账,同样的账户地址跑去任何一条 EVM 兼容链/ Layer2 都不需要用户手动转移资产。
引入 paymaster 的最大优势是给 Dapp 补贴用户程序化的设立了条件,以。
在过去,曾经出现过 Web3 生态项目为了获取客户而补贴 Gas 的情况,但是对 EOA 的账户进行补贴,因为无法程序化的给补贴设立条件,补贴资金往往会被羊毛党和机器人利用,例如直接转走补贴资金,而无法吸引来真实客户。
目前 paymster 的 dashboard 普遍引入了对 Dapp 的 gas fee 补贴的功能, 项目方可以轻松的在 dashboard 中设立补贴的前提条件,这样只有符合特定条件的交易才符合补贴要求。通过 paymaster 在补贴中对交易条件的控制, Dapp 可以在成本可控的条件下,通过补贴吸引更多真实的用户
因为 ERC -4337的模块化设计,未来的 paymaster 可以接入更多的服务,例如广告服务商等等,为 web3 的大规模应用打开更广阔的场景。
在 EOA 下,由于 Metamask 的统治地位,目前的 Dapp 主要是用网页的 DApp 接入,所以网页插件钱包的市场占有率较高。但是 web3 的 mass Adaption 依赖移动端的用户参与,因此 AA 的开发和适配会更加 Mobile Native 。
随着 Dark Forest 的爆火,全链游戏的风潮悄然而至,然而 EOA 在游戏中的体验非常不好。想象一下,每次在游戏中进行任何操作都需要使用钱包进行授权或签名交易,玩家并无法真正专注于游戏本身。因此专为全链游戏设计的 AA 账户:游廊账户( Arcade Account )应运而生。游廊账户是对普通 AA 账户的特化,通过授权特定游戏的特定操作,玩家在全链游戏中无需重复授权和签名交易,大大提高了游戏体验。因此未来全链游戏的兴起极有可能推动 AA 账户的大规模采纳。
近期, intent - based transactions 的概念随着 Unibot 的爆火而兴起,Uniswap 近期也发起了 Uniswap X 项目来推进其 intent - based transactions 的落地。何为 intent - based transaction ,下面这个例子可以很简单的解释:
Intent Based Transactions 有下列优势:
目前, CowSwap 已经实现了基于 EOA 的 Intent Based Transactions ,但是基于 EOA 的 Intent Based Transactions 依然需要用户先授权( ERC -20, Approve ),才可以发起。然而,在 AA 的新账户架构下, 用户可以将 Approve 和 Intent 一并发给 bundler , AA 的 bundler 可以同时接入 Intents Poll ,撮合 intents ,实现更便捷的交易体验。
抽象账户的本质是合约账户( Contract Account ),在 Ethereum 中,账户有 2 种
一个简单的例子, Contract Address 即为合约部署的地址,任何一个 Ethereum 中可以被调用的合约,都有一个合约地址,以 USDT 的合约地址为例。 EOA 账户则为我们目前熟知的 ETH 账户,即 Metamask 钱包中现实的账户。
0xdac17f958d2ee523a2206206994597c13d831ec7, 该地址即为USDT的token 合约地址, 合约地址无法直接从外部创建,而是用 EOA来创建和管理,创建USDT合约地址的EOA是0x36928500Bc1dCd7af6a2B4008875CC336b927D57。
因此我们了解到, AA 账户是一种特殊的合约账户( CA ),在 ETH 中 AA 账户依然需要 EOA 创建,且由外部的 EOA 控制,因为 ETH 中与链交互的唯一方式是由 EOA 发起的。因此 AA 是一种对 CA 钱包的标准化和模块化实现,且在不断迭代。
上文阐述了 AA 与 CA 的关系,在ERC4 3 3 7的标准提出前,已经有相当数量的 CA 钱包,下面列举了 3 个主流的 CA 钱包和工作原理
在 ETH 发展的极早期,已经出现了多个合约钱包,最著名的合约钱包是由 PolkaDot 创始人 Gavin Wood 团队开发的 Parity 钱包。 Parity 为 ETH 节点的 Rust 实现,与之对应的是由 golang 开发的 Geth 节点。 Parity 钱包是一个支持多签的合约钱包,允许一个合约账户( CA )由多个 EOA 来控制和管理。在 2017 年,一个黑客通过发现 parity 钱包的 bug ,盗走了超过15万个 ETH 。该事件也引起了人们对 CA 钱包的不信任。
因此, AA 钱包需要大量的实践和标准化,来防止类似事件的发生
Gnosis 的多签钱包是目前主流的Multi-sig多签名钱包,并被大多数机构和开发者所使用,相当数量的团队将开发资金存储于 Gnosis 的多签钱包中以防止团队成员作恶。著名的使用 Gnosis Safe 的团队如 Yearn, Aave 和 Balancer。Gnosis Safe的安全性极高,但是使用相对昂贵,这也是CA钱包普遍存在的问题
Unipass 钱包将 MPC 技术和 CA 合约钱包结合,使得用户可以使用社交登陆而无需自我保管 EOA 钱包。需要注意的是 Parity 钱包和 Gnosis Safe 依然需要用户自我托管私钥。 Unipass 的大致流程是
需要注意的是, Unipass 的原始 AA 方案并没有严格执行 ERC4337 的标准。本质钱包的控制权依然由 Unipass 的 MPC 控制的 EOA 所托管。
AA 的本质是一种标准化,模块化的 CA 账户,4337中主要体现为如下的创新
上图大致描述了 ERC4337 下的标准交易流程
我们可以总结 AA 与传统 CA 的最大区别为:
在充分认知 AA 之前,不少人通常将 AA 与 MPC 的概念混淆,因为他们都支持了例如社交恢复,无浏览器插件等功能。 AA 与 MPC 的本质区别如下
下面介绍下 MPC ,以及 MPC 的特点。
MPC 方案在目前的社交登陆中被广泛使用,众多项目纷纷推出 MPC 钱包以满足 Ch a inless 的无感钱包体验,用户无需安装插件钱包和托管私钥。在行业内,该类托管钱包统称为 W a a S ( W a llet a s a Service )。目前成熟的项目诸如
面对雨后春笋般冒出的 Waas 服务,可以预见未来提供 WaaS 服务的产品会越来越多,但是中心化交易所在这方面有绝对的用户体量和大规模商用经验,可能未来所有的中心化交易所都会提供相关服务。
传统 EOA 账户的最大劣势是需要用户自主托管私钥,自主托管私钥存在以下问题:
AA 在设计时,允许用户设立社交恢复账户,借助另一个或者多个外部的 EOA 账户,来恢复对 AA 的控制权,以下为社交恢复的常见流程。
通过上诉的方法,即使用户丢失了控制 AA 的 EOA 账户,依然可以通过社交恢复更改为新的 EOA 。并且与 MPC 的社交登陆不同,该社交恢复完全基于去中心化方案,不存在 MPC 的单点故障风险。
GAS 代付是区块链大规模应用( Mass Adaption )的核心。对于初入 Web3 的用户,最大的痛点便是与链进行交互前,需要预充值 gas 。然而 Web3 的新人获取 ETH 或其他链的代币有较高的门槛,这便大大增加了 Web3 应用对新用户的获取成本。通过 AA 的 paymaster 来做 Gas 代付,可以允许 paymaster 在前期补贴用户的 gas ,降低 web3 的准入门槛。
另一个影响 Web3 大规模应用的核心是跨链问题,假设一个用户在区块链 A (比如 Ethereum )中有 ETH ,但是却想去体验另一条链 B 的应用(例如 Matic 或者 B SC),用户首先需要 swap 成相应链的 Token 并使用跨链桥将资产转移至 B ,整个过程繁琐且冗长。 Paymaster 通过集成跨链协议,如 Layer0 / Warmhole ,可以让用户在链 A 充值,并在任何其他链中无感的使用应用,这使得链的边界感消失,也使得新的 Dapp 更容易获得来自其他链的用户。
上文提到了 AA 账户的优势,然而目前 ERC -4337依然在快速的迭代和创新以解决目前 AA 中尚存的一些劣势
与 EOA 的账户不同,一个 EOA 账户在被创建之后,在任何 EVM 兼容链中,用户可以使用同一对公私钥在不同的链上进行交互。然而,因为 AA 的本质是 CA 账户( Contract Account ),在任何一条链或 Layer2 中使用 AA ,都需要重新部署新的 AA 合约。 AA 合约的部署成本较高,用户可能因此缺乏使用 AA 的动力。
同时,若用户部署不当,如使用了不同的 Factory 来部署 AA 合约账户,可能导致在不同链上的 AA 地址不同,这对用户使用和理解会造成相当程度的困扰。目前 AA 的 Wallet Factory 已经实现了不同链生成相同的 AA 地址的实现,但是在实际使用中,用户依然需要谨慎的检查使用的协议,以确保在不同链上的 AA 地址相同,防止未来可能出现的麻烦和困扰
上文提到, AA 账户需要用户在不同链和 Layer2 分别部署 Wallet Factory 生成的 AA 合约。即使目前的侧链, EVM 兼容链, Layer2 gas 较低,依然是一笔不小的开销。在当前的 gas , ETH 的币价 1800 的情形下,在 ETH 主网部署 AA 账户大致需要20-40美金, EVM 兼容链或者 Layer2 则为0.5美金-5美金不等。在用户尚未使用 Dapp 下就需要支付 AA 的部署费用,对于大多数用户是很难接受的。假设这部费用由 Bundler 或者 Paymaster 补贴,补贴的成本依然过高,需要较强的动机( incentive )。
取决于 AA 的实现方式,以及 Bundler 一次性打包交易的数量(数量越多,单个 UserOP 分摊的 gas 越低),当前标准ERC4 3 3 7交易的 gas 消耗可能为常规 EOA 账户数倍。原因是因为 AA 账户发起的一笔交易往往需要调用 3 个或以上的合约,并且有链上 BLS 签名验证这类及其复杂的计算。目前的4 3 3 7标准也在为此优化,路线包括
上述提到了使用 ERC4337 标准会有相对高昂的成本,具体的成本如何。首先,这里要普及一个知识,即 gas 费用的计算公式:
fee = gas × price
那么, ERC4337 的部署和使用成本具体成本为多少呢, StackUp 的团队在他们的博客中进行了准确的测算。
https://www.stackup.sh/blog/how-much-more-expensive-is-erc-4337
Table 1. Gas for ERC -4337 transactions
从上述的图表中可以看出:
Table 2. Gas fee estimates for ERC -4337 transactions
上述图表,是当前的 gas 价格下,对 ERC-4337 的 AA 账户各种操作的成本测算。我们可以看出:
总结一下 ERC -4337的成本测算,因为在主网创建 ERC -4337的 AA 账户的成本较高, ERC -4337的大规模采用大概率会在 Layer2 和 EVM 兼容链中率先采用。
目前另一个阻碍 AA 发展的原因是基础设施对 AA 合约的兼容,目前除原生 AA 链外的 Dapp 大多数仅仅支持 EOA 账户。对 AA 的支持需要 Dapp 使用 AA 的 sdk 发起交易,并更改查询( query )的参数来获取用户信息。
此外,区块链浏览器目前的用户体验更多是为了 EOA 账户设计,例如 Etherscan 。要更好的方便 AA 账户查询,区块链浏览器可能还需要在 UI 和 UX 进行一系列的优化来方便用户更方便的了解自己账户的变动。
在 ETH 之外的新公链,大多数已经实现了原生的 AA 账户。
共识层支持
原生 AA 账户( Native Account Abstraction )意味着在链的共识层,即链的节点中已经实现了账户抽象,而不需要社区开发者开发和部署。此类 AA 合约一般属于内部合约或系统合约,即由区块链的开发者来开发和维护。
较低的部署成本和额外 gas 开销
内部合约往往拥有更高的权限和优先级,且 gas 计算方式异于普通/外部合约。因此原生的 AA 相比较 4337 拥有更低的部署成本,且往往不会增加大幅交易的 gas 开销。
灵活性较低
因为原生 AA 的升级需要公链开发负责,往往需要对链进行软分叉或者硬分叉,因此不如模块化的 ERC4337 灵活,故而迭代速度和未来提供的新功能有限。
不过目前实现了原生 AA 的链也在积极的增加学习 ERC -4337的可扩展性和模块化,可以让开发者在原生 AA 的基础上拓展更多的功能
Near 在共识层实现了原生的 AA,账户直接存储于区块链中。用户可以通过多个 access keys 来控制账户,并且支持社交恢复(Email,手机号)。下图为 ETH 账户与 Near 账户的区别。
因为 Aptos 和 Sui 的 Resource Ownership 模型, Aptos 和 Sui 也在共识层实现了原生的 AA 。 以 Aptos 为例, Aptos 的账户是区块链上的一组资源,因此在 Aptos 创建账户,需要预先充值 Aptos 来完成账户的初始化。 Aptos / Sui 的账户也支持更改 authentication _ key ,但是账户的地址不变等 AA 特性。
与 Near/Aptos/Sui/Starknet 不同,ZKsync 在共识层同时支持 EOA和AA。因此 ZKsync 既可以用 EOA 发起交易,也可以由 AA 发起交易,借此 ZKsync 可以使用目前主流的Metamask钱包,以及 AA 的 Argent 钱包。ZKSync 的 AA 设计参考了 ERC-4337,因此对 EIP4337 的钱包和 Dapp 有较好的兼容性。目前 ZKsync 的 AA 发起交易的的额外 gas 消耗约为 execution_gas + 20000。在写作时,大约为 0.01USD。相比非原生 AA 的 ERC4337,开销很小。
Starknet 在原生支持 AA ,且不支持 EOA 发起交易。 Starknet 的 AA 账户在设计之中,也是参考了 ERC4337 ,目前 Starknet 的 AA 合约由 OpenZeppelin 提供,使用 Cairo 预言进行开发。
ICP 中的原生 AA 账户称为 Internet Identity ,以下简称 II 。 II 的实现与 ERC4337 有较大的区别。 Internet Identity 使用了在 Web2 框架中常用的 WebAuthn ,使得用户可以使用手机内置的安全芯片来控制账户,且可以自由添加,删除设备。 II 事实将用户的手机设备变成了硬件钱包。
Bundler 在 AA 生态中取代了原来节点 Mempool 的地位,用户的 UserOp 不在发给 Validator ,而是发给 Bundler 进行打包,并由 Bundler 上链。 目前主流的 bundler 如下:
Stackup 的 bundler 由 Go lang 实现,旨在与 Go Ethereum ( geth )轻松集成,并且是此列表上第一个完全符合 ERC -4337的生产标准 bundler 。 Stackup 正在积极维护,并具有完善的文档,是目前最主流的 bundler 。 Stackup 提供了 bundler 的服务,无需团队自己搭建 bundler 服务。
Infinitism 的 bundler 由 typescript 开发,且有 ERC -4337的原作者开发。 Infinitism 同时也开发 ERC -4337的合约,因此 Infinitism 的 bundler 具有与 ERC -4337最好的兼容性。但是因为由 typescript 进行开发,性能和稳定性还需要进一步验证。
Skandha Skandha s是由 Etherspot 开发的基于 Typescript 的 bundler 。 Etherspot 活跃于 bundler 的 mempool 实现. 在 2023 的4月份, Skanda 通过了所有的测试。
Voltaire
Voltaire 是由 Candide 团队开发的 bundler 协议,用于支持他们自己的 Candide 钱包。 Voltaire 是基于 python 的 ERC -4337实现。 Voltaire 目前对 Candide 自己开发的开源钱包有较好的支持。
Rundler 是有目前 eth 最大的节点服务商 Alchemy 自行开发的 Bundler 协议。目前 Rundler 尚未开源,但是因为 Alchemy 巨大的用户量,可能会因此获取大量的流量支持。
Bundler 目前尚处于快速的发展和迭代中。
目前 bundler 尚需解决的痛点是 bundler 的 mempool 一致性与通信问题,假设市面上存在多个 bundler 协议,且 bundler 的协议之间缺乏通信,那么会导致一个严重问题,便是对 bundler 的 DDos 攻击。假设一个用户同时像多个 bundler 发起交易,且 bundler 间无通信,那么这些 bundler 会同时将 UserOp 打包发给 validator ,此时只有第一个 bundler 的 UserOp 会被执行,剩余 bundler 的交易会因为 Nounce 相同被拒绝执行,此时假设该用户的 paymaster 中余额不足,那么 bundler 会为这些 UserOp 支付无效的 gas 。因此, bundler 间的通信是目前需要解决的问题,以防止对 bundler 的 UserOp Spam 攻击。
目前的 bundler 高度中心化,假设 bundler 将一些用户加入黑名单中,会导致这些账户的交易无法被执行。这严重违背了区块链的去中心化,以及无需可( permissionless )的基本逻辑。
Paymaster 是 AA 最重要的一部分, paymaster 可以补贴用户的 gas ,大幅降低 Web3 的准入门槛,下面介绍一些目前主流的 paymaster 实现。
Biconomy Dashboard 使组织和开发人员能够在其项目中利用 AA 的组件。项目方可以将项目配置为通过 Paymasters 为用户支付 Gas 费,添加 Gas 赞助条件。通过为任何受支持的链注册您的付款人, Dapp 可以大幅简化用户的 Web3 体验。
传统的 EOA 账户往往无法同时实现去中心化,易用性和安全性。
在传统的 EOA 框架下,用户需要使用 Web3 应用,往往需要先使用法币获取链的代币,如 ETH 。这需要涉及使用 CEX 的入金服务,再兑换成需要使用链的代币,最终转账到新创建的 EOA 账户中。整个过程,需要大量的 web3 基本认知,且在众多地区,该流程相当繁琐。通过引入 AA 的 paymaster ,用户初期的 onboarding 成本可转移到 Dapp 的项目方。 Gas 费的转移对 web3 的大规模应用,有极大的意义。
目前 ERC4337 尚处于非常早期的阶段,基于 ERC4337 的工具层出不穷,在 paymaster 侧,可以通过审计用户的 UserOp 来防止 rug 的发生,如超额 approve ,被黑资金转账等等。 paymaster 的安全审计可以使用在 web2 的金融领域非常成熟的方式来审查问题交易,保证用户的资金安全。
另一个正在开发的创新便是对账户的安全隔离,比如分离资金账户和游戏账户等。当用户使用熟悉的 defi 和转账功能时,使用对安全审计更为严格的资金账户。当用户尝试 gamefi 或者不熟悉的 defi 时,使用游戏账户。这样,在不增加用户需要管理的私钥的基础上,通过对账户的安全隔离设计,在底层保证了用户的资金安全。
目前,大多设备,如手机,笔记本电脑等,已经内置了安全芯片,如 Mac 和 Iphone 使用的 Apple T2 Security Chip 。因此本质上,每一台搭载了 Tee 芯片的设备,都是非常可靠的硬件钱包。但是这些安全芯片目前并不支持对 ECDSA 或别的常用区块链签名算法的支持。
当前的插件/手机钱包私钥的明文是直接存储于设备中的,若设备被黑,用户的资产会迅速丢失。因此浏览器插件钱包,如 Metamask ,易用性较高,但是安全性低。
硬件钱包
硬件钱包保证了私钥永远不离开设备,且无法被外界直接获取。但是大多数无法做到时刻带着自己的硬件钱包。安全性很高,但是易用较低。
通过 AA 钱包和创新链上验证方式,可以实现直接由设备的安全芯片来签名交易,这样用户的私钥永远不会离开设备,比传统的 EOA 账户更加安全。目前 Internet Computer 的 Internet Identity 和 ETHBogota Hackathon 中的一个项目 porton wallet 实现了通过设备安全芯片签名+ session key 的解决方案,让用户可以完全使用手机/电脑等设备并实现等效硬件钱包的安全性。
得益于 ERC -4337的高度模块化设计,通过对 ERC 4337的拓展和迭代,未来 AA 账户将获得极高的安全性提升。
当前,另一个验证阻碍 web3 大规模应用的问题是区块链生态在不同链上的割裂。
一个简单的例子,一个在 ETH 上的用户,如果要去体验 BSC 的应用,需要怎么做?首先,该用户需要将 ETH 兑换成相应的 USDT / USDT ,并通过跨链桥,将这部分 USDT / USDC 跨链至 BSC ,再通过 CEX 购买一些 BNB ,转账至 BSC ,至此用户才可以在 BSC 上体验一些 defi 等应用。整个流程耗时长,安全性差,且学习成本陡峭,因为大多数新用户并不知道什么是跨链桥。
通过目前通用的跨链协议,例如 Layer0 + AA ,在不同链上使用 DAp 流程可以被大大简化。 pay master 可以充分整合跨链协议,实现 charge it once , pay everywhere 。比如,用户在 ETH 的 pay master 充值了 USDC ,只要用户在不同链上的 AA 账户相同,且绑定了同一个 pay master , pay master 可以代为记账,同样的账户地址跑去任何一条 EVM 兼容链/ Layer2 都不需要用户手动转移资产。
引入 paymaster 的最大优势是给 Dapp 补贴用户程序化的设立了条件,以。
在过去,曾经出现过 Web3 生态项目为了获取客户而补贴 Gas 的情况,但是对 EOA 的账户进行补贴,因为无法程序化的给补贴设立条件,补贴资金往往会被羊毛党和机器人利用,例如直接转走补贴资金,而无法吸引来真实客户。
目前 paymster 的 dashboard 普遍引入了对 Dapp 的 gas fee 补贴的功能, 项目方可以轻松的在 dashboard 中设立补贴的前提条件,这样只有符合特定条件的交易才符合补贴要求。通过 paymaster 在补贴中对交易条件的控制, Dapp 可以在成本可控的条件下,通过补贴吸引更多真实的用户
因为 ERC -4337的模块化设计,未来的 paymaster 可以接入更多的服务,例如广告服务商等等,为 web3 的大规模应用打开更广阔的场景。
在 EOA 下,由于 Metamask 的统治地位,目前的 Dapp 主要是用网页的 DApp 接入,所以网页插件钱包的市场占有率较高。但是 web3 的 mass Adaption 依赖移动端的用户参与,因此 AA 的开发和适配会更加 Mobile Native 。
随着 Dark Forest 的爆火,全链游戏的风潮悄然而至,然而 EOA 在游戏中的体验非常不好。想象一下,每次在游戏中进行任何操作都需要使用钱包进行授权或签名交易,玩家并无法真正专注于游戏本身。因此专为全链游戏设计的 AA 账户:游廊账户( Arcade Account )应运而生。游廊账户是对普通 AA 账户的特化,通过授权特定游戏的特定操作,玩家在全链游戏中无需重复授权和签名交易,大大提高了游戏体验。因此未来全链游戏的兴起极有可能推动 AA 账户的大规模采纳。
近期, intent - based transactions 的概念随着 Unibot 的爆火而兴起,Uniswap 近期也发起了 Uniswap X 项目来推进其 intent - based transactions 的落地。何为 intent - based transaction ,下面这个例子可以很简单的解释:
Intent Based Transactions 有下列优势:
目前, CowSwap 已经实现了基于 EOA 的 Intent Based Transactions ,但是基于 EOA 的 Intent Based Transactions 依然需要用户先授权( ERC -20, Approve ),才可以发起。然而,在 AA 的新账户架构下, 用户可以将 Approve 和 Intent 一并发给 bundler , AA 的 bundler 可以同时接入 Intents Poll ,撮合 intents ,实现更便捷的交易体验。