0

I am trying to add Liquidity to a locally deployed pancakeswap instance. When calling addLiquidity I get:

ProviderError: Error: VM Exception while processing transaction: reverted with reason string 'ds-math-sub-underflow'

I've tried everything on: UniswapV2 addLiquidity revert ds-math-sub-underflow, as well as any other post I could find.

My Code:

async function main() {
  const { deployer } = await getNamedAccounts();

  const PancakeFactory = await hre.ethers.getContract("PancakeFactory");

  const PancakeRouter = await hre.ethers.getContract("PancakeRouter");
  const routerAddress = PancakeRouter.address;

  const Token1 = await ethers.getContractFactory("Token");
  const token1 = await Token1.deploy("Token", "TKN", 9999999999);

  const Token2 = await ethers.getContractFactory("Token2");
  const token2 = await Token2.deploy("Token2", "TKN2", 88888888);

  const tx = await PancakeFactory.createPair(token1.address, token2.address);
  var pairAddress = await PancakeFactory.getPair(
    token1.address,
    token2.address
  );

  await token1.transfer(pairAddress, 200);
  await token2.transfer(pairAddress, 200);

  var addr1Balance = await token1.balanceOf(deployer);
  var addr2Balance = await token2.balanceOf(deployer);

  await token1.approve(routerAddress, 100);
  await token2.approve(routerAddress, 100);

  var t1addr = token1.address;
  var t2addr = token2.address;

  console.log(`
  *****************************
  Deployer: ${deployer}
  Factory:  ${PancakeFactory.address} 
  Router:   ${routerAddress}
  Token:    ${token1.address}
  Token2:   ${token2.address}
  T1Bal:    ${addr1Balance.toString()}
  T2Bal:    ${addr2Balance.toString()}
  Pair:     ${pairAddress}
  *****************************
  `);
  var deadline = Math.floor(Date.now() / 1000) + 60 * 10;

  const addLiquidityResult = await PancakeRouter.addLiquidity(
    t1addr,
    t2addr,
    10,
    10,
    10,
    10,
    deployer,
    deadline
  );
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });

Thanks in advance for any assistance.

TNAR

1 Answer 1

2

Posting for anyone that runs across this issue:

Digging into the Pancake Source, I discovered there is a MINIMUM_LIQUIDITY setting, which is set to 1000. Setting the addLiquidity values from 10 to > 1000 cured the error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.