帐户抽象将使钱包进化

账户抽象(Account Abstract)是通过合约或多重签名等方式管理的账户,而不是由通过单一私钥控制。也称智能合约钱包,本文介绍了智能合约钱包的应用场景。也指出了潜在的问题。

帐户抽象将使钱包进化

img

我们必须继续进化

当有人第一次决定投身于去中心化金融、NFT或任何其他类型的链上活动时,大家就会意识到他们首先需要获得一个钱包。不幸的是,使用链上钱包的体验与大多数人所习惯的用户体验有很大的不同。这是一个重要的摩擦,阻止了数百万潜在的加密货币用户。

img

虽然钱包确实让用户完全保管他们的资产,但它们缺乏其他在线账户的安全保障措施。用户必须安全地存储和保护他们的私钥/助记词,否则有可能丢失他们的数字资产。这与银行账户甚至中心化加密货币交易所账户等非常不同。例如,Coinbase和基本上所有其他中心化账户都让用户启用2FA,以确保其资产的安全。这种类型的功能目前在任何链上解决方案中都是不可能的。由于缺乏基本的安全功能,普通用户甚至不敢接触链上应用,导致他们坚持使用中心化和托管式钱包。正如我们最近观察到的,这不一定是一个更安全的选择。FTX、BlockFi和Celsius等公司的失败以及由此造成的用户资金损失,加强了对资产进行自我保管的理由。然而,普通用户需要一个简单的方法来这样做。目前这种模式如何改变?通过将我们的钱包演变为账户抽象化钱包,我们可以解决今天困扰我们的许多用户体验问题。

目前的系统

有两种方法可以在链上实现自我保管的钱包:你要么需要一个外部拥有账户(EOA),要么需要一个合约账户(CA)。两者都能够发送和接收数字资产,以及与部署的智能合约进行交互。然而,它们有一些关键的区别,在下表中进行了总结:

img

现在,合约账户通常只用于多签钱包形式的自我保管。多重签名提供了更高的安全性,但通常不是普通用户在链上保存资产的实用方法,因为它们的设置远比普通的EOA钱包复杂。如果没有账户抽象,合约账户就不能轻易作为存储数字资产的主要方法。

有3个重要的条件必须满足,才能被归类为 "账户"。不管是外部拥有账户还是合约账户,都必须满足这些条件。一个账户必须有:

  1. 余额 - 这代表钱包内的数字资产的数量
  2. Nonce - 这确保从钱包发出的每笔交易都是不同的
  3. 地址 - 这是网络上每个账户的唯一标识。

虽然这两种类型的账户表面上看起来相似,但最大的区别是EOA必须签署每一笔链上交易。因为这个原因,合约钱包无法简单的作为EOA 的替代。用户通过一对密钥,即公钥和私钥拥有一个EOA钱包。这对钥匙被称为签名者。一个EOA钱包的地址来自公钥,而账户的交易必须用私钥签名。合约钱包没有这样的密钥来启动交易。这指出了外部拥有账户的一个致命缺陷。EOA钱包既是一个账户又是一个签名者。这让用户头痛,也导致了潜在的严重问题。

EOA模式的问题

说目前的EOA设计(这是当今钱包的标准)有根本性的缺陷是有偏见的,但它肯定不是全世界数十亿人都能使用的状态。其主要原因是,签名表示对账户有完全的控制权。如果你失去了你的签名,你就失去了你的账户。如果有人掌握了你的签名,他们就拥有你的账户。虽然在完美的条件下,这可能有助于持有用户的资产,但我们并不生活在一个完美的世界。EOA钱包的安全性完全依赖于用户对单一私钥的管理。没有安全网;不可能有错误。然而,人们很容易犯错,如果钱包计划扩展到大众,就不能这么复杂。

一个简单的方法是跳到Twitter上搜索 "BAYC被黑",就可以看到目前的自我托管形式是有缺陷的。

img

由于目前自我托管是多么困难,Bored Ape 持有者不断受到攻击。

他们经常被黑客攻击。100多个Bored Ape游艇俱乐部的NFT已经被盗,而且它们继续以相当频繁的速度被盗。这是以太坊用户体验的一个明显问题。丢失价值六位数的数字资产不应该如此容易发生。我们不应该期望下一个金融系统依赖于写在一张纸上的12个单词(助记词)。

账户抽象是解决方案?

