Enabling users to pay gas fees with ERC-20 tokens enhances the user experience by removing the need to hold native tokens like ETH. This is especially useful for onboarding users who primarily hold stable coins or other ERC-20 assets.
import { createGelatoSmartWalletClient, erc20 } from "@gelatonetwork/smartwallet";import { gelato, kernel, safe } from "@gelatonetwork/smartwallet/accounts";import { createWalletClient, createPublicClient, http, type Hex } from "viem";import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
2
Setup Smart Account
You can set up a Smart Account as per your needs. In the case of Gelato, the Gelato Smart Account address will be the same as your EOA, enabling EIP-7702 features.
When using a Kernel Account, you have the option to use EIP-7702 and ERC-4337 together. Setting eip7702 parameter to true will make your EOA the sender address. However, if you want to utilize existing Kernel accounts only with ERC-4337 features, set it to false.
For a Safe Account, it defaults to the ERC-4337 standard. You can either use an already deployed Safe Account or create a new one, while enhancing the experience with Gelato’s best-in-class infrastructure.
const privateKey = (process.env.PRIVATE_KEY ?? generatePrivateKey()) as Hex;const owner = privateKeyToAccount(privateKey);const publicClient = createPublicClient({ chain: baseSepolia, transport: http(),});const account = await kernel({ owner, client: publicClient, eip7702: false, // set to true if you want to use EIP-7702 with ERC-4337});
Quickly get started by creating a wallet client using createWalletClient from viem with local account for your specified network. Checkout supported networks here.
To send transactions with ERC-20 gas payments, select ERC20 as the payment method and use one of the supported tokens for gas fees. You can check the list of supported ERC-20 tokens here.