Pay gas in ERC20 tokens (2024)

Overview

This tutorial demonstrates how to use the Biconomy Smart Account to perform a transaction with ERC-20 token payment. The provided code includes creating a Biconomy Smart Account, encoding a function call, building a transaction, and sending it with ERC-20 token payment.

Prerequisites

  • Node.js installed on your machine
  • A Biconomy API key and Bundler url, get from dashboard

For this tutorial we are going to mint and NFT on Amoy, this means we can use the following:

  • bundlerUrl -->
    https://bundler.biconomy.io/api/v2/80002/nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44
  • preferred ERC20 token for gas payment --> 0xf555F8d9Cf90f9d95D34488e6C852796D9acBd31 (USDC)
  • nft address --> 0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e

Step 1: Create Biconomy Smart Account and Encode Function Call

const smartWallet = await createSmartAccountClient({ signer, // can be viem client or ethers signer bundlerUrl, biconomyPaymasterApiKey,}); const encodedCall = encodeFunctionData({ abi: parseAbi(["function safeMint(address _to)"]), functionName: "safeMint", args: [recipient],});

Create a Biconomy Smart Account instance and encode the function call for the transaction.

Step 2: Build the Transaction

const nftAddress = "0x1758f42Af7026fBbB559Dc60EcE0De3ef81f665e";const transaction = { to: nftAddress, data: encodedCall,};

Build the transaction with the encoded function call.

Step 3: Send Transaction with ERC-20 Preferred Token Payment

const { wait } = await smartWallet.sendTransaction(transaction, { paymasterServiceData: { mode: PaymasterMode.ERC20, preferredToken: "0xf555F8d9Cf90f9d95D34488e6C852796D9acBd31", },}); const { receipt: { transactionHash }, userOpHash, success,} = await wait(); if (success == "true") { console.log("UserOp receipt", receipt); console.log("Transaction receipt", receipt.receipt);}

You can choose from a list of ERC20 tokens to pay for the gas, not giving a preferred token will allow you to select from current supported tokens.

const feeQuotesResponse = await smartWallet.getTokenFees(transaction, { paymasterServiceData: { mode: PaymasterMode.ERC20 },}); const userSelectedFeeQuote = feeQuotesResponse.feeQuotes?.[0]; // Allow user to pick desired token const { wait } = await smartWallet.sendTransaction(transaction, { paymasterServiceData: { mode: PaymasterMode.ERC20, feeQuote: userSelectedFeeQuote, spender: feeQuotesResponse.tokenPaymasterAddress, maxApproval: true, },}); const { receipt: { transactionHash }, userOpHash, success,} = await wait(); if (success == "true") { console.log("UserOp receipt", receipt); console.log("Transaction receipt", receipt.receipt);}

Send the transaction using the Biconomy Smart Account, specifying ERC-20 token payment details. Wait for the transaction to be mined and get the transaction hash.

That's it! You've successfully performed a transaction with ERC-20 token payment using the Biconomy Smart Account. Feel free to customize this example based on your specific use case.

Pay gas in ERC20 tokens (2024)
Top Articles
California's Castle Doctrine: Protecting Yourself During a Home Invasion | LawInc
18 Fun Summer Activities for Families on a Budget
My Arkansas Copa
Po Box 7250 Sioux Falls Sd
Unit 30 Quiz: Idioms And Pronunciation
The Largest Banks - ​​How to Transfer Money With Only Card Number and CVV (2024)
Avonlea Havanese
Blanchard St Denis Funeral Home Obituaries
Tj Nails Victoria Tx
How To Get Free Credits On Smartjailmail
Words From Cactusi
Barstool Sports Gif
Overzicht reviews voor 2Cheap.nl
Acbl Homeport
Azeroth Pilot Reloaded - Addons - World of Warcraft
Bros Movie Wiki
Voyeuragency
Funny Marco Birth Chart
Mzinchaleft
NHS England » Winter and H2 priorities
Unity - Manual: Scene view navigation
Swgoh Blind Characters
Raz-Plus Literacy Essentials for PreK-6
Governor Brown Signs Legislation Supporting California Legislative Women's Caucus Priorities
Hampton University Ministers Conference Registration
How to Make Ghee - How We Flourish
Idle Skilling Ascension
Kirk Franklin Mother Debra Jones Age
Kroger Feed Login
4Oxfun
JVID Rina sauce set1
Marokko houdt honderden mensen tegen die illegaal grens met Spaanse stad Ceuta wilden oversteken
Craftsman Yt3000 Oil Capacity
Kamzz Llc
Nail Salon Open On Monday Near Me
4083519708
Laff Tv Passport
Mckinley rugzak - Mode accessoires kopen? Ruime keuze
Second Chance Apartments, 2nd Chance Apartments Locators for Bad Credit
At Home Hourly Pay
13 Fun & Best Things to Do in Hurricane, Utah
Pain Out Maxx Kratom
Here's Everything You Need to Know About Baby Ariel
Lady Nagant Funko Pop
Crigslist Tucson
552 Bus Schedule To Atlantic City
Diccionario De Los Sueños Misabueso
Sam's Club Fountain Valley Gas Prices
Tenichtop
Latest Posts
Article information

Author: Jamar Nader

Last Updated:

Views: 5425

Rating: 4.4 / 5 (75 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Jamar Nader

Birthday: 1995-02-28

Address: Apt. 536 6162 Reichel Greens, Port Zackaryside, CT 22682-9804

Phone: +9958384818317

Job: IT Representative

Hobby: Scrapbooking, Hiking, Hunting, Kite flying, Blacksmithing, Video gaming, Foraging

Introduction: My name is Jamar Nader, I am a fine, shiny, colorful, bright, nice, perfect, curious person who loves writing and wants to share my knowledge and understanding with you.