Manage ERC-20 token allowances to allow smart contracts to spend tokens on behalf of a user. This guide covers checking and setting allowances using , , and .

Prerequisites

You need Web3 libraries configured with Para authentication.

Setup Web3 Libraries

Manage Token Allowances

import { ethers } from "ethers";

const ERC20_ABI = [
  "function allowance(address owner, address spender) view returns (uint256)",
  "function approve(address spender, uint256 amount) returns (bool)",
];

async function checkAllowance(
  provider: ethers.Provider,
  tokenAddress: string,
  owner: string,
  spender: string
) {
  const contract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
  const allowance = await contract.allowance(owner, spender);
  return allowance;
}

async function approveToken(
  signer: ethers.Signer,
  tokenAddress: string,
  spender: string,
  amount: string
) {
  const contract = new ethers.Contract(tokenAddress, ERC20_ABI, signer);
  const tx = await contract.approve(spender, ethers.parseEther(amount));
  await tx.wait();
  return tx;
}