# EIP-4337与Soul Wallet

By [JoewithoutY](https://paragraph.com/@joewithouty) · 2022-11-03

---

Nethermind和OpenGSN.eth于2021年9月21日提出的EIP-4337如何尝试使用账户抽象来解决这个问题。

账户抽象为用户提供了在更高层次上使用账户的能力，而无需对底层流程了解过多。我们可以启用不同的签名选项，gas费可以由Dapp赞助或通过法币支付，等等。

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

1.  外部拥有账户(EOA)
    
2.  智能合约账户
    

外部自有账户由用户的密钥对(公钥和私钥)控制。这是大多数用户用来与以太坊交互的工具。Metamask(钱包)等服务充当与这些账户交互的接口。智能合约账户不受任何私钥控制，而是由它们的代码控制。例如，所有的DeFi协议都由智能合约帐户控制。以太坊的问题是EOA获得了智能合约账户所没有的特权。明显的例子是启动交易的能力。目前，只有EOA可以做到这一点。

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

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

1.  用户不能使用自定义签名方案。ECDSA是一种典型的签名方案，以太坊使用它来生成公私钥对。
    
2.  Gas费用必须用原生加密货币(ETH)支付。
    

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

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

因此，[Nethermind](https://twitter.com/nethermindeth)和[OpenGSN.eth](https://twitter.com/opengsn)得到了[Vitalik Buterin](https://twitter.com/VitalikButerin)的帮助，提出了EIP-4337。

该提案提出了一个没有任何共识层协议更改的解决方案。它为以太坊带来了“帐户抽象”。它没有修改共识层本身的逻辑，而是提议在更高级别的系统中复制当前交易内存池的功能。该提案引入了“user operations”（用户操作）的概念，这些操作允许我们将自定义功能编码到我们的智能合约钱包。用户操作将用户的意图与签名和其他数据打包起来，以便进行验证。

![](https://storage.googleapis.com/papyrus_images/59808f313c3c25052bf19b6bf2ddaf54f9d22c61c1495b2d7a4bf26f4ba4038a.png)

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

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

![](https://storage.googleapis.com/papyrus_images/1f1f3354e6f96726e50fa8281ecc11bd8bce8cf42118d5d7e8f0604b3eae671a.png)

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

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

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

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

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

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

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

![](https://storage.googleapis.com/papyrus_images/1f1f3354e6f96726e50fa8281ecc11bd8bce8cf42118d5d7e8f0604b3eae671a.png)

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

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

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

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

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

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

![](https://storage.googleapis.com/papyrus_images/be276635635808bd39ac498cb560822d04536631b24d024fefc0264cec99f446.png)

受赞助的交易有很多用例。最常提到的用例是：-允许应用程序开发者代表其用户支付费用-允许用户以ERC20代币支付费用，合约作为收取ERC20代币的中介。

1.  EIP-4337提案允许我们使用自定义签名方案。用户现在可以使用iOS和Android设备的内置方案，将手机都变成硬件钱包。
    
2.  它允许在以太坊上为多个签名者提供原生支持。两个或以上用户现在可以批准一笔交易，从而提高安全性。
    

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

[https://ethglobal.com/showcase/soul-wallet-5srye](https://ethglobal.com/showcase/soul-wallet-5srye)

---

*Originally published on [JoewithoutY](https://paragraph.com/@joewithouty/eip-4337-soul-wallet)*
