如何在Uniswap上执行闪电兑换(Flash Swaps), 即在一笔利用从 Uniswap
- 原文:https://medium.com/uv-labs/flash-swap-5bcdbd9aaa14
- 译文出自:登链翻译计划
- 译者:翻译小组
- 校对:Tiny 熊
- 本文永久链接:learnblockchain.cn/article…
<center>Uniswap Flash Swap</center>
在上一篇文章中,我们了解了如何使用Uniswap实现代币之间的兑换。
在这篇文章中,我们将通过探讨闪电兑换 (Flash Swaps)来向前推进一个层次。
在阅读本文之前,强烈建议你阅读之前之前的文章了解 Uniswap 的运行规则。
与传统贷款不同,在闪电贷中,在一个交易里完成资金借入和归还。这一点是必须的。
在Defi里,交易者(通常通过机器人)不断寻找套利机会,通过在为同一资产提供不同价格的平台之间进行交易来获得利益。
这就是闪电贷出现的地方(通常是)。
在闪电贷的帮助下,交易者可以借到一大笔钱来执行套利交易。闪电贷和闪电兑换其实是一回事。
考虑一种情况,Ethan从书店花10美元买了一本书,然后以20美元的价格将这本书卖给Jennifer。在这种情况下,Ethan用自己的钱买了一本书,然后通过卖给Jennifer直接翻倍。
这正是交易套利的运作方式。
但与Ethan 用自己的钱从书店买书不同的是,在这里,我们可以简单地使用闪电贷借10美元,然后执行交易,类似于卖书,然后偿还贷款(是的,所有这些都在一个交易中)。
让我们潜心编写我们自己的Flash兑换合约,并进行测试吧!😎
在命令行终端(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
在你的 CLI 上运行 npx hardhat
命令,并创建一个空的 hardhat 配置文件(然后定制 Hardhat配置),因为我们要从头开始构建一切。
因为我们要主网的 fork 来测试Flashswap。因此,你的Hardhat配置应该看起来类似于这样:
注意:用你自己的AlchemyAPI密钥替换URL中的<key>
部分。
另外,如果你不了解主网fork,请阅读我们的这篇文章,然后再跟着这篇文章走。
为合约和测试创建新目录,以便更好地组织代码,在你的CLI中使用以下代码:
mkdir contracts && mkdir tests
为了编写flash swap合约,在合约目录内创建一个文件,并将其命名为flashswap.sol
。
编写智能合约:
首先,导入所需的接口并创建一个名为 flashSwap
的合约。
我们将导入Uniswap的接口,以使用其功能。你可以使用这个链接获得该接口文件。
我们还导入了IUniswapV2Callee接口。当我们执行flash swap时,Uniswap将调用这个函数。技术上来说,这是Uniswap将调用的回调函数。
之后代码看起来应该类似于这样:
接下来,编写我们的flashSwap合约,它继承自IUniswapV2Callee。Solidity支持智能合约之间的继承,多个合约可以被一个合约继承。从中继承功能的合约被称为基础合约,而继承功能的合约被称为派生合约。
这个合约将有2个功能:
现在编写testFlashSwap 函数:
这个函数将接受2个参数:(A)要从Uniswap借入的代币{地址}和(B)我们想借入的金额。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!