账户抽象:Web3 采用的推动者和游戏规则的改变者
账户抽象:Web3 采用的推动者和游戏规则的改变者
账户抽象:Web3 采用的推动者和游戏规则的改变者

撰写:Gal Ron,stanford blockchain review

编译:深潮 TechFlow

*注:此文来自于斯坦福区块链评论,深潮 TechFlow 为斯坦福区块链评论合作伙伴,独家获授权编译转载。

“无私钥,无代币!”这是区块链的口号。但是,“私钥”究竟是什么?

现实世界中的钥匙根据其所起的作用而发生变化。自行车锁的钥匙与 Brinks 货车高安全性钥匙不属于同一类型。

然而,在以太坊上,所有的钥匙具有相同的结构。以太坊上的任何操作——不论其价值或目的如何——都需要使用助记词对交易进行签名。并且,助记词内容应只由账户所有者掌握。这是一个重大的 UX 障碍和阻碍加密货币主流采用的障碍。

账户抽象帮助区块链应用程序摆脱这种范式。账户抽象的概念最初由 Vitalik 在 2015 年的一篇文章中介绍,现在通过 Layer-2 区块链(例如 Starknet 和 zkSync)以及通过 EIP-4337 在以太坊本身上得以实现。账户抽象将 Web3 的强大功能与 Web2 的简单性和舒适性结合起来,是迈向扩展自我保管的重要里程碑。

以太坊上的 EOA 及其局限性

首先,让我们回顾一下以太坊上的加密账户是如何工作的。以太坊有两个基本实体:智能合约和 EOAs(外部拥有的账户)。

EOA 是一个实体,具有以下特点:

(1)通过私钥派生的账户地址,

(2)用于支付费用或向他人发送以太币的 ETH 余额,

(3)称为“nonce”的标识符,用于记录从该 EOA 发送的交易序列号,以进行重放保护。

在以太坊上,只有 EOAs 可以发送交易。为了使交易有效,必须使用从账户地址派生的私钥对其进行签名。这意味着“拥有”一个 EOA 实际上意味着拥有用于派生账户地址的私钥。

尽管以太坊上的智能合约是完全可编程的,但用于验证交易有效性的逻辑并非可编程,而是硬编码在 EVM(以太坊虚拟机)中。有效的交易必须严格遵循一组规则,例如:

  • 签名方案。交易必须使用 ECDSA 签名方案,在椭圆曲线 secp256k1 上进行签名。

  • 交易费。交易费的来源必须是发起交易的同一个 EOA。此外,交易费必须以 ETH 的形式计价。

  • 重放保护。交易必须按其“nonce”标识符的序列号进行顺序发送。

  • 私钥是不可变的。由于账户地址是从私钥派生的,因此不可能更改用于签名交易的“秘密”。

这些规则嵌入到以太坊协议中,无法更改。它们源于设计决策,旨在优化协议安全性和以太坊节点的运行效率。然而,它们限制了 dApp 开发人员的许多用例。例如,在使用 EOA 时,不可能让另一个账户支付您的交易费用。这对于可能希望资助每个玩家的前几步“动作”的去中心化游戏来说是一个有价值的功能。

在其他情况下,区块链用户可能希望授权其他用户代表他们发送交易,或许对交易价值或频率设置一些限制。这也是使用 EOAs 不可能实现的。

此外,在 Web2 中,密码轮换是一种基本原语,但是不可能更改 EOA 的密码,或者指望其他实体帮助您恢复密码而不会给他们完全访问您的账户。

帐户抽象

账户抽象是一种将上述硬编码逻辑与 EOA 解耦的思路,将所有账户转变为完全可编程的智能合约。这将为账户所有者、钱包和 dApp 提供灵活性,以确定交易应如何签名和接受,以及交易费用的来源。换句话说,账户抽象是实现智能合约钱包的技术基础设施

账户抽象的概念可以分为三类,对应于当前 EOAs 存在的三个主要限制:

(1) 签名者抽象。给予智能合约灵活性,以确定有效签名的交易是什么,而不是强制使用 ECDSA 方案和固定私钥作为唯一可接受的签名。这意味着智能合约可以自行决定接受其他签名方案,例如更适合共享秘密的方案。合约还可以要求不同入口函数使用不同的签名方案,甚至根本不需要任何签名。

(2) 费用抽象。在以太坊上,账户所有者需要做的第一件事就是用一些 ETH 填充账户,以便支付交易费用并开始使用账户。想象一下一个区块链架构,dApp 可以资助其用户的交易费用,或者让用户以他们希望的任何代币货币支付费用(并在飞行中进行 ETH 交换);这将解决以太坊今天面临的重大 UX 挑战。

