作者:Nishil

来源:推特

以太坊的一个主要缺点是用户体验复杂。

本文将带你了解NethermindOpenGSN.eth于2021年9月21日提出的EIP-4337如何尝试使用账户抽象来解决这个问题。

让我们从账户抽象(Account Abstraction,简称AA)的含义开始。

账户抽象为用户提供了在更高层次上使用账户的能力,而无需对底层流程了解过多。

就像使用Gmail账户却不知道它的运行原理一样。

有了AA,我们就有机会远离助记词的可怕世界。

我们可以启用不同的签名选项,gas费可以由Dapp赞助或通过法币支付,等等。

现在我们知道了AA是什么,让我们了解一下如何将它引入以太坊。

目前以太坊上有两种类型的账户:

1. 外部拥有账户(EOA)

2. 智能合约账户

外部自有账户由用户的密钥对(公钥和私钥)控制。这是大多数用户用来与以太坊交互的工具。

Metamask(钱包)等服务充当与这些账户交互的接口。

智能合约账户不受任何私钥控制,而是由它们的代码控制。例如,所有的DeFi协议都由智能合约帐户控制。

以太坊的问题是EOA获得了智能合约账户所没有的特权。

最明显的例子是启动交易的能力。目前,只有EOA可以做到这一点。

这是个问题,因为EOA功能被硬编码到以太坊协议中,没有定制空间。

例如:Gmail为你提供了在你的帐户上启用2FA(双因素认证)的选项。类似的自定义功能目前无法在以太坊上实现。

以太坊上的EOA有以下限制:

1. 用户不能使用自定义签名方案。ECDSA是一种典型的签名方案,以太坊使用它来生成公私钥对。

2. Gas费用必须用原生加密货币(ETH)支付。

3.因为你的私钥是你的帐户,丢失私钥就意味着丢失帐户。

所有这些问题都可以通过智能合约钱包轻松解决,因为它们允许使用自定义逻辑。

但如前所述,以太坊上的交易只能通过ECDSA保护的外部拥有账户(EOA)启动,而不能通过智能合约钱包。

现在你可能会问,为什么我们不改变这种情况呢?

EIP-2938是解决这个问题的一条途径。它引入了以太坊协议变更,允许交易从智能合约而不是EOA开始。

但如前所述,这需要重大的协议更改。

因此,NethermindOpenGSN.eth得到了Vitalik Buterin的帮助,提出了EIP-4337。

该提案提出了一个没有任何共识层协议更改的解决方案。

它为以太坊带来了“帐户抽象”。

它没有修改共识层本身的逻辑,而是提议在更高级别的系统中复制当前交易内存池的功能。

该提案引入了“user operations”(用户操作)的概念,这些操作允许我们将自定义功能编码到我们的智能合约钱包。

用户操作将用户的意图与签名和其他数据打包起来,以便进行验证。

以下是通过智能合约钱包发起的交易的一般流程:

1、Alice(用户)发起一个“用户操作”,并包含它想要执行的交易。

2、她将操作发送到高级别的“用户操作内存池”。

3、操作被部分验证并广播到P2P内存池节点网络。

4、操作由“Bundler”(打包者)负责,Bundler可以是任何人——MEV搜索者、验证者、你或我,等等。

5、然后所有的操作被打包者打包成一笔大额交易。

6、打包者将该区块与其他交易一起包含在以太坊区块中。

现在,让我们试着分析打包者的功能,来了解交易将如何被执行和验证。

1、打包者将交易路由到一个全局的“入口点”智能合约。

2、全局合约通过每个用户操作并调用智能合约钱包中的“验证函数”。

3、钱包运行这个函数来验证用户操作的签名,并对打包者打包这些交易进行补偿。

4、钱包运行一个执行操作来执行操作中指定的交易。

5、执行操作后,剩余的gas会退还至钱包。

EIP-4337还提出了“paymaster”(付款人)的概念。

现在,用户不用再依赖钱包,而是可以通过付款人的赞助获得交易费用。

受赞助的交易有很多用例。最常提到的用例是:

-允许应用程序开发者代表其用户支付费用

-允许用户以ERC20代币支付费用,合约作为收取ERC20代币的中介。

所有这些都非常令人振奋,原因有很多。

1. EIP-4337提案允许我们使用自定义签名方案。用户现在可以使用iOS和Android设备的内置方案,将手机都变成硬件钱包。

2. 它允许在以太坊上为多个签名者提供原生支持。两个或以上用户现在可以批准一笔交易,从而提高安全性。

3.可以启用社会恢复。如果一名用户不知何故丢失了密钥,那么他只需让他的朋友和家人帮他恢复账户就可以了。