Contract-Deployment

如何使用 ethers.js 模組在 uniswap/sdk Javascript 上設置自定義 gwei / gas 價格?

  • August 3, 2021

我正在建構一個應用程序來使用 ethers 模組在 uniswap 上進行交易。我使用以下程式碼創建了合約並導入了路由器和工廠合約:

const factory = new ethers.Contract(
 addresses.factory,
 ['event PairCreated(address indexed token0, address indexed token1, address pair, uint)'],
 account
);
const router = new ethers.Contract(
 addresses.router,
 [
   'function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts)',
   'function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)'
 ],
 account
);

現在我使用 swapExactETHForTokens 函式進行交易:

       const tx = await router.swapExactETHForTokens(
           amountOutMin // Slippage is set here too, if not wanted change to => amounts[1]
           [tokenIn, tokenOut],
           addresses.recipient,
           Date.now() + 1000 * 60  //1 minute expiry time for contract.
       );

我的問題是如何在我的交易中實現自定義 gwei,在 gwei 的 uniswap 交易功能中似乎根本沒有爭論。

您可以在任何智能合約函式呼叫中添加一個可選的最終參數,它是一個對象,可以包含諸如value(用於將 ETH 附加到交易,這絕對是您在呼叫時需要做的swapExactETHForTokens),以及gasPrice(用於設置天然氣價格,以 gwei 為單位)。

const tx = await router.swapExactETHForTokens(
 amountOutMin,
 [await router.WETH(), tokenOut], // swapping WETH for a token
 addresses.recipient,
 Date.now() + 1000 * 60,
 { 
   value: "1000000000000000000", // 1 eth
   gasPrice: "100000000000" // 100 gwei
 }
);

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