One of the biggest UX enhancements unlocked by Base Account is the ability for app developers to sponsor their users’ transactions. If your app supports Base Account, you can start sponsoring your users’ transactions by using standardized Paymaster service communication enabled by new wallet RPC methods.
This guide is specific to using Base Account, you can find our more about using Paymasters with Base in the Base Go Gasless page.
Set up your Paymaster service
As a prerequisite, you’ll need to obtain a Paymaster service URL from a Paymaster service provider.
We’ll use Coinbase Developer Platform as a Paymaster service provider, currently offering up to $15k in gas credits as part of the Base Gasless Campaign.
ERC-7677-Compliant Paymaster Providers
If you choose to use a different Paymaster service provider, ensure they are ERC-7677-compliant.
Once you have signed up for Coinbase Developer Platform, you get your Paymaster service URL by navigating to Onchain Tools > Paymaster as shown below:
Should you create a proxy for your Paymaster service?
We recommend using a proxy to protect the Paymaster service URL to prevent it from being exposed/leaked on a frontend client.
For local development, you can use the same URL for the Paymaster service and the proxy.
Once you have your Paymaster service URL, you can proceed to setting up your contracts allowlist. This is a list of contracts and function calls that you want to be sponsored by the Paymaster.
Congrats! You’ve set up your Paymaster service and contracts allowlist. It’s time to set up the Base Account SDK.
You can also choose to create custom advanced policies !
You can create a willSponsor
function to add some extra validation if you need more control over the policy enforcement.
willSponsor
is most likely not needed if you are using Coinbase Developer Platform as it has built-in policy enforcement features,
but know that this is still possible if you need it.
Send transactions with Paymaster service capability
Once you have your Paymaster service set up, you can now use wallet_sendCalls
with paymaster capabilities to sponsor transactions.
Pass in the proxy URL
If you set up a proxy in your app’s backend as recommended in step (1) above, you’ll want to pass in the proxy URL you created.
Here’s how to send a sponsored transaction using the wallet_sendCalls
RPC method:
You can also batch multiple transactions and have them all sponsored:
Before sending sponsored transactions, you can check if the wallet supports paymaster services:
That’s it! Base Account will handle the rest. If your Paymaster service is able to sponsor the transaction, in the UI Base Account will indicate to your user that the transaction is sponsored.