首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在智能契约中使用swapExactETHForTokens?

如何在智能契约中使用swapExactETHForTokens?
EN

Ethereum用户
提问于 2020-12-06 07:14:12
回答 2查看 14.3K关注 0票数 2

我想使用swapExactETHForTokens在我的智能契约,总是失败的事务与错误,即"execution reverted: UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT"

这是我的密码。

代码语言:javascript
复制
pragma solidity ^0.6.2;

interface IUniswap {
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function WETH() external pure returns (address);
}

contract MyDefi{
    
    IUniswap uniswap;
    
    constructor(address _uniswap) public {
        uniswap = IUniswap(_uniswap);
    }

    function tastSwapExactETHForTokens(
        uint amountOut,
        address token,
        uint deadline
    ) external payable {
        address[] memory path = new address[](2);
        path[0] = uniswap.WETH();
        path[1] = token;
        uniswap.swapExactETHForTokens(
            amountOut,
            path,
            msg.sender,
            deadline
        );
    }
  
}

我试图在rinkeby网络中交换DAI令牌,并从以太扫描网站获得了一个amountOut参数。https://rinkeby.etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D#readContract

有人帮我解决问题吗?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2021-06-21 05:43:11

https://uniswap.org/docs/v2/smart-contracts/router02/在路径所决定的路由上,将确切数量的ETH替换为尽可能多的输出令牌。路径的第一个元素必须是WETH,最后一个元素是输出令牌,任何中间元素都表示要交换的中间对(例如,如果不存在直接对)。

票数 1
EN

Ethereum用户

发布于 2020-12-07 01:36:49

在调用使用{value: msg.value}的函数之前,我们必须键入msg.value。

代码语言:javascript
复制
        uniswap.swapExactETHForTokens{value: msg.value}(
            amountOut,
            path,
            msg.sender,
            deadline
        );
票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/90825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档