我已经为sushiswap建立了自己的智能合同,当我试图从WETH换到DAI时,交易成功了,但我没有得到任何DAI,似乎只花了汽油。
这是我的智能合同代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract Uniswap {
address private constant UNISWAP_V2_ROUTER = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506;
address private constant WETH = 0xd0A1E359811322d97991E03f863a0C30C2cF029C;
function swap(
address _tokenIn,
address _tokenOut,
uint256 _amountIn
) external {
IERC20(_tokenIn).transferFrom(msg.sender, address(this), _amountIn);
IERC20(_tokenIn).approve(UNISWAP_V2_ROUTER, _amountIn);
address[] memory path = new address[](2);
path[0] = _tokenIn;
path[1] = _tokenOut;
address recipient = address(this);
IUniswapV2Router(UNISWAP_V2_ROUTER).swapExactTokensForTokens(
_amountIn,
0,
path,
recipient,
block.timestamp
);
}
}
interface IUniswapV2Router {
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
}我在两个不同的testnet上做了测试: Ropsten和Kovan,实际上,这是相同的错误发生。
在内部错误中,似乎有两个与WETH的交织,就像交换完成后被取消一样。
这里是TX:
以太扫描tx

发布于 2022-08-27 08:13:41
尝试增加最后期限,这是swapExactTokensForTokens的最后一个参数
为前5加5。试试这个。如果它不能工作,与我分享事务散列,以更好地分析。
https://stackoverflow.com/questions/73502069
复制相似问题