帐户抽象的目标是解耦签名和帐户之间的关系。帐户抽象钱包是一个智能合约钱包,根据预先指定和可定制的规则,定义什么是有效交易。其目的是分离签名者对钱包资产的情况的控制。与其同时拥有EOA账户和合约账户,账户抽象化将它们合二为一;智能合约钱包将能够作为独立的钱包使用。这在今天是不可能的,因为所有的交易都必须来自EOA地址。然而,每一个新的EIP使我们越来越接近账户抽象的现实。

帐户抽象的历史

为了正确实现账户抽象化,减少对EOA账户的需求,人们长期以来一直认为需要在链上进行变革。自2016年以来,Vitalik和其他以太坊核心开发人员一直在起草关于这种变化可能出现的解决方案。这些总结如下:

img

  • EIP-86: 由Vitalik Buterin在2016年提出,在以太坊首次发布后不到一年,这个EIP引入了智能合约作为 "转发合约(forwarding contracts)"的概念,只接受来自 "入口点 "地址的交易,如果交易遵循特定格式,任何人都可以从这个地址发送交易。这需要对以太坊协议进行较大的修改,因此被废止了。

  • EIP-1014: 由Vitalik Buterin在2018年提出,这个EIP采用了EIP-86的核心思想,并导致了CREATE2操作码的产生。这使我们能够预测合约将被部署的地址,而不需要实际部署它。这很重要,因为为了让智能合约钱包发挥作用,我们必须确保智能合约地址在所有EVM链上是相同的,即使它没有同时部署到所有的EVM链上。

  • EIP-2938: 由Vitalik Buterin、Ansgar Dietrichs和Matt Garnett于2020年9月提出,这个EIP试图进行新的 "账户抽象 "交易,需要创建新的操作代码。这被证明是一个太大的协议变化,并不确定它将如何发挥。EIP-2938被废止了。

  • EIP-3074: 由Ansgar Dietrichs和Matt Garnett于2020年10月创建,该EIP引入了两个新的操作码。AUTH和AUTHCALL。当一起使用时,它们允许智能合约代表一个EOA发送交易。正如我们在过去的其他EIP中看到的那样,重大的网络变化不太可能被通过。EIP-3074也不例外,面临着对其安全风险的犹豫,所以它没有被实施。

值得注意的是,EIP的时间表显示,自以太坊诞生以来,账户抽象一直在以太坊核心开发者的头脑中。随着合并的完成,更多的开发者资源终于可以进入账户抽象。下一个EIP终于让我们接近了下一代钱包。

  • EIP-4337--以太坊的账户抽象,不需要改变共识层协议:在2021年9月,Vitailk、OpenGSN和Nethermind提出了EIP-4337--通过入口点合约规范实现账户抽象。EIP试图在不需要改变核心协议的情况下完成账户抽象化。这是一个巨大的成就,因为到目前为止,协议的改变是阻止大多数进展的原因。EIP-4337仍处于草案阶段,尚未最终确定,但由于EIP-4337不会改变共识层,已经有了它的实现,包括OpenZeppelin和Stackup。这个EIP功能的机制可以分解为三个步骤。
  1. 用户操作(UserOperation)(本质上是正常的交易,有额外的数据字段实现账户抽象功能),通过一个自定义的mempool发送。
  2. 之后,UserOperations通过捆绑者被打包成一个单一的交易。捆绑者将根据费用优先级逻辑选择哪些UserOperation对象,类似于矿工在现有交易mempool中的操作方式。捆绑者(使用像Flashbots这样的服务)调用一个EntryPoint合约进行验证。
  3. 如果没有错误,交易将被包含在网络上的下一个区块中。

img

EntryPoint 合约是一个关键的基础设施,通过捆绑者(Bundler)调用。这个智能合约被调用,首先验证UserOperations是否遵循账户的预先指定的规则,然后执行它们。重要的是要记住EIP-4337没有协议级别的变化。这意味着捆绑者是一个EOA地址,向链上提交所有这些交易。EntryPoint合约可以通过添加一个支付者(Paymaster合约)来进一步扩展。Paymaster 提供了一些好处。

  1. 它允许应用程序开发人员代表他们的用户支付费用。
  2. 它允许用户以ERC20代币支付费用,由合约作为中介收取ERC20,并以ETH支付Gas费用

<img src="https://img.learnblockchain.cn/2023/02/28/59450.jpeg" alt="img" style="zoom: 60%;" />

