什么是账户抽象?EIP-4337解释

本文探讨了当前Web3领域用户体验的问题,并深入研究了账户抽象如何为这些问题提供潜在的解决方案。账户抽象允许用户使用智能合约钱包而不是EOA,从而无需使用EOA执行交易,并具有更大的灵活性和更多用例。

在这篇文章中,我们将探讨当前 web3 格局中的用户体验问题,并深入研究一个名为 账户抽象 的提案,该提案为我们今天面临的几个最大问题提供了潜在的解决方案。

实际情况是,糟糕的用户体验是你在去中心化方式中构建应用程序的一个重大缺陷。虽然有很多解决方案正在积极研究以解决这些问题,但账户抽象可以说是最有希望的。

这是一个令人兴奋的范例,它将允许任何人与 dapps 互动;不仅仅是 web3 爱好者,并且随着最新的以太坊改进提案 EIP-4337 的出现,它正在成为现实。

让我们深入了解一下!

以太坊账户 & 交易回顾

让我们先完成这些枯燥的内容。要理解账户抽象,我们首先需要理解在谈论以太坊时,账户实际上_是_什么。

什么是以太坊账户?

以太坊有两种不同类型的"账户":

  1. 合约账户

  2. 外部拥有账户(EOA)

你可以将合约账户视为存在于区块链上的代码(智能合约),它定义了账户的行为方式,并将 EOA 视为尽管一个人可以拥有许多 EOA)

你可能已经熟悉 EOA。你的 MetaMask 钱包就是一个 EOA。EOA 由一对加密密钥组成:控制账户活动的公钥和私钥。

但是,合约账户没有私钥。它们是由其中代码逻辑控制的智能合约;它们不由用户控制。

这里的关键在于,_代码_定义了合约账户做什么,而_用户_控制着 EOA 做什么。这一点很重要,因为智能合约有能力执行你可以在代码中编写的任何操作,而 EOA 基本上只能签署交易。

合约账户 vs eoas

什么是以太坊交易?

好的,这就是 账户 。那么 交易 呢?

每次你想将信息写入区块链时,例如转移代币或铸造 NFT,都需要发生一次 交易交易需要由 EOA 签名,并且 EOA 也必须支付相关的 gas 费用。

交易由 EOA 发起,可以发送

  • 另一个 EOA,例如,EOA 将 ETH 转移到另一个 EOA。

  • 一个合约账户,例如,从一个 drop 中铸造 NFT。

今天 Web3 的工作方式:EOA 和糟糕的用户体验

今天在区块链上执行操作通常既缓慢又乏味。每次你想将新信息写入区块链时,你都会从你的 EOA 签署一笔交易来执行此操作。

一旦你熟悉了这个过程,这就会成为标准体验。

然而,对于新用户来说,这简直是一场噩梦

从头开始并首次与 web3 应用程序交互的过程足以让任何人放弃进入这个领域,而这_仅仅_是开始。

以下是一个新用户从一个全新的 EOA 在一个去中心化应用程序上执行他们的第一个操作时所经历的逐步体验:

新用户的 eoa 入门流程

对于任何新用户来说,无论是否精通技术,这种体验都是残酷的。但这并没有停止,初始设置仅仅是用户在使用 EOA 时担忧的开始。

EOA 风险极高

你可能已经认识一些人,他们因为意外分享或无法访问他们的私钥而失去了对其 EOA 的访问权限。一些例子:

你对传统 EOA 所承担的责任水平危险地高。

甚至有一句谚语:“不是你的钥匙,就不是你的加密货币”;指的是如果其他人在_任何_时候拥有你的私钥(例如中心化交易所),他们就有权控制你的资金;这一点在过去已经无数次得到证明。

残酷的现实是,私钥很容易丢失且无法恢复

能力越大责任越大 gif

EOA 的能力有限

正如我们前面提到的,EOA 的能力非常有限。

从你的 EOA 中,你通常执行以下两种典型操作之一:

  1. 提交一笔交易,将代币转账到另一个 EOA

  2. 提交一笔交易,以执行合约账户上的一个函数

拥有私钥的人可以签署消息并启动 EOA 可以处理的_任何_交易。知道 EOA 的私钥使你能够执行 EOA 能够执行的所有操作。这就是全部或全无。

EOA 永远无法实现主流采用

在现实世界中,丢失你的信用卡并不意味着你完全完蛋了。

有一些规则允许你执行诸如设置支付限制、停止交易、检测欺诈、将资金更改为新账户、仅允许在特定条件下转账等操作。

在 web3 中,如果你犯了_一个_错误,你的整个账户就会受到损害且无法恢复。EOA 甚至与中心化的货币存储相比都是... 💩。

我们已经充分地批评了 EOA,让我们最终讨论一下解决方案。

什么是账户抽象?

账户抽象是允许用户使用智能合约钱包而不是 EOA 的提案。 这完全消除了用户使用 EOA 来执行交易的需求。

