Recommended resources
The freely available resources this lesson will direct you to.
Hello! Welcome back to our series on modern Ethereum development.
In our last lesson, we explored how to create gasless transactions using the EIP-2771 meta-transaction pattern. We saw how a relayer could submit a transaction on a user's behalf, which is a powerful way to improve user experience. However, we also noted its main limitation: every target smart contract needs to be specifically built to support a trusted forwarder.
Today, we take the next major step in solving the gas problem. We will address the learning outcome: Build a gasless transaction flow using Account Abstraction (ERC-4337) with a Paymaster.
ERC-4337, or "Account Abstraction," is a fundamental shift. Instead of relying on special logic within each dApp's contract, it introduces a new, standardized transaction flow at the protocol level. With this standard, a user's account itself becomes a smart contract, unlocking capabilities far beyond what a standard Externally Owned Account (EOA) can do.
One of the most powerful of these capabilities is transaction sponsorship via a Paymaster. This lesson will demystify the ERC-4337 architecture and guide you through building a practical gasless flow where a Paymaster service covers the transaction fees for your users.
By the end of this lesson, you will be able to:
- Describe the key components of the ERC-4337 architecture:
UserOperation, Bundler, EntryPoint, Smart Account, and Paymaster. - Explain how a Paymaster sponsors transactions by interacting with the EntryPoint contract.
- Configure a Paymaster service to sponsor transactions for specific contracts.
- Implement a front-end application that allows a user to execute a gasless transaction using a Smart Account and a Paymaster.
1. The Architecture of Account Abstraction (ERC-4337)
EIP-2771 introduced a relayer. ERC-4337 formalizes and expands this concept with a more robust set of actors working together. The entire system is designed to process a user's intent, packaged as a UserOperation, without requiring the user to directly submit a traditional Ethereum transaction.
Here is a high-level overview of the transaction flow:

The key components are:
- UserOperation: A data structure that represents the user's transaction intent. Think of it as a meta-transaction, but standardized at the protocol level. It includes the sender (the user's Smart Account), the target call data, and gas parameters.
- Smart Account: The user's account, which is a smart contract itself. It is responsible for verifying signatures and executing transactions.
- Bundler: A service that gathers
UserOperationobjects from a mempool, bundles them into a single Ethereum transaction, and sends it to theEntryPointcontract. The Bundler pays the actual ETH for the gas. - EntryPoint: A global, singleton smart contract that acts as the central coordinator. It verifies the bundled
UserOperationsand orchestrates their execution. - Paymaster: An optional smart contract that can agree to pay for a user's transaction. This is the component that enables gasless experiences.
To get a solid conceptual foundation of how these pieces fit together, the following video provides an excellent deep dive.
This video from Alchemy provides a clear, conceptual walkthrough of the five core components of ERC-4337 and their interactions.
Please watch the following segments: Introduction to ERC-4337 Components (00:00 - 01:32): Get a high-level overview of the five key roles. User Operation Structure (03:39 - 04:46): Understand what a UserOperation object contains. Notice the payMaster field, which is crucial for our lesson. Bundler's Role and Flow (04:46 - 07:09): Learn what the Bundler does and how it packages UserOperations to be sent to the EntryPoint.
2. How the Paymaster Enables Gasless Transactions
Now that you have an overview of the architecture, let's zoom in on the Paymaster. Its role is to sponsor transactions, but how does it do this securely?
The process is orchestrated entirely by the EntryPoint contract.

