Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Ghassanee opened this issue Apr 14, 2024 · 2 comments

Comments

@Ghassanee
Copy link

Ghassanee commented Apr 14, 2024

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

Screenshot 2024-04-14 at 18-36-42 Tenderly Dashboard

@Asadere1
Copy link

Hey @Ghassanee

How are you ?
Did you find the issue ??

@Si-sivan
Copy link

hello @Ghassanee have you solved this problem?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants