本文详细介绍了以太坊改进提案(EIP)4337中引入的Paymaster智能合约,及其在账户抽象中的作用。本文探讨了Paymaster的两种主要使用情况:赞助用户交易的 Gas 和使用ERC-20代币支付Gas。
在 账户抽象 中,paymasters 是智能合约,它们允许灵活的 gas 政策,比如允许去中心化应用为其用户赞助操作(即,用区块链的原生货币支付 gas 费用),或者接受以 ERC-20 Token(例如 USDC)支付 gas 费用,而不是使用区块链的原生货币。
Paymaster 智能合约是在以太坊改进提案 (EIP) 4337 中引入的,并与其他账户抽象基础设施(如 bundlers 和入口点智能合约)集成,以补偿它们为执行用户操作而预支的 gas。
使用嵌入式账户和我们垂直集成的账户抽象基础设施,包括高性能 gas 管理 API(ERC-4337 paymaster),可以在以太坊和流行的二层网络上向任何 web3 应用添加嵌入式钱包。
构建和部署 Paymaster 在 Solidity | 从零开始的账户抽象课程 | 第 2 部分 - YouTube
使用 paymaster 的主要原因有两个:为另一个账户的交易赞助 gas 费用,或用 ERC-20 Token支付 gas 费用,而不是使用区块链网络的原生货币。这个 ERC-20 paymaster 可以是应用的代币,或一个稳定币,例如 USDC。
Web3 应用和钱包开发者可能选择使用赞助 paymaster 的原因包括让新用户更容易参与到 Web3 中,激励平台特定的用户行为,无需支付 gas 即可铸造 NFT,无需耗费 gas 部署钱包,以及许多其他用例。
为了用 paymaster 赞助交易,Web3 开发者通过定义可以被赞助的 用户操作 的规则来创建政策,他们使用的 paymaster 合约会在入口点合约中存入一定数量的加密货币,然后从补助交易的 gas 费中扣除这些费用,再激活该政策。
为了控制谁可以访问使用 paymaster 赞助的交易,开发者可以定义规则来管理每个应用和每个发送者的支出和用户操作数量(例如请求赞助用户操作的用户),准入或拒绝赞助用户操作的访问权限,以及设置政策的开始、结束和到期时间。
最大支出 - 政策可以支出的最大金额(以美元计)
每个发送者的最大支出 - 政策可以支出的每个发送者的最大金额(以美元计)
每个用户操作的最大支出 - 每个用户操作可以支出的最大金额(以美元计)
交易数量的最大计数 - 政策可以赞助的交易的全局最大数量
每个发送者的交易数量最大计数 - 每个发送者的交易的个人最大数量
发送者白名单 - 定义可以访问 paymaster 的账户的规则
发送者黑名单 - 定义不可以访问 paymaster 的账户的规则
政策开始时间 - 政策开始的时间
政策结束时间 - 政策结束的时间
政策到期 - 政策可以支出的最大金额(以美元计)
注意: 这些是可以使用 Alchemy 的 Gas Manager Coverage API 设置的 gas 政策规则。其他符合 ERC-4337 标准的 paymaster 可能支持更多或更少的规则。
使用 paymaster 访问密钥,开发者可以以编程方式创建、激活和管理灵活的 gas 赞助政策。要手动管理政策,开发者可以在 Gas Manager 控制面板 中创建。
Alchemy 的 Gas Manager Coverage API 合约已经在每个支持的区块链上为全局入口点合约存入了原生货币。当开发者通过我们的 Gas Manager 制定 gas 政策时,我们跟踪他们使用的原生货币来覆盖 gas 费用的数量。
在每个月的月底,基于 Alchemy 的团队会收到一份发票,上面列出他们政策所覆盖的总 gas 费用以及额外的 8% 总 gas 费用补偿。然后,这笔费用通过其 Alchemy 账户中的付款方式支付。
用于覆盖赞助交易的 费用 针对企业客户是自定义的,针对成长级别客户为 8%,对于免费用户则免费,因为赞助交易只在测试网中提供。
Alchemy 在以太坊、Arbitrum、Optimism、Polygon 上部署了赞助 paymaster 合约。以下是主网的部署地址及其在 Etherscan 上的链接:
Arbitrum - 0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc
Optimism - 0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc
Alchemy 在 Sepolia、Goerli、Mumbai、Arbitrum-Goerli、Optimism-Goerli 部署了赞助 paymaster 合约。以下是测试网的部署地址及其在区块浏览器上的合约地址:
ETH Sepolia - 0xC03Aac639Bb21233e0139381970328dB8bcEeB67
ETH Goerli - 0xC03Aac639Bb21233e0139381970328dB8bcEeB67
Polygon Mumbai - 0xC03Aac639Bb21233e0139381970328dB8bcEeB67
Arbitrum Goerli - 0xC03Aac639Bb21233e0139381970328dB8bcEeB67
Optimism Goerli - 0xC03Aac639Bb21233e0139381970328dB8bcEeB67
Dapp 和钱包开发者可能会选择使用 ERC-20 paymaster 的原因包括为其应用的 ERC-20 Token增加实用性,为拥有各种数字资产的用户提供更多灵活性,用稳定币支付,其价值不会波动,而是保持稳定,和其他与应用特定用例相关的场景。
Paymasters 在多个方面发挥作用,例如赞助交易和使用户能够使用 ERC-20 Token支付 gas,而执行这两个功能的 paymasters 被称为 验证 paymasters 和 Token(存款) paymasters,基于 IPaymaster 接口。
验证 paymaster 类型用于离线服务决定是否应赞助交易费用的场景。例如,如果用户想要使用法定货币和信用卡支付,用户操作的发送者将首先把他们的付款发送给外部签名者,如果这一步成功,paymaster 将验证操作,并确认将支付交易费用。
当用 ERC-20 Token支付 gas 费用时,将使用存款 paymaster 类型。开发者指定 ERC-20 Token和符合赞助用户操作的智能合约钱包地址。例如,当一个 web3 dapp 想要使用自己的 ERC-20 Token支付前 1000 名用户的交易时。
虽然存款 paymaster 允许用 ERC-20 Token进行费用赞助,但交易的实际费用是用 ETH 支付的,且从 paymaster 在入口点合约中存入的准备金中扣除。postOp() 函数包含从发送者处获取 ERC-20 Token的逻辑,基于从预言机报价的价格,以匹配所需的 ETH 来覆盖费用。
Paymasters 工作 通过与入口点合约交互来覆盖被赞助用户操作的费用,并补偿代表发送者执行用户操作的 bundlers。
对于每个用户操作:
在发送者的钱包上调用 validateOp
如果用户操作有 paymaster 地址,则调用 validatePaymasterOp
丢弃未通过 validatePaymasterOp 调用的用户操作
对每个用户操作,在发送者的钱包上调用 executeOp
跟踪代表发送者执行的用户操作所使用的 gas 量
向执行用户操作的 bundler 转账 ETH,以支付 bundler 执行用户操作所需的 gas
如果用户操作有 paymaster 字段,paymaster 使用其合约中存入的 ETH 来支付给 bundler
如果用户操作没有 paymaster 字段,则由发送者的钱包进行退款
以下是一个示意图,展示了 paymasters 的工作原理:
入点合约通过 paymaster 合约验证用户操作,并用来自 paymaster 的资金补偿 bundler。
IPaymaster 接口是每个 paymaster 合约应遵循的蓝图,以符合提案的规范。它引入了两个功能:validatePaymasterOp() 和 postOp()。
validatePaymasterUserOp() 是一个用于 mempool 节点、bundlers 和入口点合约的函数,用于确保 paymaster 合约同意赞助交易的费用。validatePaymasterUserOp() 在用户操作的 paymasterAndData 字段中提到。
validatePaymasterUserOp() 函数接受待验证的用户操作的字节表示、其 ID 和最大费用的参数。它返回一个名为 "context" 的 bytes32 变量,随后传递给 postOp() 函数。
postOp() 函数定义了用户操作成功验证后应该做什么。例如,如果用户操作的发送者想要用 ERC-20 Token支付,入口点将在操作完成后调用 postOp() 并传达使用的 gas 量。
postOp() 函数只能在 validatePaymasterUserOp() 生成的 "context" 不为 null 时调用。
ERC-4337 规范描述了一个 paymaster 的 声誉评分和速率限制系统,允许 ERC-4337 bundlers 避免执行来自恶意 paymasters 的用户操作。
由于 paymaster 的存储在使用该 paymaster 的捆绑包中共享,validatePaymasterOp 的一项操作可能会导致与该相同的 paymaster 相关的多个其他用户操作在捆绑包中验证失败,从而导致拒绝服务攻击(DoS)。
为了避免恶意的 paymasters 创建其自身的多个实例(即 Sybil 攻击),paymasters 被要求质押 ETH。paymaster 的质押不会被削减,可以随时提取;质押的存在要求潜在攻击者锁定相当数量的资本,以威慑恶意行为。
使用 paymasters 的好处包括增加 gas 政策的灵活性,简化新用户的 web3 入门体验,并为交易提供更大的可编程性。
利用 paymasters 的开发者的一大好处是使新用户更容易参与 web3。目前创建外部拥有账户 (EOA) 钱包、用区块链的本地Token为其充值、和铸造 NFT 的过程复杂繁琐,用户有很多放弃这一过程的机会。
Paymasters 有助于减少用原生货币为钱包提供资金以完成链上交易(例如铸造 NFT、领取用户名或使用其钱包注册活动)的摩擦。
构建 web3 产品的开发者可以通过添加支持用平台原生货币支付 gas 的功能,改善其应用的用户体验。
试图扩大公司的 Web3 初创公司可以通过覆盖关键用户的平台注册费用、激励用户测试新产品以及促成参与营销活动,来从 paymasters 中获益。
与 智能合约钱包的优势 类似,paymasters 可以以多种方式使 web3 开发者受益。今天一些最具创新性的 web3 公司正在寻找新的方式来实现 paymasters,以改善产品和 web3 用户体验。
Alchemy 的 paymaster 在以太坊、Polygon、Optimism 和 Arbitrum 主网上已上线。要开始赞助交易并使用符合 ERC-4337 标准的 paymaster 构建灵活的 gas 政策,请探索我们的 Gas Manager API 和快速入门指南,以创建 paymaster 策略。
- 原文链接: alchemy.com/overviews/wh...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!