以太坊的一个主要缺点是用户体验复杂。
本文将带你了解Nethermind和OpenGSN.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开始。
但如前所述,这需要重大的协议更改。
因此,Nethermind和OpenGSN.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.可以启用社会恢复。如果一名用户不知何故丢失了密钥,那么他只需让他的朋友和家人帮他恢复账户就可以了。