这对那些不希望自己的用户支付网络费用的应用开发者来说是一个巨大的奖励。用户将能够以不同的代币直接支付给 "paymaster" -- 为了系统兼容,付款人会将其转换为ETH。这只是账户抽象化钱包相对于EOA钱包的独特使用场景之一,当然还有更多要谈的内容。

帐户抽象的使用案例

将钱包转变为可编程的智能合约,为新功能打开了大门。拥有一个账户抽象钱包的好处和新的使用场景是如此之大,对于大多数用户来说,实际上是值得迁移到一个账户抽象钱包。这就好比从一个旧的诺基亚手机升级到最新的智能手机。

img

智能合约钱包与EOA钱包相比,在功能上有了很大的提升, 来自:Argent

社交恢复

在确保用户数字资产安全方面,社交恢复是最重要的好处之一,其目的是在用户丢失签名密钥时保护他们。想象一下,如果一个用户的笔记本电脑坏了,他们把他们的私钥或助记词的物理拷贝放错了地方。在此案例中,使用EOA钱包,你的所有资产将永远失去。社交恢复不是使用助记词来恢复钱包,而是遵循一种不同的方法。这是Vitalik最喜欢的保护钱包的方法,他在下面定义了它是如何工作的。

  1. 有一个单一的 "签署密钥",可用于授权交易
  2. 有一组 "监护人",其中大多数人可以合作改变账户的签名密钥。

如果用户丢失或忘记了他们的签名钥匙,可以激活社会还原功能。通常情况下,如果我丢失了EOA 的签名私钥,并丢失了我的助记词,我将无法获得对账户的访问。有了社交恢复功能,用户可以简单地联系他们的监护人,要求他们签署一个特定的交易,将钱包合约中注册的签署密钥更改为新的。虽然有一些机制上的差异,但这在概念上类似于当你忘记谷歌账户密码并需要重新获得账户访问权时的情况。

对于选择谁作为监护人,有许多可能的选择。最常见的三种选择是:

  1. 钱包持有人自己拥有的其他设备
  2. 朋友和家人
  3. 机构,如果他们得到你的电话号码或电子邮件的确认,或者也许在高价值的情况下通过视频电话核实你本人,他们会签署一份恢复信息。

添加新的监护人是一个相当简单的过程:

img

Unipass钱包添加监护人的用户界面截图

UniPass Wallet是一个即将推出的智能合约钱包,其主要功能之一是社交恢复。UniPass钱包包括一个界面,通过这个界面可以无缝地添加和删除监护人。

基于角色的访问控制

对于许多传统的 "web2"应用程序,用户被要求由平台的开发者启用双因素认证(2FA)。这可以自动防止大量的黑客攻击发生。

值得注意的是,许多其他文章会声称,通过短信或电子邮件地址的多因素或2因素认证是通过用账户抽象钱包解锁的新功能。实现这种形式的2FA通常利用多方计算(MPC)和一个链外服务器。目前还没有一个纯粹的链上实现。但由于它是由MPC技术驱动的,它也可以通过仅仅使用EOA钱包来实现。因此,说它是账户抽象钱包所独有的,这是不实在的。

然而,智能合约钱包可以通过要求你的热钱包作为二次确认的形式,在链上实现类似类型的功能。这自动防止了大量黑客的发生,因为即使你被钓鱼,你可能仍然需要确认才能移动你的资产。账户抽象钱包让你根据自己的喜好来定义特定的安全参数。这方面的例子可以包括:

  • 设置每日交易限额,规定每天可以发送的货币门槛,除非你通过硬件钱包确认。这将防止你的钱包一下子被耗尽。
  • 连接到一个著名的 "诈骗" 地址数据库,如果数据库中存储了你正在进行交互的地址,它会立即提示你“需要”通过你的硬件钱包确认交易。
  • 检查Opensea藏品,让你知道你正在购买一个未经验证的NFT藏品,并提示你通过你的硬件钱包进行确认,防止对购买假的/恶意的NFT感到困惑。

最重要的是,所有这些功能在进行链上交互时提供了一个多层次的安全网。大多数用户不知道他们正在签署或授权什么。现在,我们在一个系统上运作,一个错误的点击可以瞬间耗尽你的钱包所有余额,这需要改变。

会话密钥

