Estoy tratando de usar uniswap v3 para agregar intercambios a mi proyecto. Cada vez que llamo a la función en mi contrato desde la interfaz, el valor es 0 ETH en metamask y solo se paga la tarifa. He intentado todas las formas en que puedo pensar en convertir la cadena de entrada en wei, gwei, hexadecimal, etc. y siempre es 0 en la página de transacciones de metamask.
function transferApprove(uint _amountIn, address _routerAddress) internal { TransferHelper.safeTransferFrom( ETH, msg.sender, address(this), _amountIn ); TransferHelper.safeApprove(WETH9, _routerAddress, _amountIn); } function swapExactInputSingle(uint _amountIn) external returns (uint amountOut) { require(_amountIn > 0, "cannot swap 0 ETH"); emit value(_amountIn); transferApprove(_amountIn, UNISWAP_V3_ROUTER); ISwapRouter.ExactInputSingleParams memory params = ISwapRouter .ExactInputSingleParams({ tokenIn: ETH, tokenOut: WETH9, fee: 3000, recipient: msg.sender, deadline: block.timestamp, amountIn: _amountIn, amountOutMinimum: 0, sqrtPriceLimitX96: 0 }); amountOut = uniswapRouter.exactInputSingle(params); }/////SECCIÓN JAVASCRIPT
const sendSwap = async () => { try{ if(!window.ethereum) return alert("Please install metamask"); const parsedAmount = ethers.utils.parseUnits(amount, 18); const provider = new ethers.providers.Web3Provider(window.ethereum, "any") const signer = provider.getSigner() const swap = new ethers.Contract(SwapAddress.address, SwapAbi.abi, signer) const accounts = await ethereum.request({method:'eth_requestAccounts'}) setCurrentAccount(accounts[0]) setSwap(swap) console.log(parsedAmount) const transactionHash = await swap.swapExactInputSingle(parsedAmount) setIsLoading(true); await transactionHash.wait(); setIsLoading(false); console.log({transactionHash}); } catch (error) { console.log(error); }