无标题文档
wdCP系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用教程) wdCDN系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用手册)
wdOS系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用教程) wdDNS系统 (介绍,功能特性,运行环境,安装说明,演示,常见问题,使用手册)
注册 发贴 提问 回复-必看必看 wddns免费智能 DNS 开通 本地或虚拟机使 用wdcp 一键包在mysql编 译时"卡住"
【300G高防】双线 无视攻击 wdcp官方技术支持/服务 阿里云8折优惠券 无敌云 腾讯云优惠中,现注册更有260代金额券赠送
返回列表 发帖
提问三步曲: 提问先看教程/FAQ索引(wdcp,wdcp_v3,一键包)及搜索,会让你更快解决问题
1 提供详细,如系统版本,wdcp版本,软件版本等及错误的详细信息,贴上论坛或截图发论坛
2 做过哪些操作或改动设置等

温馨提示:信息不详,很可能会没人理你!论坛有教程说明的,也可能没人理!因为,你懂的

什么是账户抽象(ERC-4337),以太坊的ERC4337

正如ERC-4337所定义的那样,账户抽象 "允许用户使用包含任意验证逻辑的智能合约钱包,而不是使用EOA作为其主要账户"。

ERC-4337 带来许多用户体验的优化,最引人注目的是使人们能够使用智能合约作为他们的主要账户。

ERC-4337在区块链之上运行,不需要对区块链本身做任何改变。这使得它今天可以在以太坊或任何EVM链上使用,无需对底层区块链基础设施进行任何重大改变。

2023年3月1日,来自以太坊基金会的Yoav Weiss宣布,在EntryPoint合约首次部署时,ERC-4337已经在以太坊主网上运行。

账户抽象的关键概念是什么?

账户抽象的关键概念是UserOperation, Bundler, Sender, EntryPoint, Paymaster, 和 Aggregator。这些概念结合在一起,使web3开发者能够建立智能合约钱包和使DApp与智能合约钱包(SCW)兼容。

图中显示了用户如何定义UserOperation,这些操作被捆绑起来,发送到EntryPoint合约,然后代表用户智能合约钱包执行。

1. UserOperation

UserOperation是一个 "伪交易对象",代表用户的交易意图。任何UserOperation都可以包含多个指令和附加数据,以执行由智能合约账户发起的智能合约调用。UserOperation 代表了 一个 4337 合约钱包交易的开始。

UserOperation 和 传统交易对象(TX)之间有什么区别?

传统交易对象通常类似于这样的结构:

{  from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",  to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",  data: "0x.....",  gasLimit: "21000",  maxFeePerGas: "300",  maxPriorityFeePerGas: "10",  nonce: "0",  value: "10000000000"}

EOA 会对该交易对象签名,并发送到节点处理(mempool)。

UserOperation 结构如下:

    struct UserOperation {        address sender;        uint256 nonce;        bytes initCode;        bytes callData;        uint256 callGasLimit;        uint256 verificationGasLimit;        uint256 preVerificationGas;        uint256 maxFeePerGas;        uint256 maxPriorityFeePerGas;        bytes paymasterAndData;        bytes signature;    }

UserOperation 和传统交易对象之间的三个主要区别是:

  • 附加字段 - UserOperation 交易结构中的有一些新字段(如:paymasterAndData 等)
  • 另一个mempool - UserOperation 被发送到一个单独的mempool,在那里捆绑器可以将 UserOperation 打包成真实的交易,并被包含在一个区块中。
  • 认证方式 - 对于一个传统交易,认证总是通过一个私钥的签名来完成,这个私钥对于一个给定的发起者来说永远不会改变。在UserOperation中,认证是可编程的。
2.捆绑器(Bundler)

捆绑器会监控一个专门为UserOperation建立的 mempool。捆绑器将多个UserOperation捆绑成一个交易,并将该交易提交给入口点(EntryPoint)合约。捆绑器通过抽取部分 Gas 费用来获得补偿。

捆绑器是实现ERC-4337的基础设施的关键部分,由于所有以太坊交易都需要由一个外部拥有的账户(EOA)发起。捆绑器通过EOA 把多个UserOperation 作为交易提交上链,在一个账户抽象化的生态系统中,捆绑器是唯一需要EOA的参与者。ERC-4337的主要目标之一是钱包抽象(Web3不再关注使用EOA 还是 合约钱包),让web3 用户可以不再需要自己的EOA钱包。

3. 入口点(EntryPoint)

EntryPoint是一个单例智能合约,用来接收来自捆绑器的交易,然后验证和执行UserOperation。

EntryPoint的验证过程是如何进行的?

智能合约账户可以定义自己的验证,因此也可以定义自己的认证。在验证过程中,EntryPoint合约会检查钱包是否有足够的资金来支付它可能使用的最大Gas量,这是基于UserOperation中的Gas字段。如果钱包没有足够的资金,EntryPoint合约会拒绝交易。

EntryPoint的执行过程是如何进行的?

在执行过程中,EntryPoint合约通过使用UserOperation中指定的 calldata 来执行UserOperation,并从智能合约账户中取钱给捆绑器报销合适的ETH来支付Gas。

4. Paymaster

Paymaster 是一个ERC-4337定义的智能合约,处理Gas 支付政策。支付政策为 Gas 的支付方式(例如,用什么货币)和由谁支付创造了灵活性,这消除了用户持有区块链原生代币才能与区块链交互的限制。

例如,以太坊的原生区块链代币是ETH,Polygon的原生区块链代币是MATIC。因此,用户可以用任何ERC20代币如美元币(USDC)或Tether(USDT)来支付以太坊交易的Gas费用,而不是用原生代币(如ETH)来支付。

图:EntryPoint合约如何与Paymaster合约交互以执行灵活的Gas支付政策。

Paymaster 允许应用程序开发人员:
  • 为他们的用户赞助 Gas 费用
  • 使用稳定币代为 Gas支付
  • 使用其他ERC-20代币实现 Gas 支付

Paymaster 从用户那里抽象出Gas支付,同时以一种稳健的方式让应用程序决定这种抽象应该是什么(例如,赞助交易,用稳定币支付Gas,等等)。

5.聚合器(Aggregator)

聚合器是一个智能合约,它实现了一个支持聚合的签名方案(即一个可以验证聚合签名的合约)。

如果多个消息用不同的密钥签名,那么可以生成一个单一的组合签名,验证组合签名,并确认(推导)所有的组成签名也是有效的。

通过将多个签名合并成一个签名,聚合器有助于节省calldata成本,多个捆绑的 UserOperation 在一个步骤中得到验证。

图:ERC-4337如何为UserOperation 使用 mempool和一个捆绑器,将一捆 UserOperations 组合成一个交易,并包含在以太坊的区块中。

ERC-4337 先烈:EIP-2938 和 EIP-3074

ERC-4337 建立在之前的以太坊改进提案(EIP)2938 和 3074 之上。EIP-2938 提出了使智能合约可用来 "支付费用和发起交易执行" 一等账户的想法,而EIP-3074提出了将 "外部拥有账户(EOA)的控制权委托给智能合约 "的想法。

EIP-4337 使用了EIP-2938和EIP-3074引入的想法,并将其与使用独立 mempool 的想法和不需要改变共识层的实施路线相结合。

感谢 Chaintool 对本翻译的支持, Chaintool 是一个为区块链开发者准备的开源工具箱

返回列表