在Infura上建立闪电贷套利机器人 #2

闪电贷套利机器人

在上一篇文章中我们介绍了我们机器人背后的三个主要概念:套利、基于合约的交易和乐观转账。

在这篇文章中,我们将介绍如何构建一个程序,以观察并执行有利可图的套利交易。

这是我们做的整体流程:

套利交易流程

1. 程序(Bot)正在观察Uniswap和Sushiswap上ETH-Dai配对的价格。

2. 当它发现一个有利可图的套利机会时,它就会向我们部署的合约发送一笔交易。

3. 在这笔交易中,合约将:

a) 使用闪电兑,乐观地从价格较低的资产池中借入资产。

b) 立即在较高的资产池出售资产。

c) 偿还闪电兑,将差额收入囊中。

让我们一起来实现这些吧!

我们的程序是在Node.js中使用ethers.js库编写的,并与Infura节点相连,套利智能合约是用Solidity 编写。

Infura

我们的后端部分是用Node写的,将使用Infura节点来观察Uniswap和Sushiswap合约上ETH和Dai的价格。 这里会依靠Infura节点来获取主网每个新区块产生的价格。 如果你没有免费的Infura账户,你可以在这里注册。

.env 配置

这是超级重要的!我们还需要存储我们的私钥来签署主网交易。 我们把所有的敏感信息都放在.env文件中(查看在repo中的例子)。 我们还输入了套利合约的地址和Infura主网节点的密钥。

PRIVATE_KEY=
FLASH_LOANER=
INFURA_KEY=

确保 PRIVATE_KEY与部署 FLASH_LOANER合约的相同。 另外,与PRIVATE_KEY相关联的以太坊账户需要有足够的资金来支付Gas费用,Gas费用可能很高。

如果你不确定我们为什么要这样做,请阅读这篇优秀的文章,解释如何避免将你的私钥上传到Github。正如文章所解释的,我们需要将敏感信息放在这个.env文件中,然后我们将其添加到.gitignore文件中, 像这样:

.env
yarn.lock
package-lock.json
node_modules

这样,当我们把信息推送到Github时,这个文件就不会被提交。 这是超级,超级重要的!

Ethers.js

我们使用Ethers.js是因为它兼容 Typescript ,Typescript是项目的原始语言。 这对于Ethereum开发者来说是一个老问题了,但是关于ethers.js和web3,js的更多区别,请看这篇文章

合约实例

接下来,我们在第11行和第12行实例化Uniswap和Sushiswap合约


// uni/sushiswap ABIs
const UniswapV2Pair = require('./abis/IUniswapV2Pair.json');
const UniswapV2Factory = require('./abis/...

剩余50%的内容购买后可查看

  • 发表于 2021-02-03 10:25
  • 阅读 ( 736 )
  • 学分 ( 84 )
  • 分类:DeFi

0 条评论

请先 登录 后评论
翻译小组
翻译小组

首席翻译官

56 篇文章, 8573 学分