Warning! Error encountered during contract execution [execution reverted] (Base Layer2)

I'm trying to execute a swap using Uniswap V2 SDK in a Node.js environment. However, when I run the code below, I receive the following error:
“Warning! Error encountered during contract execution [execution reverted]”

async function createPair() {
  const pairAddress = Pair.getAddress(TOKEN, WETH9[TOKEN.chainId]);

  const pairContract = new ethers.Contract(pairAddress, UniswapV2PoolAbi, provider);

  const reserves = await pairContract['getReserves']();
  const [reserve0, reserve1] = reserves;

  const reserve0Parsed = BigInt(reserve0.toString()).toString();
  const reserve1Parsed = BigInt(reserve1.toString()).toString();

  const tokens = [TOKEN, WETH9[TOKEN.chainId]];
  const [token0, token1] = tokens[0].sortsBefore(tokens[1]) ? tokens : [tokens[1], tokens[0]];

  const pair = new Pair(
    CurrencyAmount.fromRawAmount(token0, reserve0Parsed),
    CurrencyAmount.fromRawAmount(token1, reserve1Parsed)
  );

  return pair;
}

async function swap() {
  const amountIn = ethers.parseEther('0.00001').toString();
  const slippageTolerance = new Percent('50', '10000');
  const to = WALLET_ADDRESS;
  const signer = new ethers.Wallet(WALLET_SECRET);
  const account = signer.connect(provider);
  const command = '0x08';
  const deadline = 2 * 10 ** 10;
  const fromEoa = true;

  const uniswap = new ethers.Contract(
    swapRouterAddress,
    [
      'function execute(bytes calldata commands, bytes[] calldata inputs, uint256 deadline) external payable returns (bytes[] memory outputs)',
    ],
    account
  );

  const pair = await createPair();
  const route = new Route([pair], WETH9[TOKEN.chainId], TOKEN);
  const trade = new Trade(
    route,
    CurrencyAmount.fromRawAmount(WETH9[TOKEN.chainId], amountIn),
    TradeType.EXACT_INPUT
  );

  const amountOutMin = trade.minimumAmountOut(slippageTolerance).toExact();

  const amoutOut = ethers.parseEther(amountOutMin);

  const pathData = ethers.solidityPacked(
    ['address', 'address'],
    [WETH9[ChainId.BASE].address, TOKEN.address]
  );

  const v2Calldata = ethers.AbiCoder.defaultAbiCoder().encode(
    ['address', 'uint256', 'uint256', 'bytes', 'bool'],
    [to, amountIn, amoutOut, pathData, fromEoa]
  );

  const tx = await uniswap.execute(command, [v2Calldata], deadline, {
    value: amountIn,
    gasPrice: ethers.parseUnits('0.15', 'gwei'),
    gasLimit: 100000,
    chainId: ChainId.BASE,
    from: WALLET_ADDRESS,
  });

  console.log(`Transaction hash: ${tx.hash}`);
  const receipt = await tx.wait();

  console.log(`Transaction was mined in block ${receipt.blockNumber}`);
}

Here's a brief overview of what the code does:

  1. Imports necessary Uniswap V2 SDK components and ethers.js.
  2. Sets up provider with a QuickNode HTTP endpoint.
  3. Defines wallet address and secret.
  4. Creates a swapRouterAddress and a TOKEN.
  5. Defines a swap function that executes a swap using Uniswap V2.
  6. Inside the swap function:

  • a. Sets up amountIn, slippage tolerance, recipient address, and signer.
  • b. Creates a Uniswap contract instance.
  • c. Calls createPair() to create a Uniswap pair.
  • d. Calculates trade details and encodes calldata.
  • e. Executes the swap with Uniswap's execute() function.

I suspect the issue might be related to how I'm encoding the data or setting up the transaction. Can someone help me understand why I'm getting this error and how I can resolve it?
Also check some of my transactions: https://basescan.org/tx/0x5a4ccdf8476eac2b41e00927cae6cb5817cff4acfb1c4746244ebd3d22784e9e

https://preview.redd.it/g8yzv7rhfhuc1.png?width=1197&format=png&auto=webp&s=d1620f7a2f0ce8ce994f0358e7090d24b75a8a94

reddit image

1 thought on “Warning! Error encountered during contract execution [execution reverted] (Base Layer2)”

  1. Uniswap Reddit Auto mod post

    1. Never share your Secret Recovery Phrase with any site or person. Do not enter your Secret Recover Phrase into a pop-up window.
      Verify links are legitimate. Scammers often use these tactics.

    2. Beware of fake websites. The official website for Uniswap is https://uniswap.org/

    3. Beware of fake Twitter/X accounts. The official Twitter is https://twitter.com/Uniswap

    4. Our official Discord is https://discord.gg/D2zmtd3cUZ

    5. Uniswap Support will never DM you. We only handle support through support@uniswap.org and https://support.uniswap.org/hc/en-us/requests/new.
      Scammers use DMs to try and get access to your wallet.

    6. Do not click on suspicious links or files. This can lead to your device security being compromised.

    7. Do not “sync” or “validate” your wallet with any websites or forms. This is a scam. Never sync and share: QR Codes, Secret Recovery phrases, private keys, etc.

    8. Uniswap Labs has no plans for an airdrop, regardless of any information you may have seen elsewhere.

    I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

Comments are closed.