以太坊创办人 Vitalik 将「帐户抽象」视为以太坊面向 10 亿用户的关键点,那麽帐户抽象有什麽便利之处?
(前情提要:速览》以太坊基金会「帐户抽象」资助轮获奖的18个ERC-4337潜力项目 )
(背景补充:Visa测试「信用卡付Gas费」!通过帐户抽象落地加密货币支付 )
本文目录
以太坊帐户抽象是整个以太坊生态的讨论热点,创办人 Vitalik 甚至专门发表多篇文字阐述帐户抽象之於以太坊的重要性,是以太坊面向下一个十亿使用者的关键之作。那麽,什麽是 「帐户抽象」(Account Abstraction)?
“帐户抽象” 是一项旨在改善使用者与以太坊互动的提案,也是加密货币社群越来越多讨论的主题。不过,你可能会想 ” 帐户抽象到底是什麽,我为什麽要关心它?
本文旨在通过介绍帐户抽象的过去、现在和未来,帮助你理解帐户抽象。我们解答关於该主题的所有问题,特别是关於帐户抽象的 “谁”、”什麽”、”为什麽”、”如何” 等的问题。
关键要点摘要: 什麽是帐户抽象?
与 Web3 中的其他新概念一样,帐户抽象也很难定义。不过,我们可以通过首先解读与讨论以太坊帐户抽象相关的各种术语来更好地理解它:
1. 抽象:电脑科学中的一个(相当复杂的)术语,大致意思是隐藏系统或应用程式的资讯,以便在使用时对後台执行的程式了解较少。也被定义为 「通过提供便於操作的介面来隐藏系统复杂性的过程」。
2. 帐户:使用者在区块链上的代表,可以传送或接收交易,并与其他链上帐户互动。以太坊有两种帐户:外部拥有帐户(EOA)和合约帐户(又称 “智慧合约”)。
延伸阅读:进击的钱包:带你了解加密钱包的新发展
2a. 外部拥有帐户(EOA):使用钱包软体(如 MetaMask)生成的以太坊帐户,由一对公钥和私钥加密管理。EOA 是 “活跃” 的(它可以启动交易并为 EVM 的执行支付网路费用)。不过,它仅限於执行基本操作,如传送以太币或与合约互动。
2b. 合约帐户:以太坊帐户以智慧合约的形式部署,由写入程式码的逻辑(而非私钥)控制。合约帐户是 “被动” 的:它只能根据 EOA 的交易传送交易,不能支付费用。不过,它是可程式设计的,可以根据储存在地址中的程式码执行任意逻辑。
3. 钱包:管理以太坊帐户资金的介面 — 钱包如何执行取决於它与哪种型别的帐户相连。基於 EOA 的钱包(如 MetaMask)需要私钥来授权交易。同时,智慧合约钱包与合约帐户相连,可以使用任意逻辑授权交易(例如使用多重签名方案)。
有了这些定义,我们现在就可以定义帐户抽象了。
帐户抽象定义
帐户抽象是一项建议,旨在提高以太坊帐户管理和行为的灵活性。我们通过引入帐户合约来实现这一目标:定义和管理使用者以太坊帐户(现在称为智慧帐户)的特殊用途智慧合约。
有了帐户抽象,您就可以通过使用智慧合约钱包,而不是仅仅依赖私钥来确保安全,从而享受可程式设计的资金访问。之所以能做到这一点,是因为您的智慧帐户可以自定义交易和转移资产的规则。
那麽,「抽象」 是如何融入这一切的呢?
从网路层面来看,「帐户抽象」 意味着以太坊协议看不到帐户型别的细节。每个帐户(包括自监管帐户)都只是一个智慧合约,使用者可以自由决定如何管理和操作单个帐户。
从使用者层面来看,「帐户抽象」 意味着与以太坊帐户互动的某些技术细节被隐藏在更高层次的介面之後。这改进了钱包设计,大大降低了使用 web3 应用程式的复杂性。
有必要澄清一些概念,因为围绕帐户抽象的混淆来自於不知道(a)抽象的是什麽和(b)抽象发生在哪里。帐户并不一定是从使用者中抽象出来的(即使是从协议中抽象出来的)。你仍然需要一个钱包地址来接收资金,还需要一个签名金钥来确保只有你才能使用这些资金。
从使用者的角度来看,帐户抽象更像是使用一个智慧帐户,它抽象了与区块链互动的一些细节。以下是首次使用 dapp 的使用者与 dapp 互动的情况:
有了帐户抽象,钱包开发人员就可以建立在後台处理这些流程的系统,并简化 web3 的使用体验。一些用例(我们稍後会详细介绍)包括:无需储存助记词 / 私钥,无需为交易支付网路手续费,甚至无需自己建立链上帐户。
帐户抽象的好处
如前所述,帐户抽象消除了使用 web3 钱包和与 dapps 互动时的大部分摩擦。这使 web3 更接近 web2 的使用体验,即所有使用者,无论是新手还是老手,都能从相同程度的灵活性、安全性和易用性中获益。
特别是,帐户抽象化对未来的自我保管具有巨大影响。有了帐户合约提供的功能,使用 web3 钱包就像使用银行帐户或应用程式一样,无需信任银行。
在随後的章节中,我们将介绍帐户抽象的不同层面,并讨论它们如何改善以太坊的使用体验。具体来说,我们将讨论签名抽象(signature abstraction)、费用抽象(fee abstraction)和 nonce 抽象(nonce abstraction)。
签名抽象
如今,EOA 的交易必须有帐户私钥使用椭圆曲线数位签名演算法 (ECDSA) 生成的签名才有效。这为大多数 EOA 提供了一个简单的安全模型:只要私钥仍在使用者手中,资金就是安全的。但它也有一些局限性:
1. 众所周知,EOA 是很难保证安全的,尤其是恶意行为者一直在开发新的方法来破坏私钥。我们目睹了诸多网路钓鱼、社交工程、欺骗、恶意软体注入和类似攻击对 web3 使用者安全带来的挑战。
2. 自我保管可能感觉像一项极限运动。与普通银行帐户不同,如果助记词 / 私钥丢失,您无法 「恢复」EOA 钱包。这就给新使用者带来了挑战,他们必须努力应对完全丢失以太坊帐户中的资产而无法追索的影响。
签名抽象解决了这些问题,不再将 ECDSA 签名作为非托管帐户的预设授权机制。相反,使用者可以定义授权钱包启动交易的自定义规则。或者换一种说法,你可以决定交易有效的含义。
实施签名抽象为更高阶的授权方案提供了可能性。这样,使用 web3 钱包的感觉就会与 web2 银行应用程式相似,甚至更好。下面是一些使用案例:
1. 交易限额:如果金额超过预设限额,与您的智慧帐户相连的钱包可以拒绝交易(或要求额外授权)。听起来耳熟吗?应该是的 — 银行已经这样做了,以保护您的帐户和信用卡免受欺诈、未经授权的使用以及其他与安全相关的原因的影响。
2. 多方审批:您可以将帐户的部分控制权委托给受信任的人,也就是 「监护人」。监护人可以是朋友、家人、服务提供商,甚至是您自己的独立装置(如硬体钱包)。这样,您就可以通过要求监护人批准从您的智慧帐户提取资金的交易,为您的钱包启用 Web2 风格的多因素身份验证(MFA)。
3. 金钥轮换和撤销:有了智慧帐户,如果前一个金钥丢失或被盗,你可以生成一个新的签名金钥。为了提高安全性,你可以让监护人在恢复过程中冻结你的帐户,并要求批准金钥轮换 / 撤销流程(即社交恢复)。这类似於在信用卡丢失或被盗的情况下冻结信用卡,而不会失去对银行帐户的访问许可权。
4. 可信会话:您是否不喜欢在浏览器中与 dapp 互动时必须批准每项操作?好极了!您可以使用智慧帐户建立特殊的 「会话金钥」,让应用程式在特定时间内自动签署交易。这意味着您可以与 dapp 进行互动 — 比如玩区块链游戏 — 而不会被钱包弹出式视窗缠住。
从高层次上讲,会话金钥基於智慧合约,它控制着你的帐户和 dapp 之间的互动。您始终拥有会话金钥的控制权,并可以管理 dapp 的签约许可权,例如它可以从您的余额中扣除多少金额或呼叫哪些功能。
5. 自动付款:与会话金钥的想法类似,您可以批准服务提供商从您的智慧帐户中 “提取” 资金(受预定义规则的限制)。这样就可以使用 web3 钱包设定定期付款和订阅。你能想像用以太坊帐户支付 Netflix 订阅费或水电费吗?
费用抽象
目前,每笔以太坊交易都必须有一个 「交易费」,表示传送 EOA 愿意为交易的执行支付多少费用。交易费以以太坊为单位,以太坊是以太坊的原生代币。这就造成了一些问题,尤其是对於新使用者来说,他们现在需要在传送交易前获取以太币。
帐户抽象并不能消除支付交易费的需要,但它抽象出了使用者选择支付交易费的方式和时间的细节(费用抽象)。例如,帐户抽象可以实现 “赞助交易”,即由另一个帐户支付使用者交易的 gas 费用。赞助交易的一些好处
1. 不需持有 ETH 支付网路交易费:您是否曾希望用钱包中的 ERC-20 代币支付交易费用?有了赞助交易,您就可以让一个 ETH 中继器为您的交易支付费用,然後再用 DAI 或 USDC 等其他代币支付。
2. 免手续费交易:Dapp 开发者可以赞助交易,最大限度地减少以太坊新使用者的入门摩擦。您基本上可以使用 web3 应用程式,而无需了解 “gas”,并享受 web2 应用程式提供的一键式体验。
3. 社交登入:dapp 可能会代表你部署一个合约钱包,解决了在传送链上交易前设定钱包的痛点。最棒的是什麽?钱包可以使用身份验证基础架构(如 Web3Auth 和 WebAuthn),使使用者能够使用现有凭据(如电子邮件地址或 Facebook/Twitter 帐户)建立 Web3 帐户。
Nonce 抽象
以太坊上的智慧帐户还有一个特殊功能:批量交易。通过批处理交易,您可以将多个操作合并为一个链上交易,降低与 dapps 互动的成本和复杂性。以下是交易批处理的重要原因:
您的 EOA 储存了一个称为 “nonce” 的值,显示您传送了多少笔交易(可以把它想像成交易计数器)。新的交易必须严格地将 nonce 值增加 1 才有效 — 这条规则可以防止其他人 “重放” 相同的交易,从而盗取您的资金(这种情况可能会发生)。
但这也有个问题。Nonces 迫使你以先进先出(FIFO)的方式处理交易。假设有两个交易(A 和 B),nonce 分别为 0 和 1。在这种情况下,您需要传送事务 A,并在传送事务 B 之前等待(其执行的)确认。
如果在 A 交易未完成时传送 B 交易,前者就会被拒绝,因为其 nonce 超过了规定范围(EOA 当前的 nonce + 1)。事实上,这也是使用钱包时出现 “卡死交易” 的一个重要原因。
Nonce 抽象允许你建立自定义的重放保护机制(而不是以太坊协议对交易执行严格的排序)。例如,你可以有一个允许并行处理多个交易的 nonce 方案。这将解决交易堵塞 / 停滞的问题,并显着改善与 dapp 的互动。
尽管如此,nonce 抽象在实践中很难实现,而且有可能破坏对安全性和使用者体验至关重要的某些不变性,如事务 hash 唯一性)。这就是交易批处理的用武之地:
由於智慧帐户可以同时处理多笔交易,因此对复杂的 nonce 抽象方案的需求在很大程度上消失了。回到前面的例子,我们可以想像交易 A 和交易 B 只是一个假设操作的一部分,比如在 Uniswap 上交换资产:
交易 A:批准 Uniswap 合约以访问您的代币
交易 B:完成代币交换
通过交易批处理,您可以将批准和交换工作流程合并为一个交易。其结果是:在使用 dapp 时,气体费用更低,等待时间更短。
关於帐户抽象的未来展望
以太坊创办人 Vitalik Buterin 首次提出这一概念已有多年,但对於实现帐户抽象的最佳方式仍存在一些分歧。例如,实施 EIP-3074 和 EIP-5003 可以让现有的 EOA 升级到智慧帐户。但这些建议需要以太坊进行硬分叉,而社群正专注於更紧迫的升级,因此目前看来是不可行的。
相比之下,EIP-4337 得到了广泛的支援,因为它在不需要对以太坊协议进行大规模修改的情况下实现了帐户抽象。但对於目前使用基於 EOA 的钱包的使用者来说,这意味着必须将资产从 EOA 转移到新部署的合约帐户 — 考虑到目前以太坊上高昂的网路交易费用,这个过程可能既复杂又昂贵。
我们相信,帐户抽象是为 Web3 新使用者提供与 Web2 无差别体验的关键。我们也知道,EOA 无法保证加密货币的大规模采用。因此,如何在不影响使用者熟悉的钱包操作的前提下提供帐户抽象的好处是将来创新的一大方向。
📍相关报导📍
Metamask为你科普:以太坊「帐户抽象」的过去、现在与未来
V神大推的「以太坊帐户抽象」是什麽? ERC-4337 实用案例说明
OKX 正式推出「帐户抽象(AA)」智能合约钱包!即将支援社交恢复功能