许多人认为区块链游戏将是web3的下一个大叙事。要做到这一点,需要有比目前更好的用户体验。只要用户想与他们正在玩的游戏中的东西进行交互,就必须授权签署多种功能,这是没有意义的。这不是传统游戏的工作方式,并且会因为界面的不熟悉和笨拙而阻止人们。会话密钥允许用户根据一组参数预先授权一个应用程序的交易:一个给定的持续时间,一个最大的Gas量,一个特定代币的最大交易量,或一个特定合约的特定功能。用户将能够用一些基本条款预先授权他们的会话,点击开始,然后玩游戏,而不会不断被他们的钱包轰炸,询问 "确认此交易"。

批量交易

现在,如果我想使用一个去中心化的应用程序,我需要为每个链上的互动做一个新的交易。这很烦人,而且也会很贵,因为每一次被授权的互动都要花钱。通过账户抽象账户,钱包可以将多个交易捆绑在一起,作为一个交易执行。

img

这从根本上简化了用户体验。复杂的交易和复投交易可以简化到只需要点击一个按钮。

其他使用场景

一个账户抽象钱包可以支持的功能清单是无限的。因为账户抽象钱包是智能合约,钱包开发者可以不断地更新它们的新功能和效用。我们甚至可以期待钱包的第三方插件。然而,这让我想到了我的下一个观点:今天账户抽象钱包的缺陷。

帐户抽象的潜在问题

账户抽象钱包目前没有在协议层面上实现,目前只作为智能合约存在,Gas以创造性的方式被转发。因为这些钱包是智能合约,所以出现了一些问题。

首先,部署智能合约钱包是有成本的,因为它使用区块链存储。目前可以通过使用更便宜的链或由中继者支付这一成本来规避这一问题。然而,这并不能真正规避提交交易的较高Gas成本。通过智能合约钱包发送单笔交易的Gas成本比通过EOA钱包发送更贵。虽然这一点有一天可以通过适当的交易批处理得到改善,但我们还没有到那个地步。

第二个更重要的问题是,每个钱包在被用作EOA的替代品之前都需要进行审计。如果一个广泛使用的智能合约钱包有漏洞,它可能是有史以来最大的黑客之一。这不仅仅是假设,因为智能合约钱包以前就被黑过。2017年,Parity智能合约钱包出现了15万ETH的黑客攻击(今天的价值为1.8亿美元)。三个月后,同一个智能合约又被黑了50万ETH(今天的价值为6亿美元)。幸运的是,自2017年以来,我们已经提高了安全标准,目前账户抽象钱包试图完成的大部分内容并不是不合理的复杂。社交恢复和基于角色的访问控制等安全功能也是默认内置的,这为智能合约本身的任何问题提供了一定程度的保护。然而,即使有这些功能,ERC-4337目前的实现仍然存在安全问题。最大的问题是EntryPoint合约拥有极高的权限。如果这个智能合约有安全问题,黑客就可以通过它来利用任何ERC-4337合约钱包。

除了安全问题外,适当支持ERC-4337的基础设施也不完全存在。目前ERC-4337的实现严重依赖Flashbots。Flashbots对账户抽象至关重要,因为它将一组UserOperation对象打包成一个 "捆绑交易",然后被包含在以太坊区块中。Flashbots是以太坊本身所特有的,这使得ERC-4337钱包如何与其他EVM链兼容成为了问题。虽然合约钱包可以部署到其他链上,但如果没有与Flashbots类似的机制来捆绑交易,钱包将无法发挥作用。

最后,智能合约钱包只能与实施了EIP-1271的去中心化应用程序交互,该程序被调用来验证合约钱包的签名。理论上,如果Opensea或任何其他去中心化的应用程序尚未实施EIP-1271,智能合约钱包将无法与该应用程序交互,并将变得毫无用处。

像Argent这样成熟的智能合约钱包并不是无缘无故地偏离ERC-4337的。第二层网络正在从头实施整个协议的变化,以规避ERC-4337潜在的问题。

第2层网络

