×

解析:EIP-4337如何用账户抽象来改善以太坊复杂的用户体验问题

admin admin 发表于2024-11-03 16:53:18 浏览56 评论0

抢沙发发表评论

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


本文将带你了解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.可以启用社会恢复。如果一名用户不知何故丢失了密钥,那么他只需让他的朋友和家人帮他恢复账户就可以了。


群贤毕至

访客