想从 Defi 世界中获利?看看 Flash Loans 和 The Graph 的结合吧!通过使用这些去中心化的市场工具,您只需点击几下即可开启利润丰厚的三角套利世界。但是从哪里开始呢?在这里,当然!我们将探索此策略的来龙去脉,并提供足够的材料供您入门。

计划

  • 使用 The Graph 为以太坊主网建立去中心化市场数据索引

  • 建立一个算法来发现和审查三角套利机会

  • 利用快速贷款建立智能合约,利用有利可图的三角套利机会执行交易。

先决条件

  • Web3 术语(流动资金池、DEX、AMM 等)

  • Uniswaps CFMM(常数函数做市商)

  • 图的知识

  • 智能合约和闪电贷的知识

如果您已牢牢掌握上述先决条件,则可以跳过下一部分。如果您需要快速复习,我们将在开始构建算法之前复习一些基础知识。

什么是三角套利?

三角套利是价格差异的结果,当三种货币汇率不匹配时就会发生这种情况。关于 Defi(去中心化金融),这些差异可以在DEX(去中心化交易所)上持有的三个独立的流动资金池(LP)之间找到。我们将专注于三个独立的 DEX,这将扩大我们的网络和能力,以在整个 Defi 市场中发现更大的差异。

我们将关注的市场

Uniswap V2、Uniswap V3和Sushiswap 都是 DEX,它们在很多方面都很相似,但从长远来看,它们对我们有利的原因有以下三个。

  • 都是AMM(自动做市商)共享同一个CFMM(常量函数做市商)。

  • 都有类似的子图模式托管在 The Graphs 协议上

  • 每个 DEX 都有一种快速有效的方法来执行闪贷。

我们正在使用哪种类型的 CFMM?

让我们快速回顾一下 Uniswaps CFMM。根据 Uniswap白皮书,以下公式在给定交易的 LP 内自动设置价格。

CFMM

  • Ra 是 Token A 储备量

  • Rb 是 Token B 储备量

  • Δb是输入量(你拥有的)

  • Δa 是输出量(您收到的是什么)

  • r 是包含的费用(每个 LP 都有交易费,通常是 3%),在这种情况下 r 表示 为 r — 3%

  • 最后,可以找到 k 作为两个储备的乘积:Ra * Rb = k

通过保持总储备不变,我们可以很容易地分解这个公式并确定我们将在交易中收到多少代币。突击测验 !

假设一个流动资金池中,代币 A 的代币储备为 5,代币 B 的代币储备为 20。如果交易者 Ryan 想要将他的 1 个代币 A 换成代币 B,Ryan 将收到多少代币?

打破上面的等式,我们可以替换以下内容:

接下来,我们可以简化方程式并求解 Δb 以获得最终数量。但首先,让我们从 Ryan 的金额中删除交换费,这将使 Ryan 的金额为 0.997。

最后,Ryans 将收到 3.324996 的代币 B,并以新的代币储备金额离开流动资金池。如果我们重新应用 CFMM 公式,我们会发现结果没有改变。这就是为什么它被称为恒定函数做市商。

因此,既然我们已经回顾了如何计算我们将在给定交易中收到的代币数量,我们所需要的就是流动资金池数据。

我们如何获取数据?

介绍The Graph,这是一种用于区块链数据的开源和去中心化索引协议。开发人员可以构建和发布各种称为“子图”的 API,这些 API 在GraphQL上执行查询。目前,大多数 DEX 不支持传统的 API 请求。相反,大多数 DEX 都有子图,旨在使用标准 GraphQL API 查询在其平台上找到的数据。

要进行此设置,请对 Uniswap V3 的子图执行以下 Axios post 请求,

该参数将采用 GraphQL 查询来索引 Uniswap V3 子图中的区块链数据。别担心,您不必完全自己构建这些查询。您可以跳转到 DEXs playground并测试您自己的查询。采用以下 Uniswap V3 子图查询。

这为 1000 个流动性池索引了 Uniswap V3s 协议。结果响应将是一个包含 n 个对象的数组,按照每个池在给定时间范围内的交易量排序(请注意一些流动性池可能没有交易)。

什么是闪电贷?

与传统贷款类似,闪电贷是借入的资金,预计最终会偿还。但是,它们以不同的身份运行:

  • 他们是无抵押贷款

  • 他们通过智能合约运作

  • 它们是瞬时的

I. 作为无抵押贷款的快速贷款

与传统贷款不同,闪电贷是一种无抵押贷款,这意味着不需要抵押品。由于快速贷款是无担保的,因此它们对贷方来说具有很高的风险。然而,闪电贷在智能合约中有一套严格的规则。这些严格的规则是提供的安全性,简而言之,如果出现任何问题,它会恢复交易。

二。智能合约中的闪电贷从本质上讲,智能合约可以定义为在指定场景发生时根据事件自动执行的电子脚本。

然而,与构建智能合约不同的是,您可以在智能合约中为自己设定条款,闪电贷有预定义的规则。一项规定是,借款人必须在交易完成前偿还全部贷款。例如,当一笔交易被规划出来时,如果在贷款期结束时资金没有全额返还给初始贷方,则贷款将被视为无效,交易将被撤销。这一结果的不利方面是产生的交易费(汽油费)和交易费(掉期费)。

三、闪电贷是即时的

获得传统贷款的批准通常是一个漫长的过程。借款人必须提交文件、等待批准并偿还可能需要数天、数月或数年的贷款。

闪电贷是即时执行的。贷款的智能合约必须在其借出的交易期间履行。因此,借款人需要调用其他智能合约,使用借出的资金进行即时交易。