# 重新思考数字交易：通过账户抽象改变游戏规则

By [XiaomaLabs](https://paragraph.com/@xiaomalabs) · 2023-05-19

---

_该文来源：_

[https://usa.visa.com/solutions/crypto/rethink-digital-transactions-with-account-abstraction.html](https://usa.visa.com/solutions/crypto/rethink-digital-transactions-with-account-abstraction.html)

尽管不断取得进步，但区块链目前难以提供与主流数字支付生态系统相同水平的灵活性和用户体验。然而，新兴技术可以增强使用数字货币进行交易时的支付体验。在「自托管钱包的自动支付」中，我们通过利用公共区块链上的账户抽象 (AA) 概念，深入研究了尖端技术在自动支付方面的应用。¹我们对 AA 和改进的加密支付体验的探索继续看看当前以太坊上的 AA 范式如何提供创造性的解决方案来处理交易费用：用户可以使用稳定币、其他 ERC-20 代币支付以太坊交易费用，还是根本不支付？在数字货币获得主流采用之前，寻找创新解决方案以实现无摩擦的加密入职和交易体验至关重要。

ERC-4337 的技术概述是以太坊上 AA 实施的当前标准，旨在更好地了解 ERC-4337。我们讨论了 Visa 对两组 Paymaster 合约的实验性部署，以展示如何重新设计区块链上的汽油费以提高用户便利性。

为了更好地理解账户抽象的价值主张，让我们简要回顾一下以太坊上目前存在的两种类型的账户：外部拥有账户（EOAs）和合约账户（CAs），通常分别称为用户账户和智能合约。由私钥控制的 EOA 允许用户发送交易。然而，它们缺乏智能合约的可编程性，使它们更加僵化。相反，CA 拥有可执行代码，但无法独立发起交易。交易必须始终来自用户的账户并包含用户的签名，无论是简单的代币转移还是通过许多智能合约执行的复杂操作。

### 账户抽象和ERC-4337

帐户抽象 (AA) 的概念旨在利用 CA 的可编程性来造福最终用户。在编写智能合约时，通常的做法是定义一个拥有者来控制合约的行为。作为智能合约构建的自托管钱包可以为用户提供比基于 EOA 的钱包更多的功能。这是通过引入称为 ERC-4337 的新以太坊标准来实现的，该标准由以太坊社区成员（包括以太坊创始人 Vitalik Buterin）提出。² ERC-4337 使所有者可以直接拥有智能合约账户，而无需 EOA 签名。虽然所有者可能不会使用传统意义上的 EOA 签名，但他们对智能合约的所有权仍然需要一个安全的身份验证过程，以确保他们正确地控制和管理智能合约账户。反过来，这个智能合约帐户可以处理诸如多因素身份验证、定期付款以及最终用户定义的自定义规则和策略等任务。

ERC-4337 是 AA 的最新进展，最初于 2021 年作为以太坊改进提案 (EIP)-4337 提出。它经历了以太坊征求意见 (ERC) 流程，该流程为以太坊网络上的应用程序建立了标准。 EIP 和 ERC 之间的区别在于它们的范围和采用要求。 ERC 定义智能合约应如何在应用程序级别运行和相互交互。它们不需要像核心 EIP（以太坊改进提案）这样的所有参与者都采用，这些 EIP 在协议级别部署并且需要在社区内达成更广泛的共识。从 EIP-4337 到 ERC-4337 的过渡标志着该提案已经满足以太坊应用所需的标准，现已正式成为以太坊生态系统的一部分。截至 2023 年 3 月，ERC-4337 的核心组件已经部署在以太坊主网上。与之前的账户抽象 EIP 不同，ERC-4337 无需对区块链协议的共识层进行修改即可在以太坊网络上启用账户抽象。² 这种开发允许区块链网络参与者立即探索和试验新的用户体验，而无需等待重大网络升级。值得注意的是，ERC-4337 的优势之一是它与任何使用以太坊虚拟机的区块链兼容，为 AA 提供了一个超越以太坊本身的标准。

### 遍历ERC-4337交易

在典型的 EOA 交易中，用户与他们的自托管钱包交互以创建、签署交易并将交易提交到公共内存池。生成并使用用户私钥签名的交易有效负载随后通过节点传播到点对点 (P2P) 内存池。验证者或专门实体（称为构建者）从公共内存池中选择合适且有利可图的交易来执行并将其合并到区块链中。

![图 1：典型的以太坊交易流程 ](https://storage.googleapis.com/papyrus_images/f0c96c6b6d289012685964b8fe53e875d36dd27fa83bf8c4b116dafbf9b2659a.png)

图 1：典型的以太坊交易流程

_描述：用户使用自托管钱包创建,签名和提交交易,然后将其发送到公共备忘录。签名的事务有效负载通过节点通过P2P备忘录池传播。验证者或构建者从备忘录中选择有利可图的交易以执行并合并到区块链中。_

ERC-4337 引入了一种不同于传统 EOA 方法的替代交易流程，它在交易到达代理 EOA 地址之前添加了新步骤。用户将他们的意图作为 UserOperations 发送，然后通过专用的 UserOperations 内存池传播。这个独特的内存池由捆绑器监控，捆绑器充当代理 EOA，以网络可以处理的典型 EOA 交易的形式将 UserOperations 发送到公共内存池。然后，这些交易遵循与常规交易相同的流程，要么加入公共内存池，要么直接进入建设者。

我们逐步介绍了 ERC-4337 交易的端到端流程，从 UserOperation 生成到执行。在深入研究之前，必须定义出纳员的概念，它在这个过程中起着至关重要的作用，并且是我们自己探索的核心。 Paymaster 是一个可选的智能合约账户，能够赞助合约账户（以用户为中心的智能合约）的交易费用。 Paymasters 评估是否在验证阶段接受 UserOperation，并在执行阶段实施任何所需的费用逻辑。通过这样做，他们可以为用户赞助交易费用，并使用户能够使用 ERC-20 代币（如美元稳定币）支付燃料费。

![图 2：ERC-4337 交易流程](https://storage.googleapis.com/papyrus_images/3728892616df1dea2674f876e4d20d7182f47b16c2ecfd35812548cb64d8c5af.png)

图 2：ERC-4337 交易流程

_描述：该图像说明了ERC-4337如何在事务到达代理EOA地址并通过网络发送之前添加用户意图层的过程。用户将其意图提交为UserOperations,然后将其分发到专用的UserOperations备忘录中。此单独的备忘录池由Bundlers监视,后者充当代理EOA。 Bundlers将UserOperations转换为可以由网络处理的已签名事务。_

1.  用户通过符合 ERC-4337 标准的智能合约钱包生成 UserOperations。 UserOperations 封装了用户与区块链交互的意图，用户对其进行签名以进行身份​​验证。一旦生成，UserOperation 将被提交到专用的 UserOperation Mempool，这是一个专门用于 UserOperations 的存储，与标准的 Ethereum 交易 mempool 分开。
    
2.  Bundlers 是一类专门的参与者，它监控 UserOperation Mempool，运行模拟并将一系列 UserOperations 组装成一个单一的交易包。 Bundlers 负责收集 UserOperations 并将它们提交给 EntryPoint 合约，优化 gas 使用并通过利用费用优先逻辑来最大化利润。
    
3.  EntryPoint 合约接收捆绑的一批 UserOperations。它充当中央协调员，用于管理 ERC-4337 交易流程中的 UserOperations。
    
4.  如果 UserOperation 指定，EntryPoint 合约将与 Paymaster 合约交互。如前所述，Paymasters 可以赞助合约账户的交易费用。 EntryPoint 验证付款人是否有足够的存款，或者合约账户是否有足够的资金来支付汽油费。在执行过程中，如果涉及到 Paymaster，它可以实现自定义费用逻辑，我们将在下一节中进行演示。
    
5.  然后 EntryPoint 合约调用合约账户，必要时调用出纳员，以验证 UserOperation 中的签名。合约账户是与 EntryPoint 合约无缝交互以促进交易执行的用户账户。验证成功后，EntryPoint 将每个 UserOperation 的相关数据传输到 Contract Account，启动执行过程。
    

### 账户抽象和实际应用

随着区块链技术不断探索现实世界的应用，自托管钱包正成为用户持有和使用其数字货币进行交易的热门选择。自以太坊成立以来，已经有大约 1.8 亿个唯一地址进行了交易，包括所有类型的账户和属于同一个人或一组个人的多个账户。³但是，每月，我们只看到发起了数百万次链上交互由真人进行，以太坊主网每天的链上活动约为每天 100 万笔交易。⁴ 相比之下，Visa 在 2022 年处理了 2580 亿笔交易，平均每天处理 7.07 亿笔交易，目前有 41 亿张 Visa 关联卡在流通全球范围内。⁵ 如果区块链支持同等广度的支付体验并具有相同的易用性，它们能否享有可比的采用水平？朝这个方向可能采取的步骤包括为用户提取汽油费或允许他们用 ERC-20 代币支付交易费。

**使用ERC-4337 Paymaster 使用ERC-20代币支付**

![图 3：Paymaster 促进使用 ERC-20 代币支付交易费用](https://storage.googleapis.com/papyrus_images/35ed495ae3e4c46ed260b746d72e67f13254d26631931613b623292c1adfcc9e.png)

图 3：Paymaster 促进使用 ERC-20 代币支付交易费用

_该图说明了一种情况,用户希望在商家网站上进行购买,打算转移$ 100,但钱包中仅包含ERC-20令牌(,例如USDC )。在这种情况下,Paymaster合同充当中介,接受USDC作为用户的交易费用,向ETH支付ETH作为交易费用, 使商家能够以USDC等ERC-20令牌接收付款。这大大减少了用户的摩擦,因为他们不再需要专门持有本地令牌来支付汽油费。_

今天要在以太坊区块链上进行交易，用户需要获取 ETH 来支付 gas 费用；同样，要在 Polygon 区块链上进行交易，用户需要获取原生代币 MATIC。是否有一种解决方案可以消除仅出于支付 gas 的目的而积累不同范围的本地区块链代币的需要？这种情况类似于 Visa 的跨境支付核心网络的价值，旅行者可以在其中以当地货币消费，而无需先获取当地货币。在这个版本的 Paymaster 合约中，合约可以充当中介货币转换服务。该服务可以从用户那里收取数字货币，然后根据当前汇率将其转换为原生代币，以代表用户支付汽油费。此外，这可以通过即时融资来完成，这意味着用户只需要在交易时为天然气成本提供资金，而无需任何预先融资要求，以优化他们的现金流管理。

**使用ERC-4337 Paymaster 为用户赞助交易费用**

![图 4：Paymaster 为用户赞助交易费用](https://storage.googleapis.com/papyrus_images/3bdca8050268d31258f06d26f27c229e0bb5f8ff722365a362d00a46fcf5b882.png)

图 4：Paymaster 为用户赞助交易费用

_该图像描述了一种情况,用户希望在商家的网站上进行$ 100的购买,但是他们的钱包仅包含ERC-20令牌(,例如USDC )。Paymaster服务可以作为“加油站”介入,为用户赞助交易费用。这使商家可以像USDC一样以ERC-20令牌的形式接收付款,从而为用户创建了无缝过程。_

当今Web 2.0中的P2P交易对许多国家的消费者都是免费的,这提出了一个直接的问题:为什么消费者应该在区块链上为P2P交易付费? 如果第三方(例如金融科技钱包提供商)愿意承担这些费用,则帐户抽象提供了解决方案,允许用户绕过这些费用。在这种情况下,钱包提供商或dApp可以充当Paymasters,为用户支付汽油费并显着减少摩擦。ERC-4337 Paymaster概念可以通过使用户免费通过其钱包平台进行交易来激励用户采用。

除此之外,智能合同帐户可以简化钱包管理并提供替代签名验证方法,从而可以进行多因素身份验证,以提高安全性并为自保管钱包收回资金。此外,它们通过允许对具有可自定义限制的特定任务进行临时权限来简化dApp的使用,例如授权dApp处理用户帐户中重复出现的拉付款,金额最高为一定数量。这些示例仅说明了智能合约如何帮助非加密本地用户更轻松地与区块链技术进行交互,同时确保其帐户安全。

### 我们对ERC-4337 Paymaster 实施的实验

**使用ERC-4337 Paymaster 使用ERC-20代币支付**

![图 5：Paymaster 促进使用 ERC-20 代币支付交易费用（代码片段）](https://storage.googleapis.com/papyrus_images/0108c5d9c0704b71e750e99ef802bd748457c7f5898df9b9ab9d7a0e5a915671.png)

图 5：Paymaster 促进使用 ERC-20 代币支付交易费用（代码片段）

_用户操作完成后,无论成功还是失败,Paymaster都会向用户收取相当于ETH气体成本的自定义令牌。此过程使用户可以使用ERC-20令牌而不是ETH之类的本机令牌来支付交易费用。Paymaster充当中介,从用户那里收集ERC-20令牌,并向区块链支付ETH以进行交易便利化。提供的片段来自ERC-4337核心团队在GPL-3.0许可下的实现(_[_https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/samples/TokenPaymaster.sol_](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/samples/TokenPaymaster.sol)_),2023年。_[_https://www.gnu.org/licenses/gpl-3.0.en.html_](https://www.gnu.org/licenses/gpl-3.0.en.html)_。_

通过我们的第一个 Visa Paymaster 合约，我们正在探索用户是否可以使用替代代币支付交易费用，例如美元稳定币，甚至在未来甚至是中央银行数字货币。在这种情况下，Paymaster 通过接收用户支付的等值通用 ERC-20 代币来支付 ETH 交易费用。对于实施，我们使用了以太坊基金会和 ERC-4337 核心团队提供的起始代码 ⁶。此示例合约包含 Paymaster 及其自定义 ERC-20 令牌的管理逻辑。对于这个合约，我们引入了一个白名单和一个更新代币到 ETH 转换率的函数。这使我们能够更好地模拟 ETH 和代币之间的汇率是动态的现实生活条件。我们的测试设置涉及部署智能合约钱包和发送用户操作。目前，兼容 ERC-4337 的钱包选项有限，我们决定使用以太坊基金会和 ERC-4337 核心团队打造的 Trampoline 钱包。⁷ 为了将我们的用户操作发送到 Goerli Testnet，我们使用了 Blocknative 的公共 Bundler。⁸ 对于一个成功的 UserOperation，Visa Paymaster 合约首先需要检查用户在 ERC-20 中是否有足够的资金来支付汽油费。确认后，用户使用此通用 ERC-20 令牌支付交易费用。你可以 [在这里找到我们的部署合同](https://goerli.etherscan.io/address/0x5419D0cCc5B8f648ec47fF35E25A10886d612435#code),⁹和 [此处已处理的UserOper](https://4337.blocknative.com/ops/0xa52479666805241dac194092443d92d0adab5a348106964459ccd90afd1c2510/0)

**使用ERC-4337 Paymaster 为用户赞助交易费用**

![图6:Paymaster赞助用户交易费用(代码段)](https://storage.googleapis.com/papyrus_images/1e27240ad33005ba5954655e5fad735f4eaa50b94f105867973437e2122c926a.png)

图6:Paymaster赞助用户交易费用(代码段)

_此代码段检查用户((即智能合同帐户地址))是否被授权使用Paymaster,如果没有,则会引发错误。如果没有抛出错误,交易流程将继续,Paymaster支付汽油费。提供的摘要基于ERC-4337核心团队在GPL-3.0许可下的样本合同(_[_https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/test/TestPaymasterAcceptAll.sol_](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/test/TestPaymasterAcceptAll.sol)_),2023年。Visa版权,2023年。_[_https://www.gnu.org/licenses/gpl-3.0.en.html_](https://www.gnu.org/licenses/gpl-3.0.en.html)_。_

根据我们提到的第二个用例，我们的另一个 Visa Paymaster 合约完全赞助交易费用。同样，我们的实施基于以太坊基金会和 ERC-4337 核心团队提供的起始代码¹¹。起始代码无偿赞助每笔交易。我们添加了一个白名单，只允许授权用户与 Visa Paymaster 合约进行交互。您可以在此处找到我们已部署的合同。 ¹² 我们的测试实施能够成功赞助白名单用户的用户操作交易费用。您可以在此处查看成功的 UserOperation。¹³

Paymaster 用例远远超出了我们在本文中强调的范围。通过抽象出基本的区块链处理逻辑，可以有许多创新的用户体验。对于目前正在进行的 ERC-4337 开发，我们看到了几种可能的方法，可以在我们上述实验的基础上进行构建。例如，与其要求在 Paymaster 智能合约中内置自定义的新 ERC-20 代币，不如轻松地将 Paymaster 与现有的 ERC-20 代币（例如 USDC）集成。这种方法需要使用外部来源来确定代币价格，并检查 Paymaster 合约是否已批准向用户收取指定代币的费用。一种方法是部署一个链下预言机服务，该服务可以提供代币价格等必要信息，以及 Paymaster 合约可以验证的签名。

或者，整个流程可以在必要数据的预言机合约的帮助下在链上处理。虽然这种方法可以更好地保证出纳员得到适当的补偿，但实施起来也更具挑战性。一些 ERC-4337 限制使得 Paymaster 很难在 Paymaster 验证期间查询链上预言机，并且 Bundlers 通常会拒绝需要这样做的 UserOperations。为了启用此流程，有必要使用受信任的 Paymaster 列表建立替代内存池，Bundler 可以选择加入。这些受信任的 Paymaster 可以调用 oracle 合约，而使用这些 Paymaster 的 UserOperations 将从备用内存池。

### 展望未来

使用数字钱包与区块链交互可能是一种具有挑战性的体验，许多人认为确保易用性是推动更广泛采用的关键步骤。 ERC-4337 为通过自我托管的智能合约钱包改善链上用户支付体验奠定了有趣的未来可能性，这反过来又可以改变用户使用数字货币和数字资产的方式。

当谈到 ERC-4337 时，以太坊社区正处于这一新旅程的开始。有许多计划提供可以构建 AA 驱动流的基础设施，其中一些我们在测试中使用并在本文中提到，但仍有相当大的增长空间。与任何开放领域一样，存在相互竞争的方法和权衡，例如公共 Bundler 提供的去中心化选项与私有 Bundler 的可定制性；完全在链上的 Paymaster 的无需信任的安全性与在链下部署某些组件的成本效益相比；以及钱包可能使用的众多替代签名方案，等等。这些不同的设计选择可以产生一组丰富的选项，从而更好地为用户提供未来的数字支付体验。

### 无处不在的每个人的支付创新

作为支付解决方案的全球领导者，Visa 始终致力于探索满足现实世界需求的创新。我们将继续研究智能合约的潜力以及可编程货币和可编程支付可能带来的未来。在本文中，我们深入研究了由 ERC-4337 执行的以太坊上的 AA 如何支持区块链上有趣的新用例。我们提供了 ERC-4337 交易的端到端演练，并解释了它与标准以太坊交易的区别，以突出底层机制。

我们对 ERC-4337 的实验通过部署 Paymaster 合约来学习和评估它们在解决现实世界问题和通过链上交互显着增强客户体验方面的潜在效用，从而侧重于两个不同的用例。对于在这一前沿工作的公司，我们的产品、研究和工程团队将很乐意讨论可编程支付方面的想法。

通过 [GDLVisaCryptoResearch@visa.com](mailto:GDLVisaCryptoResearch@visa.com) 联系 Visa Crypto，详细了解我们在加密生态系统中的研究兴趣和活动。

_本文件仅供说明之用。它包含对开发中产品的描述，应理解为对完全部署产品的潜在功能的表示。本产品的最终版本可能不包含本演示文稿中描述的所有功能。在我们的写作中，我们坚持明确区分入口点、paymaster 和用户操作等概念术语，以及它们对应的链上实体 EntryPoint、UserOperation 和 Paymaster。这种方法遵循原始 ERC-4337 提案中规定的约定。_

**关注：**

Twitter: https://twitter.com/xiyumaxiyu

Notes

*   ¹ “Auto Payments for Self-Custodial Wallets.”  [Auto Payments for Self-Custodial Wallets](https://usa.visa.com/content/VISA/usa/englishlanguagemaster/en_US/home/solutions/crypto/auto-payments-for-self-custodial-wallets.html)  | Visa. Accessed May 10, 2023. 
    
*   ² “ERC-4337: Account Abstraction Using Alt Mempool.” [ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337) | Ethereum Improvement Proposals. Accessed May 10, 2023.
    
*   ³ "Ethereum Unique Addresses,” estimated by Visa Crypto using public database with Dune Analytics | [https://dune.com/queries/2280349](https://dune.com/queries/2280349). Accessed May 10, 2023.
    
*   ⁴ "On-Chain activity,” estimated by Visa Crypto using public database with Dune Analytics | [https://dune.com/queries/2333459/3820070](https://dune.com/queries/2333459/3820070). Accessed May 10, 2023.
    
*   ⁵ [Visa Annual Report 2022](https://s29.q4cdn.com/385744025/files/doc_downloads/2022/Visa-Inc-Fiscal-2022-Annual-Report.pdf)
    
*   ⁶ [Starter code provided by the Ethereum Foundation and the ERC-4337 core team for Token Paymaster](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/samples/TokenPaymaster.sol)
    
*   ⁷ [Trampoline Wallet GitHub Repository](https://github.com/eth-infinitism/trampoline) 
    
*   ⁸ [ERC-4337 Bundler on Goerli by Blocknative](https://www.blocknative.com/blog/account-abstraction-erc-4337-guide#:~:text=ERC%2D4337%20Bundler%20on%20Goerli%20\(endpoint%3A%20https%3A//api.blocknative.com/v1/goerli/bundler)
    
*   ⁹ [Visa Token Paymaster deployed contract](https://goerli.etherscan.io/address/0x5419D0cCc5B8f648ec47fF35E25A10886d612435#code)
    
*   ¹⁰ Blocknative ERC-4337 UserOps Explorer | [Sample UserOperation for Token Paymaster Test](https://4337.blocknative.com/ops/0xa52479666805241dac194092443d92d0adab5a348106964459ccd90afd1c2510/0)
    
*   ¹¹ [Starter code provided by the Ethereum Foundation and the ERC-4337 core team for Sponsor Paymaster](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/test/TestPaymasterAcceptAll.sol)
    
*   ¹² [Visa Sponsor Paymaster deployed contract](https://goerli.etherscan.io/address/0xc9bb62541f196588379033526a2f6dafbe72f35a#code)
    
*   ¹³ Blocknative ERC-4337 UserOps Explorer | [Sample UserOperation for Sponsor Paymaster Test](https://4337.blocknative.com/ops/0xad9fb3e1f365b17723883ac772ec84d1d843981b71efa079962f6f84c5ce93c5/0)
    

Further reading suggestions
---------------------------

*   “Unified ERC-4337 Mempool.” [Unified ERC-4337 Mempool](https://notes.ethereum.org/@yoav/unified-erc-4337-mempool) | Ethereum Notes. Accessed May 10, 2023.
    
*   The Road to Account Abstraction. “ [The Road to Account Abstraction](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap) | Ethereum Notes. Accessed May 10, 2023.
    
*   " ERC 4337: Account Abstraction without Ethereum Protocol Changes.” [ERC 4337: Account Abstraction without Ethereum Protocol Changes](https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a) | Infinitism Medium Blog. Accessed May 10, 2023.

---

*Originally published on [XiaomaLabs](https://paragraph.com/@xiaomalabs/NprZFTofFvdM4MQ0hqTZ)*
