如何在Uniswap上执行闪电兑换(Flash Swaps)

如何在Uniswap上执行闪电兑换(Flash Swaps), 即在一笔利用从 Uniswap

img

<center>Uniswap Flash Swap</center>

上一篇文章中,我们了解了如何使用Uniswap实现代币之间的兑换。

在这篇文章中,我们将通过探讨闪电兑换 (Flash Swaps)来向前推进一个层次。

在阅读本文之前,强烈建议你阅读之前之前的文章了解 Uniswap 的运行规则。

什么是闪电贷/闪电兑换?

与传统贷款不同,在闪电贷中,在一个交易里完成资金借入和归还。这一点是必须的。

Defi里,交易者(通常通过机器人)不断寻找套利机会,通过在为同一资产提供不同价格的平台之间进行交易来获得利益。

这就是闪电贷出现的地方(通常是)。

闪电贷的帮助下,交易者可以借到一大笔钱来执行套利交易。闪电贷和闪电兑换其实是一回事。

闪电贷套利是如何运作的?

img

考虑一种情况,Ethan从书店花10美元买了一本书,然后以20美元的价格将这本书卖给Jennifer。在这种情况下,Ethan用自己的钱买了一本书,然后通过卖给Jennifer直接翻倍。

这正是交易套利的运作方式。

但与Ethan 用自己的钱从书店买书不同的是,在这里,我们可以简单地使用闪电贷借10美元,然后执行交易,类似于卖书,然后偿还贷款(是的,所有这些都在一个交易中)。

让我们潜心编写我们自己的Flash兑换合约,并进行测试吧!😎

1. 创建项目并安装依赖

在命令行终端(CLI)上使用以下命令来初始化项目:

mkdir Flash_swap && cd Flash_swap
npm init -y

现在,安装我们将在项目中使用的依赖项。

使用下面提供的命令,在命令行终端上运行来安装它们:

npm install --save hardhat @nomiclabs/hardhat-ethers @nomiclabs/hardhat-waffle ethers @uniswap/v2-core dotenv hardhat chai

2. 初始化Hardhat项目

在你的 CLI 上运行 npx hardhat 命令,并创建一个空的 hardhat 配置文件(然后定制 Hardhat配置),因为我们要从头开始构建一切。

因为我们要主网的 fork 来测试Flashswap。因此,你的Hardhat配置应该看起来类似于这样:

img

注意:用你自己的AlchemyAPI密钥替换URL中的&lt;key>部分。

另外,如果你不了解主网fork,请阅读我们的这篇文章,然后再跟着这篇文章走。

3. 为闪电兑换写一个智能合约

为合约和测试创建新目录,以便更好地组织代码,在你的CLI中使用以下代码:

mkdir contracts && mkdir tests

为了编写flash swap合约,在合约目录内创建一个文件,并将其命名为flashswap.sol

编写智能合约:

首先,导入所需的接口并创建一个名为 flashSwap的合约。

我们将导入Uniswap的接口,以使用其功能。你可以使用这个链接获得该接口文件。

我们还导入了IUniswapV2Callee接口。当我们执行flash swap时,Uniswap将调用这个函数。技术上来说,这是Uniswap将调用的回调函数。

之后代码看起来应该类似于这样:

img

接下来,编写我们的flashSwap合约,它继承自IUniswapV2Callee。Solidity支持智能合约之间的继承,多个合约可以被一个合约继承。从中继承功能的合约被称为基础合约,而继承功能的合约被称为派生合约。

这个合约将有2个功能:

  • testFlashSwap():这是我们要调用的函数,用来触发闪电兑换交易。
  • uniswapV2Call():这是Uniswap合约调用的函数

img

现在编写testFlashSwap 函数:

这个函数将接受2个参数:(A)要从Uniswap借入的代币{地址}和(B)我们想借入的金额。

  • 我们要做的第一件事是,检查_tokenBorrowWETH的配对合约是否存在。我们可...

剩余50%的内容订阅专栏后可查看

点赞 3
收藏 10
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
翻译小组
翻译小组
0x9e64...7c84
大家看到好的文章可以在 GitHub 提 Issue: https://github.com/lbc-team/Pioneer/issues 欢迎关注我的 Twitter: https://twitter.com/UpchainDAO