Web3js

Uniswap V3 - 如何進行多路通話

  • February 2, 2022

我正在使用 Uniswap V3 並想進行 web3 呼叫

  1. exactOutputSingle()
  2. refundETH()

我希望他們進行一次交易,以便讓使用者在錢包上只確認一次。

我知道有從 SwapRouter 派生的 Multicall 契約。那麼如何在 web3 中進行多重呼叫以及如何對多重呼叫的功能進行編碼?

這是一個多呼叫 Uniswap V3 的工作範例:

   var calls = [];
   const swap = swapRouter.methods.exactOutputSingle([token1, 
                                                       token0, 
                                                       fee, 
                                                       owner, 
                                                       deadline, 
                                                       amountOut, 
                                                       quotedAmountIn, 
                                                       0]).encodeABI();

   const refund = swapRouter.methods.refundETH().encodeABI();
   calls.push(swap);
   calls.push(refund);

   try {
       await swapRouter.methods.multicall(calls).send({from: owner, gas: 1000000, value: quotedAmountIn}); 
   } catch(err) {
       console.log(err);
   }

引用自:https://ethereum.stackexchange.com/questions/120580