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
Is Bluehost Codeguard Basic Worth it? Do You Need It? Wbcom Designs
Wertpapiere im Nachlass: Aktien vererben und verschenken
Menards Thermal Fuse
Lowe's Garden Fence Roll
RuneScape guide: Capsarius soul farming made easy
Tx Rrc Drilling Permit Query
Puretalkusa.com/Amac
123 Movies Black Adam
Dityship
Missing 2023 Showtimes Near Lucas Cinemas Albertville
LeBron James comes out on fire, scores first 16 points for Cavaliers in Game 2 vs. Pacers
Reddit Wisconsin Badgers Leaked
Costco Gas Foster City
Erskine Plus Portal
Nashville Predators Wiki
Roster Resource Orioles
Craighead County Sheriff's Department
Pekin Soccer Tournament
Craigslist Mt Pleasant Sc
Mc Donald's Bruck - Fast-Food-Restaurant
Boscov's Bus Trips
Military life insurance and survivor benefits | USAGov
Low Tide In Twilight Ch 52
Craigslist Wilkes Barre Pa Pets
Accuradio Unblocked
Scott Surratt Salary
Toonkor211
Neteller Kasiinod
Baldur's Gate 3 Dislocated Shoulder
Whas Golf Card
Robot or human?
Clark County Ky Busted Newspaper
AI-Powered Free Online Flashcards for Studying | Kahoot!
Pitchfork's Top 200 of the 2010s: 50-1 (clips)
Raisya Crow on LinkedIn: Breckie Hill Shower Video viral Cucumber Leaks VIDEO Click to watch full…
Muziq Najm
Pawn Shop Open Now
Temu Y2K
Tsbarbiespanishxxl
Gym Assistant Manager Salary
Joey Gentile Lpsg
Yakini Q Sj Photos
فیلم گارد ساحلی زیرنویس فارسی بدون سانسور تاینی موویز
412Doctors
How the Color Pink Influences Mood and Emotions: A Psychological Perspective
Craigslist Marshfield Mo
Online TikTok Voice Generator | Accurate & Realistic
Naomi Soraya Zelda
Goosetown Communications Guilford Ct
Kidcheck Login
Psalm 46 New International Version
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.