Here is the step-by-step flow when a Paymaster is involved:
- User Signs: The user signs a
UserOperationthat specifies a Paymaster they wish to use. - Bundler Submits: The Bundler sends the
UserOperationto theEntryPoint. - Validation Phase: The
EntryPointperforms a series of checks. Crucially, it makes a call to the specified Paymaster'svalidatePaymasterUserOpfunction. This function contains the Paymaster's logic. It can check, for example:- Is this
UserOperationcalling a function on a contract I've agreed to sponsor? - Has this user exceeded their daily gasless transaction limit?
- Is the dApp's API key valid?
- Is this
- Payment Agreement: If the Paymaster's validation logic passes, it signals its agreement to pay. To guarantee payment, the Paymaster must have already deposited ETH into the
EntryPointcontract. - Execution Phase: The
EntryPointproceeds to execute the user's intended action by calling the user's Smart Account. - Post-Execution & Compensation: After the transaction is complete, the
EntryPointcalls the Paymaster'spostOpfunction. This allows the Paymaster to perform any post-transaction logic. Finally, theEntryPointreimburses the Bundler for the gas cost using the funds previously deposited by the Paymaster.
From your perspective as a front-end developer, this is similar to interacting with a backend API that has rate limits or requires an API key. The Paymaster acts as a configurable "gas API."
The following guide shows how a real-world Paymaster service (Coinbase's) is configured with policies like contract allowlisting and spending limits.
Gasless transactions with paymaster - Base Documentation
This documentation from Base provides a clear, practical guide on how to configure a Paymaster service. It demonstrates the kind of policies you can enforce to control costs.
Read the sections 'Set Up a Base Paymaster & Bundler', 'Allowlist a Sponsorable Contract', and 'Global & Per User Limits'. Focus on understanding the configuration options available, as these represent the 'policies' a Paymaster can enforce.
3. Practical Implementation: Building a Gasless Minting Flow
Theory is essential, but the goal is to build. We will now walk through a complete, practical example of creating a gasless application using ERC-4337. We'll use the Thirdweb SDK, which provides a high-level, developer-friendly abstraction over the ERC-4337 components, making it perfect for integrating into a front-end application.
This video tutorial will guide you through building a Next.js app where users can get a Smart Account tied to their email and then mint an NFT completely gas-free, with a Paymaster sponsoring the transaction.
Create ERC-4337 Smart Wallets with Account Abstraction - Quick & Simple
This comprehensive tutorial from Thirdweb demonstrates an end-to-end implementation of an ERC-4337 gasless application. It covers everything from contract deployment and Paymaster configuration to the final front-end code.
This is the core practical exercise for the lesson. Follow along with the video to understand the complete workflow: Setup (02:49 - 08:19): Watch how to deploy an AccountFactory contract and, most importantly, how to configure a Thirdweb API key to act as a Paymaster. Pay close attention to how specific contract addresses are allowlisted for gas sponsorship. This is the practical application of the concepts from the Base documentation. Simple Integration (08:19 - 16:53): See how to integrate a smart wallet using a simple UI component. The key part is the configuration where gasless: true is set and the factoryAddress is provided. Observe the demonstration of a user claiming an NFT without signing a transaction or paying gas. Custom Flow (Optional but Recommended, 16:53 - end): The rest of the video builds a more custom UI. This part is particularly relevant given your front-end background, as it shows how to create a bespoke login flow that abstracts the blockchain away even further. It also demonstrates batch transactions, another powerful feature of Smart Accounts.
The video demonstrates a complete flow that you can replicate:
- Backend/Infra Setup: You configure a service to act as your Paymaster, defining the rules for sponsorship.
- Frontend Integration: In your dApp, you use an SDK to equip users with a Smart Account. The SDK is configured with the Paymaster's details.
- User Action: The user performs an action (e.g., clicks "Claim NFT"). The SDK constructs the
UserOperation, gets it sponsored by the Paymaster, and sends it to a Bundler. The user experiences a seamless, gas-free interaction.
4. The Complete Flow Revisited
Let's tie everything together. The article below provides a very detailed, step-by-step breakdown of the entire process, from the UserOperation being created on the front end to the EntryPoint contract executing the final calls on-chain. It's an excellent resource for connecting the high-level SDK usage to the low-level protocol mechanics.
Web3: A Deep Dive Into ERC-4337 and Gasless ERC-20 ...
This Medium article by Brian onchain offers a linear, in-depth explanation of the entire ERC-4337 transaction lifecycle with an ERC-20 Paymaster.
Read 'Step 3: Bundler Sends Transaction to EntryPoint.sol' and 'Step 4: EntryPoint Contract Operations'. These sections detail the on-chain mechanics. Focus on: The requirement for the Paymaster to deposit native currency with the EntryPoint. The sequence of calls made by the EntryPoint: validateUserOp, validatePaymasterUserOp, execute, and postOp.
This deep dive reinforces that while SDKs make it easy, a sophisticated and secure sequence of events is happening on-chain to make the gasless experience possible.
Conclusion
In this lesson, we've transitioned from the application-specific EIP-2771 pattern to the protocol-level solution of ERC-4337 Account Abstraction. You've learned how this new architecture enables powerful features like gas sponsorship through a dedicated component, the Paymaster.
Key Takeaways:
- Account Abstraction (ERC-4337) standardizes meta-transactions by introducing a new transaction type (
UserOperation) and a set of actors (Bundlers, EntryPoint, Smart Accounts) to process it. - A Paymaster is a smart contract that can sponsor a user's
UserOperation, enabling gasless transactions. It works by pre-funding theEntryPointcontract and implementing validation logic. - The EntryPoint is the central orchestrator. It verifies the user's intent, checks with the Paymaster, executes the transaction, and ensures the Bundler is compensated for gas.
- As a dApp developer, you can use services and SDKs (like Thirdweb, Alchemy, or Pimlico with
permissionless.js) to easily integrate Paymaster functionality, configure sponsorship policies, and provide seamless user experiences.
Next Lesson Preview:
You have now implemented two distinct patterns for gasless transactions: the relayer-based EIP-2771 and the native account abstraction of ERC-4337. In our next lesson, we will directly compare these two approaches, analyzing their trade-offs, security considerations, and ideal use cases to help you decide which pattern is right for your project.