Paymaster
想象一下能够为您的协议的用户支付费用!Paymaster是可以补偿其他账户交易的账户。paymasters 的另一个重要用例是方便使用 ERC20 代币支付费用。虽然 ETH 是 zkSync 中的gas代币,但 paymasters 可以提供将 ERC20 代币即时兑换成 ETH 的能力。
如果用户想与付款人互动,他们应该在他们的 EIP712 交易中提供非零paymaster地址。paymaster 的 paymasterInput 字段中提供了 paymaster 的输入数据。
#出纳员验证规则
Tops:
l 验证规则尚未完全执行。
l 即使您的Paymaster目前在工作,如果不遵守以下规则,将来也可能会停止工作。
由于应该允许多个用户访问同一个paymaster,恶意 paymaster可以对Era的系统进行 DoS 攻击。为了解决这个问题,一个类似于EIP4337 信誉评分的系统将会被使用。
与原始 EIP 不同,付款人可以接触任何存储槽。此外,如果满足以下任一条件,出纳员将不会受到限制:
l API 节点验证通过后已经超过 X 分钟(X 的具体值将在后面定义)。
l 读取的槽的顺序与 API 节点上运行期间的顺序相同,并且值已更改的第一个槽是用户的槽之一。这是为了保护Paymaster免受恶意用户的侵害(例如,用户可能已经删除了 ERC20 代币的配额)。
#内置Paymaster流程
虽然一些付款人可以在没有任何用户交互的情况下进行简单的操作(例如,始终为用户支付费用的协议),但有些付款人需要交易发送者的积极参与。一个值得注意的例子是将用户的 ERC20 代币交换为 ETH 的 paymaster,因为它要求用户为 paymaster 设置必要的津贴。
帐户抽象协议本身是通用的,允许帐户和付款人实现任意交互。然而,默认账户 (EOA) 的代码是不变的,但Era仍然希望它们能够参与自定义账户和付款人的生态系统。这就是为什么Era对paymasterInput交易领域进行了标准化,以涵盖 paymaster 功能的最常见用例。
用户的账户可以自由实施或不实施对这些流程的支持。但是,强烈建议保持 EOA 和自定义帐户的界面相同。