首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uniswap ETH到ETH交换函数的令牌

Uniswap ETH到ETH交换函数的令牌
EN

Ethereum用户
提问于 2021-02-16 19:22:03
回答 1查看 1.1K关注 0票数 2

UniswapV2Router02.sol有两个有趣的函数,我想把swapExactETHForTokensswapExactTokensForETH结合起来。基本思想是套利,从ETH到令牌,再回到ETH。据我所知,swapExactETHForTokens存款和执行互换,swapExactTokensForETH执行互换和退出。是否可以通过在swapExactETHForTokens的末尾添加退出代码来实现我的想法?

代码语言:javascript
复制
function swapExactETHForTokensForETH(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    virtual
    override
    payable
    ensure(deadline)
    returns (uint[] memory amounts)
{
    require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
    amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);
    require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
    IWETH(WETH).deposit{value: amounts[0]}();
    assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));
    _swap(amounts, path, to);

    // Adding code from swapExactETHForTokens here
    IWETH(WETH).withdraw(amounts[amounts.length - 1]);
    TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
}
EN

回答 1

Ethereum用户

发布于 2021-02-17 05:18:28

从技术上讲,你提出的建议是可能的。也许我会保留这两个函数swapExactETHForTokens & swapExactTokensForETH,并创建一个新函数在单个事务中调用它们,以便根据需要调整函数参数。

然而,如果你的目标是进行套利以获得一些利润,你应该利用不同交易所之间的价格差异。如果你在同一个交易所内进行套利,除非掉期之间的时间足够长,足以影响价格(幸运地增加,否则你会失去价值),否则你就不会有任何利润,但这更像是一种长期投资,而不是套利,显然,你想在同一笔交易中进行这两种掉期交易。

目前,套利通常采用闪存贷款模式:基本思想是侦听不同分散交易所之间的价格差异,然后在一次交易中执行所有这些步骤:

  1. 在DeFi平台D处借入X代币
  2. 在DEX A交换X代币的数量(例如: Uniswap)
  3. 在DEX B交换X代币的数量(例如: Kyber)
  4. 在DeFi平台D退还贷款

这样,您就不需要预先使用以太或令牌来执行所有这些操作。如果你想获得任何利润,A&B之间的价格差异必须高于你支付的贷款和掉期的费用。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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