(3) Nonce 抽象。这是账户抽象中鲜有讨论但更为微妙的领域,却同样具有趣味性。EOAs 上的“nonce”标识符提供了防止交易重放的保护,但它也强制实施了一种本质上是顺序的交易模型。如果一个智能合约想要接受来自同一 EOA 的两个并行交易,而不考虑它们的顺序怎么办?当“nonce”机制可以被智能合约控制而不是硬编码到通用交易处理逻辑中时,就变得可能了。

扩展自托管

在比特币白皮书发表 15 年后,今天的加密钱包仍然需要高维护,而不是我们期望的流畅产品。去年 CEX 崩溃教给了我们自我保管才是正确的方式,但管理自己的私钥仍然是一个重大负担和安全风险。即使是核心的加密开发人员偶尔也会丢失他们的私钥或被窃取(推文)。通过账户抽象操作的智能合约钱包可能成为消除这些风险并推动自我保管钱包的大规模采用的催化剂。账户抽象通过两种机制使账户管理变得更轻松:更智能的交易签名和更好的恢复流程

首先,签名者抽象功能允许钱包将 Web2 的功能嵌入其产品中。例如,Braavos 钱包利用 iOS 和 Android 设备的安全隔离区域,允许用户使用指纹或面部 ID 签署交易,而根本不需要输入任何助记词。类似的签名者抽象功能允许开发人员逐个案例地控制批准单个交易所需的安全级别。这为 Web3 钱包的真正多因素身份验证铺平了道路。与您的在线银行账户类似,每天的交易可以从单个设备执行,但是向新收件人执行交易或执行特别有价值的交易可能会提示用户在多个设备上签名。

账户抽象还改善了账户恢复的 UX。签名者抽象允许为一个账户拥有多个签名者,每个签名者都有个人权力和特权。例如,账户的主要所有者可以与朋友分享一些较低权限的密钥,以一种朋友可以帮助恢复主密钥但不能花费账户中任何资产的方式。这通常称为社交恢复,并已在基于智能合约的钱包中实现,例如 ArgentX 钱包。

加密支付的机会

加密货币支付被广泛讨论为区块链的主要用例之一。然而,这个承诺尚未实现。历史上,这是由于昂贵的交易费用,但随着卷积和可扩展性解决方案的出现,这些费用现在正在下降。然而,在传统金融领域中成熟的支付解决方案之所以成功,不仅仅是因为低交易成本。它们需要其他功能,例如信用发行、欺诈检测、争议处理和定期付款机制。

账户抽象允许将这些传统支付概念转化为加密货币领域。例如,Visa 最近提出了使用账户抽象来设计定期付款系统的概念证明。想象一个可编程的自我保管钱包,可以授权 Visa 定期自动划拨资金(最高限额),而无需在每笔交易上要求用户签名。

当游戏 UX 遇上 Web3

批量交易和费用抽象化使 Web3 游戏成为另一个容易受到账户抽象干扰的领域。

将游戏活动引入链上的主要障碍是每个链上活动都需要签署交易,这可能会超过交易成本。提示用户在钱包中点击“签名”按钮会打乱游戏的流程,并使 Web3 游戏体验相当繁琐。

账户抽象允许游戏开发人员创建“会话密钥”,该密钥预授权签署特定时间段的游戏交易。这些密钥可以存储在浏览器或智能手机的本地存储中,并根据需要撤销。这将使 Web3 游戏游戏体验更接近于 Web2 游戏。

此外,费用抽象允许游戏开发人员为他们的用户资助交易费用。这对于吸引新玩家尤其有效,因为他们可能不熟悉加密货币,或者想先尝试游戏,了解游戏体验之后再支付交易费用。

前方道路

账户抽象一直是以太坊路线图上的一部分。以太坊改进提案,如 EIP-86(2017)、EIP-2983(2020)和 EIP-3074(2020),为 EIP-4337(2021)铺平了道路,该提案引入了一个新的去中心化基础设施,用于操作智能合约钱包。

除了 EIPs,像 Gnosis 这样的智能钱包 dApp 在以太坊上出现了。然而,所有这些都是以太坊原生账户模型的二等公民,即 EOA。

解决以太坊的限制并将智能合约钱包带给用户的机会可能通过 Layer 2 扩展网络实现。像 Starknet 和 zkSync 这样的 Layer2 在协议层面上嵌入了账户抽象,通过本地工具和基础设施轻松让开发人员访问。

深潮 TechFlow 是由社区驱动的深度内容平台,致力于提供有价值的信息,有态度的思考。

社区:

订阅频道:https://t.me/TechFlowDaily

电报:https://t.me/TechFlowPost

推特:@TechFlowPost

进微信群添加助手微信:blocktheworld

Subscribe to 深潮TechFlow
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.