但是为什么?合约账户有什么是 EOA 不能做的?

智能合约在其功能方面比 EOA 灵活得多。每个智能合约都可以在其代码中定义不同的规则和配置。

以下是一些用例示例:

用例 EOA 合约账户
权限控制 私钥授予对所有内容的完全访问权限。 定义一个分层权限级别列表。例如,需要 5 个签名者中的 3 个批准交易。
批量交易 每个单独的操作都需要单独的签名。 能够将交易批量处理在一起;例如,在同一操作中批准代币转账和转移代币。
账户恢复 丢失或暴露私钥意味着完全失去对钱包的控制。 没有私钥。你可以在代码中编写任何任意逻辑,允许你恢复钱包中的资金。
交易限制 你的钱包签署的任何交易都会发生。你不能限制任何内容。 编写任何逻辑来控制资金的转移方式。例如,在你恢复你的账户时停止向其他地址进行交易的函数。

这些只是合约账户相对于传统 EOA 提供的一些功能。关键是;合约账户是代码

这意味着可以在代码中编写的_任何_内容都可以在合约账户中实现。

一切皆有可能 gif

账户抽象提案的历史

好的,这听起来很棒。为什么我们今天还没有这样做?在回答这个问题之前,让我们快速概述一下追溯到 2016 年的账户抽象提案历史,并探讨为什么 EIP-4337 与众不同。

2016: EIP-86 - 该提案允许用户创建“账户合约”,该合约执行任何所需的签名/nonce 检查,而不是使用当前硬编码到交易处理中的机制。

2020: EIP-2938 - 提案创建一个新的类型为 AA_TX_TYPE 的交易。这种类型的交易被称为 “AA 交易”。

2020: EIP-3074 - 提案允许用户将其 EOA 的控制权委托给智能合约。允许任何 EOA 像智能合约钱包一样行动,而无需部署合约。

这些提案都没有被合并到以太坊中。它们目前都属于“停滞”类别;这意味着它们已经有 6 个月或更长时间处于非活动状态。

这些提案未合并的部分原因是它们需要对以太坊网络进行共识层协议更改。

直到 2021 年,EIP-4337 才被提出;在不需要共识层更改的情况下,在以太坊上进行账户抽象!

EIP-4337:使用 Alt Mempool 的账户抽象

EIP-4337 引入了一种名为 UserOperation 的“_”伪交易“对象;它是一种描述代表用户发送的交易的结构。

用户操作进入一个“alt mempool”;它本质上是一个用于存储有关未确认交易信息的等待室。

以太坊网络上的节点可以选择充当“捆绑者(bundler)”。捆绑者从 mempool 中提取用户操作,并将多个用户操作打包到一个称为“捆绑交易”的单个交易中。

一旦他们创建了一个捆绑交易,他们就会将其发送到一个全局的“单例”智能合约,称为“EntryPoint”。整个区块链上只有一个 EntryPoint 智能合约。捆绑者在 EntryPoint 智能合约上调用一个名为 handleOps 的函数。

此函数接收捆绑交易,并在每个帐户上调用一个特殊函数:` validateUserOp`。每个智能合约钱包都必须实现此函数。

` validateUserOp` 应该验证操作的签名,并在帐户认为操作有效的情况下支付费用,然后再继续执行操作。

每个智能合约钱包还必须实现第二个函数:预计被称为 "execute",以实际执行由 EntryPoint 合约发送的操作。

一个简化的流程如下所示:

eip-4337 中账户抽象的总结

为什么这很重要?

合约账户是钱包的下一个演进,它需要为 web3 的用户体验提供急需的改进。

这种变化带来的可能性确实是无限的:

  • 在用户注册你的应用程序时,在后台为你的用户创建钱包

  • web3 游戏的会话密钥(允许在 Y 时间内进行任何 X 交易,而无需在每次交易上进行签名)

  • 团队钱包可以使用具有分层权限的去中心化应用程序

一位奶奶可以收集 NFT,甚至不知道什么是区块链。账户抽象使每个人都可以使用 web3;不仅仅是技术爱好者。

总结

在这篇文章中,我们概述了:

  • 以太坊上账户和交易的基本概念。

  • EOA 在 web3 用户体验方面的不足之处。

  • 账户抽象为解决它所做的事情以及它在底层的工作方式。

账户抽象是 web3 的游戏规则改变者,并将去中心化应用程序带给主流受众。

使用智能合约作为你的钱包的能力带来了无限的可能性,EIP-4337 是最新的不需要共识层更改的账户抽象提案。

感谢阅读!

感谢你看到这里!🙏

如果你喜欢这篇文章,请考虑在 Hashnode 上关注我以获取更多信息!

https://hashnode.com/@JarrodWatts

  • 原文链接: blog.jarrodwatts.com/wha...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
JarrodWatts
JarrodWatts
江湖只有他的大名,没有他的介绍。