Paymaster
Description of your new file.
💡 A Paymaster defines the gas abstraction logic for a smart contract wallet.
What is Gas Abstraction?
Gas abstraction enables:
- Gas payment in alternative ERC20 tokens
- Gasless transactions (requiring gas sponsorship from a Paymaster)
Key Features of Paymasters
-
Modular Design: ERC-4337 allows a
UserOperation
to choose any Paymaster by specifying its address and input parameters in thepaymasterAndData
field. -
Smart Contract Implementation: A Paymaster is essentially a smart contract implemented by a dApp. It uses custom logic in the
validatePaymasterOp
function, which the Bundler calls to selectively pay gas for UserOperations. -
ETH Deposits: Paymasters must deposit Ethereum on the Entry Point Contract to pay for gas for UserOperations.
-
Staking Requirement: In addition to gas deposits, Paymasters must stake ETH on the Entry Point Contract. This stake acts as an anti-spam measure rather than being slashed.
Paymaster Interface
The Paymaster interface exposes two crucial functions:
1. validatePaymasterOp
- Defines the logic for gas abstraction
- Ensures sufficient balance (e.g., checking if the wallet has enough ERC20 tokens for gas payment)
- Called before the execution of a UserOperation
- Follows the principle of separating validation from execution
2. postOp
- Called at the final step of a smart contract wallet function call
- Can revert the function call if the wallet lacks sufficient ERC20 balance to reimburse the Paymaster
- Double-checks gas sufficiency after function execution
- Gas is still deducted even if a function call fails at this step