以太坊DEX的交易与套利:获取汇率(第1部分)

探索围绕以太坊建立使用去中心化交易所(DEX)开发一个简单的自动交易(套利)机器人。

> * 原文:[Trading and Arbitrage on Ethereum DEX: Get the rates (part 1)](https://ethereumdev.io/trading-and-arbitrage-on-ethereum-dex-get-the-rates-part-1/) 作者: https://ethereumdev.io/author/peter/ > * 译文出自:[登链翻译计划](https://github.com/lbc-team/Pioneer) > * 译者:[翻译小组](https://learnblockchain.cn/people/412) > * 校对:[Tiny 熊](https://learnblockchain.cn/people/15) > * 本文永久链接:[learnblockchain.cn/article…](https://learnblockchain.cn/article/1855) 在本系列教程中,探索围绕以太坊建立使用去中心化交易所(DEX)开发一个简单的自动交易(套利)机器人。 教程中将使用Javascript,Solidity和1inch dex聚合器和闪电贷。 由于主题较多,教程将分为以下几个部分介绍: - (本文)获取链上代币兑换汇率。 - [使用JavaScript和1inch dex聚合器进行兑换](https://learnblockchain.cn/article/1856)。 本系列文章的目的是学习如何使用DeFi协议(例如DEX和ERC20代币)构建去中心化应用,而不是以暴富为目标哦。 ![img](https://img.learnblockchain.cn/pics/20201208144434.png) ## 概念简介 **什么是去中心化交易所(DEX)?** 这是通过代码运行的兑换。在DEX,无需中间人就可以直接交易加密货币(通过合约交易)。在DEX上,每笔交易通常都写入区块链。 > 注:在本文中,去中心化交易所将简写为DEX **什么是DEX聚合器?** DEX聚合器是一个平台,它通过在一揽子DEX中,找到在给定时间和数量下,最优的价格来执行兑换交易。 **什么是ERC20 Token(代币 or 通证)?** ERC20 是以太坊区块链上的代币标准。 这里有一篇文章介绍[如何创建ERC20代币](https://learnblockchain.cn/2018/01/12/create_token). **什么是套利?** 套利,简单的说就是在一个市场上买东西,同时在另一个市场上以更高的价格卖出东西,在短暂的的价格差中获利。 在本教程中,我们将套利特指:从一个DEX购买代币,然后在另一个DEX上以更高的价格出售。 在区块链上,早期主要的套利机会主要来自在去中心化和中心化交易之间套利。 ## 关于 1inch DEX 聚合器 [1inch 交易所](https://1inch.exchange/)是一个链上去中心化交易所聚合器,由[Anton Bukov](https://github.com/k06a)和[Sergej Kunz](https://github.com/deacix) 开发,能够在一次交易中实现在多个DEX之间拆分订单,为用户提供最佳兑换汇率。 1inch 智能合约开源在[Github](https://github.com/1inch-exchange/1inchProtocol),你可以看到如何使用智能合约来寻找交易机会。你还可以[在此处访问1inch 网站](https://1inch.exchange/#/)。 ![img](https://img.learnblockchain.cn/pics/20201208144422.png) 要在1inch上执行代币兑换,步骤很简单: - 根据输入的代币或ETH数量,获得预期可兑换的代币数量。 - 授权(Approve)交易所使用你的代币 - 使用第一步的参数进行交易 我们首先需要分析一下1inch exchange智能合约。感兴趣的函数有两个: - *getExpectedReturn ()* - *swap*() ## 获取预期可兑换的多少代币 * getExpectedReturn 函数不会修改链上状态,只要你连接到区块链网络节点,就可以调用getExpectedReturn() 函数,不用支付手续费。你可以 [web3.js](hhttps://learnblockchain.cn/tags/Web3.js) 等相关的库来调用智能合约函数。 它接受交易参数,并将返回你将获得的预期代币数量以及交易如何在DEX上分布。 ```javascript function getExpectedReturn( IERC20 fromToken, IERC20 toToken, uint256 amount, uint256 parts, uint256 disableFlags ) public view returns( uint256 returnAmount, uint256[] memory distribution ); ``` 函数接受5个参数: - fromToken :当前拥有(用来兑换)的代币合约地址。 - toToken:要兑换代币合约地址。 - amount :兑换所用的代币数量。 - parts :期望可切分的份数。检查函数 distribution 返回值可以获取更多详细信息,默认情况下我们将使用 100。 - disableFlags :启动额外的选项,例如,禁用特定的DEX 函...

  • 原文:Trading and Arbitrage on Ethereum DEX: Get the rates (part 1) 作者: https://ethereumdev.io/author/peter/
  • 译文出自:登链翻译计划
  • 译者:翻译小组
  • 校对:Tiny 熊
  • 本文永久链接:learnblockchain.cn/article…

在本系列教程中,探索围绕以太坊建立使用去中心化交易所(DEX)开发一个简单的自动交易(套利)机器人。

教程中将使用Javascript,Solidity和1inch dex聚合器和闪电贷。

由于主题较多,教程将分为以下几个部分介绍:

  • (本文)获取链上代币兑换汇率。
  • 使用JavaScript和1inch dex聚合器进行兑换。

本系列文章的目的是学习如何使用DeFi协议(例如DEX和ERC20代币)构建去中心化应用,而不是以暴富为目标哦。

概念简介

什么是去中心化交易所(DEX)?

这是通过代码运行的兑换。在DEX,无需中间人就可以直接交易加密货币(通过合约交易)。在DEX上,每笔交易通常都写入区块链。

注:在本文中,去中心化交易所将简写为DEX

什么是DEX聚合器?

DEX聚合器是一个平台,它通过在一揽子DEX中,找到在给定时间和数量下,最优的价格来执行兑换交易。

什么是ERC20 Token(代币 or 通证)?

ERC20 是以太坊区块链上的代币标准。 这里有一篇文章介绍如何创建ERC20代币.

什么是套利?

套利,简单的说就是在一个市场上买东西,同时在另一个市场上以更高的价格卖出东西,在短暂的的价格差中获利。

在本教程中,我们将套利特指:从一个DEX购买代币,然后在另一个DEX上以更高的价格出售。

在区块链上,早期主要的套利机会主要来自在去中心化和中心化交易之间套利。

关于 1inch DEX 聚合器

1inch 交易所是一个链上去中心化交易所聚合器,由Anton Bukov和Sergej Kunz 开发,能够在一次交易中实现在多个DEX之间拆分订单,为用户提供最佳兑换汇率。 1inch 智能合约开源在Github,你可以看到如何使用智能合约来寻找交易机会。你还可以在此处访问1inch 网站。

要在1inch上执行代币兑换,步骤很简单:

  • 根据输入的代币或ETH数量,获得预期可兑换的代币数量。
  • 授权(Approve)交易所使用你的代币
  • 使用第一步的参数进行交易

我们首先需要分析一下1inch exchange智能合约。感兴趣的函数有两个:

  • getExpectedReturn ()
  • swap()

获取预期可兑换的多少代币

  • getExpectedReturn 函数不会修改链上状态,只要你连接到区块链网络节点,就可以调用getExpectedReturn() 函数,不用支付手续费。你可以 web3.js 等相关的库来调用智能合约函数。

它接受交易参数,并将返回你将获得的预期代币数量以及交易如何在DEX上分布。

function getExpectedReturn(
        IERC20 fromToken,
        IERC20 toToken,
        uint256 amount,
        uint256 parts,
        uint256 disableFlags
) public view
returns(
         uint256 returnAmount,
         uint256[] memory distribution
);

函数接受5个参数:

  • fromToken :当前拥有(用来兑换)的代币合约地址。
  • toToken:要兑换代币合约地址。
  • amount :兑换所用的代币数量。
  • parts :期望可切分的份数。检查函数 distribution 返回值可以获取更多详细信息,默认情况下我们将使用 100。
  • disableFlags :启动额外的选项,例如,禁用特定的DEX

函...

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

  • 单篇购买 5学分

区块链技术网。

  • 发表于 2020-12-08 14:49
  • 阅读 ( 2935 )
  • 学分 ( 217 )
  • 分类:DeFi

评论