第二层网络正在从头开始建设他们的网络,可以更容易地实施变革,因为他们在技术债务方面的起点比较干净。Zksync和Starkware都是第二层网络,在协议层面上有天然的内置账户抽象。与以太坊不同,Zksync和Starkware没有区分智能合约和EOAs,这两种类型的钱包被合并为一个。第2层实现了真正的账户抽象,超过了迄今为止任何EIP成功实现的账户抽象。这些账户可以像EOA一样发起交易,但也可以像智能合约一样,在其中实现任意的逻辑。这些设计与EIP-4337所布置的设计非常相似。随着费用的降低以及创建和维护钱包的简化,第2层可能是承载下一个10亿web3用户的完美场所。然而,与此同时,如果我们想在以太坊上使用EIP-4337钱包怎么办?什么是最好的钱包呢?

UniPass 一个账户抽象钱包

Argent钱包创建了一个了不起的账户抽象钱包, 不过它专注于第二层,如Starknet,但Argent 重要的是我们看到了如以太坊第一层上的实现。

UniPass 是一个账户抽象钱包,建立了一系列的功能,使其在竞争中脱颖而出,包括EOA钱包和其他账户抽象钱包。当UniPass用户发起交易时,需要第三方作为中继者来完成交易。在这个过程中,中继器可以让用户花费任意支持的代币来支付Gas费,甚至可以为用户支付Gas费,从而实现无Gas的用户体验。UniPass将提供一个默认的UniPass Relayer节点,你可以开箱即用。一开始,UniPass Relayer将接受以其原生代币和主流稳定币形式的Gas支付。此外,应用程序可以建立自己的客户relayer,以满足其用户群的需求。

其他智能合约钱包解决方案通常依靠EOA钱包进行私钥管理。UniPass钱包使用基于MPC的阈值签名方案(TSS),这使得依靠EOA钱包的安全和可用性,同时也完全避免了用户在整个使用过程中最大的单点故障--私钥。这创造了一个无缝的用户体验,对用户来说既愉快又安全。

img

UniPass 创建一个钱包就像用你的谷歌账户登录一样简单

UniPass也有一个独特的基于电子邮件的链上验证技术,用于社交恢复。电子邮件协议(POP3、SMTP和IMAP),已经存在了50多年,是现代互联网的一个基础部分。为了保护电子邮件不被恶意修改,2004年引入了域名密钥识别的邮件(DKIM)。DKIM是一种标准化的电子邮件身份验证技术。发件人能够在发出的电子邮件中添加数字签名。当电子邮件服务器收到签名的电子邮件时,它可以验证该电子邮件是否来自实际发件人,以及内容是否被修改。

经过无尽的研究,UniPass Wallet现在可以使用智能合约在链上验证DKIM的数字签名。这使得用户可以管理他们的非托管合约账户,并只使用电子邮件进行社交恢复。典型的智能合约钱包的社交恢复解决方案,如Argent的,需要监护人是Argent的用户或已经拥有一个以太坊钱包。这意味着,如果你信任的家人和朋友不是web3的用户,他们不能作为你账户的监护人。通过UniPass的架构,用户可以设置多个电子邮件地址作为账户的监护人,只要向链上的智能合约提交电子邮件,就可以帮助用户设置账户恢复。这大大降低了监护人的门槛,让你所有有电子邮件的家人和朋友都能成为你的账户监护人。

然而,一个问题出现了:UniPass如何保持所有这些信息的隐私?如果与你的账户绑定的电子邮件地址被链上的所有人看到,那就不好了。因此,UniPass钱包使用零知识技术,在链上完全匿名化用户的私人信息,实现去中心化的验证,同时保护用户的隐私。

结语

随着主要的中心化托管钱包解决方案的崩溃,许多用户正涌向自我托管钱包解决方案。EOA钱包必须演变成账户抽象钱包,以扩展到下一个10亿用户。它们使上机过程更容易操作,加强安全,并大大改善可用性。虽然我们仍然需要依靠解决方案以创造性的方式在第1层转发Gas,但第2层,如Starknet和Zksync将以最纯粹的形式实现账户抽象。这种实质性的用户体验改进可以很容易地帮助促进这些网络的增长。以太坊社区必须密切关注此事的发展,以安全地实现改变以太坊基础协议的EIPs。无论如何,仍有一些钱包,如UniPass,率先使用EIP-4337创建高级钱包。我期待着有一天,这些解决方案被广泛使用,我们会想,我们以前是如何以如此古老的方式存储我们的数字资产的。

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
翻译小组
翻译小组
0x9e64...7c84
大家看到好的文章可以在 GitHub 提 Issue: https://github.com/lbc-team/Pioneer/issues 欢迎关注我的 Twitter: https://twitter.com/UpchainDAO