作者:nich,1kx;翻译:金色财经xiaozou
钱包基础设施在解锁下一代dapp web3体验方面发挥着至关重要的作用。
到目前为止,想要进行首次web3交互,用户还必须安装额外的软件,找到并购买加密代币,甚至还要面对不熟悉的屏幕确认操作。尽管改进了体验,并且开始依赖助记词,但这些障碍仍然是促使去中心化应用程序客户流失的关键因素。
创新环境已经成熟,可以抽象技术复杂性,在不损害自我托管和去中心化的原始精神的情况下,自然融入新的金融、社交和游戏体验。
2023年是钱包生态的关键一年,全层面的账户抽象和开发活动改变着市场结构,并改变着我们对用户、dapp和钱包之间关系的认知。
本文主要内容如下:
· 账户抽象及其好处
· 钱包基础设施和AA堆栈概述
· 新兴dapp/钱包开发模式及其影响
· 持续的挑战及解决方案的进一步探索
1、账户抽象简介及原理
我们可以将帐户抽象视为帐户管理与密钥管理的解耦。账户是区块链上的一个实体,可以持有资产并具有交易历史。Signer签名者(密钥)是有权代表帐户执行操作的实体。
对于传统帐户(EOA)来说,私钥保留对其关联帐户的唯一和全部控制权。私钥与帐户之间严格的1对1映射关系意味着:
· 用户在与区块链交互时仅限使用专用密钥管理解决方案(例如Metamask、Ledger)。
· 丢失私钥后无法追索,而且控制帐户的密钥不能被替换。
· 无论是免费NFT的铸造还是数百万美元的转账,由该私钥发起的所有操作都被视为是平等的。
帐户抽象使帐户成为一个智能合约,它的动态逻辑表明哪些密钥可以代表其执行操作以及范围权限,并根据用例进行更进一步的制衡。
我们可以通过查看被抽象的内容进一步了解其中的好处。
AA账户抽象:抽象了什么?
由于以太坊协议只识别源自EOA的交易,因此账户抽象需要链下基础设施将源自智能合约的交易转发到链上。
ERC-4337于2021年推出,是一种在不更改核心协议的情况下实现这一目标的标准化方法。然而,一些项目早在AA标准完全成熟之前就已经实现了AA的优势。
· Safe多签钱包于2017年推出,目前已发展至为DAO、企业和个人价值500多亿美元的资产保驾护航。
· Argent移动钱包自2018年以来一直由智能合约账户提供支持。
· Sequnce钱包于2021年推出,使Skyweaver能够通过电子邮件创建并登录他们的智能账户,并能使用非原生代币支付费用。
这需要各项目构建并维护自定义中继基础设施。
来看ERC-4337。该标准为中继层提供了一种去中心化和抗审查的替代方案,定义了一个面向账户、paymaster和签名聚合器的接口,通过一个共享的账户抽象交易(“User Operations”)备用内存池与第三方relayer中继器进行交互。
Relayer中继器(“bundler”)将多个UserOps捆绑打包成一个交易,发送给独立的EntryPoint合约,该合约随后验证费用将得到支付(由账户支付或通过paymaster支付),并在智能账户所对应的UserOps上执行。
我们可以将其与提供原生帐户抽象的链上的验证和执行方式进行比较(不需要额外的中继操作,例如zkSync和Starknet),还有最近发布的针对以太坊及其rollup的原生AA的RIP-7560提案。
2023年3月,4337 EntryPoint合约部署至主网。其社区在让开发人员参与该帐户抽象运动方面取得了巨大的成功。
这为该钱包生态带来了一波新的基础设施和服务提供商,并推动现有项目确保其业务战略和产品能够持续满足应用开发人员的需求,这些应用开发人员旨在利用AA为用户提供无缝顺畅的web3体验。
2、钱包基础设施及AA堆栈
(1)签名者和密钥管理
签名者(Signers)和密钥管理基础设施负责生成和保护用于签署消息、交易和UserOps的公钥对。这里最直接的例子就是传统的EOA钱包,但钱包即服务(wallet-as-a-service)提供商已经出现,可以通过社交和电子邮件等替代认证方法实现无助记词登录和钱包管理。
在底层,这些服务要么将关键数据内容存储在HSM(如AWS KMS)中,只有用户才能通过身份验证凭据(Magic、Turnkey)访问,要么采用某些SSS/MPC方案(Privy、Web3Auth、Portal、Capsule)以保护这些内容的安全。
Lit通过去中心化密钥改进了这种服务器端密钥存储设计。网络中的每个节点存储通过DKG算法生成的ECDSA私钥的一部分,所有操作都在加密的虚拟环境中进行。可以将任意身份验证规则分配给密钥对,使应用程序或用户可以完全控制所允许的交互操作,并施加支出限制。该网络可以进一步被2/n的MPC钱包用作备份和恢复选项。
今年,在利用硬件Signers和Passkeys作为账户签名者,为用户提供现代移动或桌面设备开箱即用的密钥管理方面,已经有了快速的试验进展。这些签名者使用生物识别身份验证(例如FaceID、TouchID),为熟悉的用户体验提供额外的安全性。
· 硬件Signers利用单独的子系统,如iPhone Secure Enclave和Android Titan HSM来生成密钥和签名消息,保证硬件级别的安全性。由于密钥无法从设备中提取,因此与其他恢复方法一起使用或作为2FA系统的一部分是非常强大的。
· Passkeys是建立在WebAuthn之上的无密码认证标准。其中,密钥对是在设备的操作系统中生成的,可以通过iCloud等服务在设备之间同步,所以如果用户选择的话,是有可能恢复的。
这里的一个限制是,密码和硬件Signer生成的签名不能被比特币和以太坊等链原生识别。它们使用secp256r1 (R1)椭圆曲线,而比特币和以太坊则使用K1曲线。虽然目前正在进行无需信任和有效的R1验证工作,但一些支持Passkey的产品正在使用Lit和Turnkey等服务,一旦用户使用他们的密钥进行身份验证,就会产生K1签名。
这里需要注意的一个标准是EIP-7212,它建议将R1曲线直接添加到EVM中作为预编译合约,这样每个现代设备都可以在没有第三方服务或中间人的情况下原生签署交易。
随着账户抽象交易量的增长,使用BLS签名的签名聚合可能会导致智能账户费用比L2上的EOA更便宜。4337标准为聚合器助手合约定义了一个接口,该接口验证单个聚合签名,批准多个UserOps,而不是单独验证每个UserOps。
(2)Relayer中继器
Relayer(例如4337 Bundler)将交易或UserOps转发到内存池。在具有原生AA的链上,网络运营商和排序器(sequencers)扮演Relayer这一角色,从而消除了对外部专用中继器的需求。
就像以太坊有多个客户端部署(例如geth、erigon、reth)一样, 4337生态也有不同语言的多个bundler部署,使网络更加稳健,可以抵御单一部署的漏洞风险。4337规范包括一套测试套件,以确保整个网络中的bundler兼容性。部署方有Stackup (Golang)、Pimlico、Bionomy、Etherspot (Typescript)、Candide (Python)、OKX (Java)和Alchemy (Rust)。
Bundler的激励模式与区块建设者类似,从捆绑的用户操作(而非交易)中收取费用。在实践中,bundler需要在区块构建器中加入一个API来查看当前区块,并创建一个对该区块有效的包,因此应将其视为区块构建器的一部分。
随着4337的增长,我们有望看到建设者也成为bundler,因为这种混合模式比起只做建设者将更加有利可图,他们可以从交易池和UserOps池两个池中进行选择。
(3)Paymasters
通过允许dapps为用户支付gas费,允许用户使用非原生代币支付费用,或通过传统支付轨道进行链下结算,Paymasters实现了费用抽象。Paymaster服务有两个主要组成部分:
· Gas策略管理器,用于让开发人员定义赞助gas费的条件。这可以限定在整个项目范围内,也可以基于各合约或钱包地址来界定。开发人员还可以定义他们所希望的限制gas赞助的方式,例如对gas价格、请求、或每月赞助金额进行限制。gas赞助费通常会计入服务提供商的开发商每月发票中,并根据赞助金额收取约5%的附加费。
· Paymaster智能合约根据链上状态(如账户余额)或链下gas管理策略,验证给定交易是否有资格被支付。Paymaster合约持有用于支付gas费的原生代币余额,并且可能包含定期检查付款代币(例如USDC)和原生代币(例如ETH)之间汇率的价格oracle逻辑。
Paymaster可以分为链上、链下两种:
· 链上Paymaster(例如ERC20Paymaster、StablecoinPaymaster)仅依赖于链上状态来验证交易是否能够被paymaster支付。这意味着某些paymaster,比如那些接受使用ERC-20支付gas费的paymaster,可以是无需许可的,但需要注意的是,paymaster必须得到账户的批准才能进行支付代币转账。Paymaster合约管理员可以提取代币并兑换回原生代币以回填(refill)合约,在ERC20价格之上设置标记,为Paymaster更新下一个UserOp的ERC20价格设置价格差异阈值,或者手动更新价格。
· 链下Paymaster(例如VerifyingPaymaster)涉及与服务提供商的paymaster API交互,以赞助UserOp。链下服务查验资格并使用paymaster密钥签署交易。虽然这种解决方案是无需许可的,但链下paymaster可以通过最小化链上检查来节省gas费。Gas策略可以更加细化,并将Discord活动等链下活动纳入考量。
(4)账户厂商和框架
账户厂商和框架提供“headless”(无头)智能账户部署和SDK,dapp和钱包客户端可以在此基础上进行建设,代表用户创建自我托管的嵌入式账户。账户本身是智能合约钱包,具有自己的签名验证、执行和重放保护(nonce管理)逻辑。所有者使用密钥授权来自智能帐户的用户操作。
从高层来看,智能账户供应商提供了3个核心内容:
· 智能合约钱包的核心部署,使用自己的一套逻辑来验证、执行交易,以及在交易执行前后执行其他额外操作。它还包含如何通过原生模块及第三方模块向钱包添加附加功能的逻辑。
· 厂商合约,部署钱包实现的新实例,由帐户的初始签名者发起。在ERC-4337下,dapp可以通过指定他们所选供应商的厂商合约地址为他们的用户创建智能账户。
· 一个SDK,为开发人员正在创建的智能帐户提供即插即用的定制能力。这可以是不同的签名选项、出/入金方式和中继技术。
在ERC-4337下,UserOp的“sender”字段是指正在进行交易的智能帐户。如果帐户尚未部署,EntryPoint将从“initCode”中指定的厂商合约中部署帐户。用户的密钥可以用来申领智能账户,以进行后续的dapp交互。
Safe、Zerodev和Bionomy等账户提供商与密钥管理器和身份验证基础设施集成,为dapp提供了希望用户如何管理智能账户的选择。例如,Safe的Web3Auth集成让用户能够通过社交或电子邮件使用他们的帐户,Zerodev与Turnkey的集成提供了使用Passkeys管理帐户的选择。
Safe以其久经考验的智能钱包产品而闻名,被个人用户、团队和DAO广泛使用。迄今为止,在至少12个区块链上部署了500多万个Safe账户执行2200多万笔交易。在v1.4.1(2023年7月发布)之前,开发人员已经能够使用Gelato relay来进行gas抽象交易。这种集成目前支持Gnosis Pay和BasedApp等加密借记卡产品,用户可以使用其Safe账户中的资金从任何接受Visa支付的供应商处进行购买操作。v1.4.1通过模块支持ERC-4337,为中继器供应商提供了更多选择。
ZeroDev是今年早些时候推出的智能账户提供商,最初就是为ERC-4337构建的。Zerodev聚合了多个bundler提供商来抽象UserOp中继服务,并公开了一个gas管理器仪表板,开发人员可以在其中定义范围和限制逻辑,从而为用户提供费用赞助。Zerodev和Bionomy(也运行自己的bundler网络)目前在4337账户市场占据主导地位。
Alchemy的AccountKit具有4337兼容的智能账户部署“LightAccount”,它基于EF部署,并添加了EIP-1271支持(验证来自智能合约的签名)以及所有权转移、密钥轮换和命名空间(namespace)存储。
(5)账户模块
账户模块是充当智能账户的可安装组件的智能合约。虽然模块基础设施仍处于非常早期的阶段,但我们认为模块将通过以下方式被发现和安装:
· 开发人员:嵌入式智能账户可以配备由dapp开发人员选择的“预装”模块,构建具有针对具体用例定制功能的入门钱包。
· 最终用户:钱包接口可以展示一个“模块存储”界面,用户可以在其中发现新特性并将其添加到钱包中。
通过AA将UserOp验证和执行正式分离,模块可以包含仅验证或仅执行的逻辑。
· Validators(验证者)。在UserOperation的验证阶段调用。他们的主要功能是验证UserOperation的签名,并确定其有效性及是否应该执行。示例包括multisig、ECDSA、passkeys、多链验证和会话密钥等。会话密钥使dapp能够代表用户进行签名以简化用户体验,就像具有自定义权限和期限的临时私钥一样。
· Executors(执行者)。在UserOperation的执行阶段调用。他们扩展了帐户的执行逻辑,并支持更多样化的可本地执行的操作,比如在常规ERC-4337执行流程之外触发的自动操作,例如当价格达到某个阈值时自动进行代币兑换。
· Hooks。在执行前/后运行,并对帐户实施控制。例如,Hook可以在执行后运行,并恢复任何符合特定标准的交易,从而加强用户的安全性。
虽然像Candide这样的一些钱包已经开发了用户可以直接安装的模块,但我们预计会出现一个丰富的第三方模块生态,可以在钱包的应用商店界面中找到,或者由dapp开发人员集成到一个嵌入式“入门”钱包中。
智能账户框架已经在设计时进行了模块考量。Safe的核心合约处理模块管理逻辑,用于从账户中添加和删除模块,但将真正的模块相关逻辑和存储完全限定在一个单独的合约中。这种分离降低了第三方模块覆盖同一状态的风险,损害了帐户的安全性和预期行为。
Safe{Core}协议引入了一个带有模块、hooks、管理器和注册表的开放框架,旨在培育一个受Safe钱包产品启发的可组合智能账户生态。
ZeroDev明确地将他们的模块(“插件”)划分为验证或执行两类。Executor模块被设计为与Validator模块配对,允许自定义函数通过不同的validator“路由”。例如,“NFT转移”功能只允许通过2FA转移NFT。
构建强大的模块化智能账户生态有一些考虑因素:
互操作性。由于多个智能帐户供应商都对于如何让第三方向帐户添加新功能都有自己的一套方法,模块开发人员正朝着供应商锁定的方向前进,或者不得不应对开发相同功能以兼容多个帐户部署的技术开销。有一些解决方案可以缓解这种情况:
· 面向模块化智能合约账户和插件的ERC-6900定义了模块化智能合约账户(MSCA)的接口,模块(“插件”)允许任何符合标准的账户部署和插件进行互操作。
· Rhinestone的* ModuleKit用于构建和测试智能账户模块,提供了针对不同账户部署测试模块的模板和框架、集成库(例如DeFi协议)、预构建的执行条件,以及解析模块代码和标记安全漏洞的安全自动化。
安全。赋予用户在钱包中安装第三方软件的能力存在一个重要问题,那就是接口应该如何管理并展示模块的相关信息。
EIP-7484提供了一种验证独立构建的智能账户模块合法性和安全性的手段。在这里,注册表允许审计人员对这些模块的安全性进行认证。前端和智能账户可以查询注册表以获取认证数据,验证模块是否可以安全使用。
更广泛地说,EIP-7512旨在为审计报告的链上表达创建一个标准,该标准可通过智能合约解析,以提取有关审计以执行者及已验证标准的相关信息。
可发现性。注册表可以通过智能帐户平台和钱包接口展示和查询,并由开发人员或最终用户安装。
扩展钱包功能的能力使账户成为web3产品和服务的开发者平台和新的分发渠道。我们已经在Metamask Snaps上看到了这一点,Metamask Snaps允许用户通过安全警报(WalletGuard)、隐私功能(Nocturne)以及与非EVM链(如Starknet和比特币)的互操作性来定制他们的浏览器扩展钱包。
当Chrome为开发者提供了一个通过扩展程序扩展浏览器功能的生态时,就推动了他们的市场主导地位,尽管他们晚出现十年。虽然我们大多数人都很难想象,当模块化账户成为主流时,钱包体验会是什么样子,但无需许可的创新已经开始走上正轨。
3、新兴开发模式及其影响
不断发展的钱包堆栈意味着:
· 开发者可以在他们的应用中为用户创建非托管账户,并将寻求SDK连接器等工具,提供端到端登录的构建选择。
· 嵌入式钱包是一种新的钱包类别,每个供应商在帐户可移植性、可定制性和信任假设方面都有各自的功能和权衡。
如果你在2018年操作过以太坊dapp,你可能还记得在加载网站时会有一个Metamask弹窗。这是由于在连接钱包和dapp方面缺乏良好的用户体验实践,开发人员经常采用硬编码检查来查看用户是否使用浏览器的“windou.ethereum”对象安装了扩展钱包。如果用户安装了多个扩展钱包,将导致不可预测的行为,用户将不得不选择一个钱包从而创建一个竞争较小的钱包市场。
WalletConnect通信协议的出现让用户可以将任何钱包连接到任何dapp,当时一起出现的还有Web3Modal,Web3Modal是一个包含按钮和模块组件的库,让用户选择他们想要与dapp一起使用的钱包。
如今,Web3Modal是多个钱包连接器库(如RainbowKit、Web3Onboard和ConnectKit)中的一个,为dapp开发人员简化了钱包检测和基于钱包的身份验证过程。这些库提供了开箱即用的主题选项、钱包搜索功能以及可以引导用户安装钱包的屏幕(如果用户还没有安装钱包的话)。
最近,EIP-6963最终被确定为替代“window.ethereum”的另一种钱包发现机制,允许dapp和扩展程序提供的注入脚本以可预测的方式进行通信。得益于该标准,用户现在在选择连接到dapp的扩展钱包时有了更多的选择余地,并为钱包打开了一个更具竞争力的市场。
虽然连接器库已经显著改善了开发者体验和用户体验,但期望用户已经安装或将会安装额外的软件来与dapp交互仍然是一个很大的采用障碍。
我们已经看到了dapp登录用户体验的未来,下一代钱包库(我们将在这里称之为完全成熟的“Onboarding SDK”)正获得更多关注。除了基于钱包的身份验证之外,这些SDK还提供了其他注册和登录选项,如电子邮件、社交、短信,并为用户创建了嵌入式钱包,而无需用户安装额外的软件或退出dapp。
开发人员可以直接集成由密钥提供商提供的连接器(例如Magic、Privy、Web3Auth),或者使用那些打包多个服务的连接器(例如Dynamic、Thirdweb、0xPass),为他们想要公开的身份验证选项和他们想要创建的钱包类型提供即插即用的选项,从而实现完全自定义的登录流程。Onboarding SDK还可以与智能账户提供商集成,以创建嵌入式智能钱包,提供进一步的用户体验增强功能,如无gas交易和出入金方式。
随着越来越多的人采用“headless”钱包,以及钱包领域向嵌入式钱包的倾斜,钱包和dapp之间曾经清晰的界限开始变得模糊。
(1)独立钱包、嵌入式钱包及特定应用钱包
今天的Web3用户习惯于通过独立钱包(如Metamask或WalletConnect提供的钱包)与dapp交互,将他们的资产和链上足迹积累到一个或几个账户上。
随着越来越多的dapp通过嵌入式钱包和多家供应商来吸引用户,对于dapp开发者和最终用户来说,账户管理很快变得复杂起来。Dapp开发人员将不得不评估和管理多个供应商,同时尽力避免锁定单一供应商。对于最终用户来说,为每个dapp创建一个新的钱包将导致资产和身份管理体验不连贯。
虽然特定应用钱包对于某些用例(如游戏)来说是可取的,但在许多情况下,用户可能会登录他们的第一个dapp,使用他们的web2 signers或Passkey创建一个嵌入式钱包,并希望通过使用相同的signer登录另一个dapp,使用他们在帐户中积累的资产。
· Capsule是一个基于MPC的嵌入式钱包提供商,其主打功能是跨使用其服务的dapp的钱包可移植性,使用户可以使用相同的电子邮件登录访问现有钱包。我们可以预期,这将很快成为跨WaaS提供商的必备产品。
· Moonchute在此期间帮助用户管理多个智能账户。他们的统一账户管理器是一个app和API,用于发现由给定签名者创建的智能钱包,允许用户在一个地方管理多个账户的资产。
· ERC-7555提议了一个受SSO启发的标准化接口和请求/响应模式,用于应用程序发现使用其他签名方案创建的用户帐户。在这里,应用程序将用户重定向到给定供应商的URI(可以是自托管域),并解析签名者和关联的智能帐户地址的响应。
(2)迁离EOA
AA的另一个突出挑战是为现有用户提供向智能账户迁移的无缝体验,这些用户已经在多个EOA上积累了一定资产和链上历史。
EIP-7377提议了一种协议内机制,允许EOA发送一次性交易,该交易在其账户上部署代码,有效地将EOA“升级”为智能钱包。
Aarc旨在解决dapp和最终用户的资产迁移问题。他们的UI和SDK索引了特定源地址的资产和权限,并允许用户选择他们想要移动到目标地址的资产,目标地址可能是一个智能账户、其他EOA,或者是使用社交登录创建的嵌入式MPC钱包。对于现有用户已经习惯了独立钱包流程的dapp,当他们希望在其产品中添加嵌入式钱包或AA功能时,Aarc提供了一个简化迁移过程的解决方案。
(3)AA对多链账户管理的影响
考虑到AA和L2活动的势头,我们可以预见未来智能账户将成为EOA的主流,用户将拥有跨多个链的资产。
EOA的一个用户体验优势是,用户可以使用相同的私钥自动访问不同EVM链上的相同地址。缺点是无法更改控制给定地址的密钥,并且如果用户弄丢私钥的话,全部资金都可能丢失。
由于帐户抽象将密钥存储与资产存储相分离,因此可以为给定帐户轮换密钥,而不必在保持相同地址的情况下迁移资金。智能帐户能够使用CREATE2跨链维护相同的地址,即使合约尚未部署在给定链上,用户也可以使用相同的初始验证密钥和帐户部署访问帐户。
然而,从长远来看,跨链维护相同的地址可能是一种反模式。
· CREATE2只能在具有EVM字节码等效的链上使用。在zk-Rollup(例如zkSync)的多链世界中,这种方法是不够的。
· 我们可以预期,访问各种帐户所需的密钥将随着时间的推移而变化,钱包展示了更多的签名和密钥轮换功能。在当前设置下,这可能很快导致跨链的帐户权限状态的漂移,因为一个链上帐户的签名者的更改不会自动将新权限传递给其他链上的签名者。
针对多链AA提出的长期解决方案有:
· 一个专用密钥存储合约,跨链用户帐户在检查权限时读取该合约。
· 使用ENS多链解析器(resolver)作为不同地址的抽象层。
跨链账户和签名者管理仍然是一个活跃的研究领域。研究的最终目标是,用户可以在不进行大量交易的情况下更改访问不同链上多个帐户的密钥。
4、结论
· 账户抽象是一种将签名者与账户相分离的活动,通过将基于合约的账户(而非EOA)作为区块链上的一级实体,为用户提供密钥管理和账户权限的灵活性。
· ERC-4337作为中继智能账户发起交易的标准,促进了适应AA的钱包基础设施的发展,从而产生了新的市场结构、钱包类别、dapp开发和用户登录模式。
· 钱包堆栈被分为signers(签名者)、relayers(中继者)、帐户提供者和帐户模块,为开发人员提供了定制最终用户体验的选择。这带来了额外的开销,以评估每个提供商在gas开销、抗审查性、供应商锁定和互操作性方面的权衡。
· 从EOA的迁移路径和多链背景下的帐户抽象仍然是正在进行中的研究领域。我们期望在明年看到首批解决方案提议的实施。
我们认为,这些发展对整个生态都有重大影响:
· 对于新用户来说,钱包不再是进入web3的唯一入口。应用程序将通过嵌入式钱包、无gas交易和钱包内入金方式显著改进登录体验。
· 对于当前用户来说,随着应用程序利用会话密钥等功能,链上体验将变得更加顺畅。高级用户可以通过模块对帐户权限和其他钱包功能进行更细粒度的控制。
· 对于开发人员来说,模块化的账户基础设施将钱包变成了操作系统。模块市场是web3产品和服务的一种新的无需许可的分发渠道。