如何把Uniswap v2作为预言机使用

本文介绍了 使用Uniswap的时间加权价格求平均价,作为价格预言机。

> * 来自:https://soliditydeveloper.com/uniswap-oracle > * 译文出自:[登链翻译计划](https://github.com/lbc-team/Pioneer) > * 译者:[翻译小组](https://learnblockchain.cn/people/412) > * 校对:[Tiny 熊](https://learnblockchain.cn/people/15) > * 本文永久链接:[learnblockchain.cn/article…](https://learnblockchain.cn/article/2062) > 本文探索如何把 Uniswap v2 作为预言机使用,Uniswap v2作为预言机的原理是怎样的,如何整合。 Uniswap是目前最流行的去中心化交易所,估计大家读已经了解它, 但我还是先把基础知识再过一遍。 ## 什么是Uniswap? 如果你还不熟悉[Uniswap](https://uniswap.exchange/),它是以太坊上自动提供流动性的完全去中心化协议。 比较容易理解的描述是,这是一个去中心化的交易所(DEX),依靠外部的流动性提供者,将代币添加到智能合约池中,用户使用流动性中的代币直接交易。 由于Uniswap是在以太坊上运行,交易的是以太坊 ERC-20代币。 每个代币都有自己的智能合约和流动池。 Uniswap是完全去中心化的,因为任何代币都可以添加添加进流动池。 如果还没有对一个的代币流动池存在,任何人都可以使用UniswapFactory创建一个,任何人都可以为一个流动池提供流动性。 每笔交易向这些流动性提供者支付0.3%的费用作为激励。 代币的价格由池中的流动性决定。 比如用户用*TOKEN2*购买*TOKEN1*,那么池子里*TOKEN1*的供应量就会减少,而*TOKEN2*的供应量就会增加,*TOKEN1*的价格就会上涨。 同样,如果用户在卖*TOKEN1*,*TOKEN1*的价格也会下降。 因此,代币价格总是反映了供求关系。 当然用户不一定是人,可以是一个智能合约。 这使得我们可以将Uniswap添加到自己的合约中,为我们合约的用户增加额外的支付选项。 Uniswap让这个过程变得非常方便,下文会介绍如何整合Uniswap。 ![Uniswap用户界面](https://img.learnblockchain.cn/pics/20210126165549.png) 可以直接将Uniswap整合到你的合约中进行交易。 例如用户可以用ETH支付,在你的合约自动交易为 DAI,而不是一定得接收DAI。 ## Uniswap 预言机 现在让我们来看看Uniswap如何作为预言机使用。 例如,你可能想获得DAI的喂价,以便知晓给定ERC-20代币的大概的美元价格。 这可以用Uniswap来完成,但你需要注意一些事情。 ### Uniswap v1的问题 首先,只从Uniswap 流动池中提取最后的交易价格,会有什么问题呢? 虽然这听起来可能是一个可行的策略,实际上确实有项目直接使用这个价格,但它很容易被操纵的,自然而然就会有这样的黑客事件[发生](https://www.reddit.com/r/ethfinance/comments/eexbfa/daily_general_discussion_december_24_2019/fby3i6n/)。 那么如何操纵最后的交易价格呢? 简单,你只要在Uniswap上交易就可以了。 上面提到过“如果用户在卖TOKEN1,TOKEN1的价格就会下降”。 最重要的是这根本就不需要花多少资金去做。你只需要卖出TOKEN1兑换TOKEN2,此时使用操纵的价格进行操作,之后立刻卖回TOKEN2。 例如像[闪电贷](https://academy.binance.com/en/articles/what-are-flash-loans-in-defi)中那样,攻击的资金成本几乎0(手续费除外)。 一般来说,如果你想了解更多的信息,可以看看这篇很赞的文章[价格预言机不总是可靠](https://learnblockchain.cn/article/1833),讲述了预言机和价格操纵。 ## Uniswap v2: 时间加权平均价格 首先Uniswap v2只在一个区块结束时测算价格。 就是说要想操纵价格,就必须购买代币,等待下一个区块,然后才能够再卖回去。 这使得其他交易者有更多的套利机会,从而增加了价格操纵者的风...

  • 来自:https://soliditydeveloper.com/uniswap-oracle
  • 译文出自:登链翻译计划
  • 译者:翻译小组
  • 校对:Tiny 熊
  • 本文永久链接:learnblockchain.cn/article…

本文探索如何把 Uniswap v2 作为预言机使用,Uniswap v2作为预言机的原理是怎样的,如何整合。

Uniswap是目前最流行的去中心化交易所,估计大家读已经了解它, 但我还是先把基础知识再过一遍。

什么是Uniswap?

如果你还不熟悉Uniswap,它是以太坊上自动提供流动性的完全去中心化协议。 比较容易理解的描述是,这是一个去中心化的交易所(DEX),依靠外部的流动性提供者,将代币添加到智能合约池中,用户使用流动性中的代币直接交易。

由于Uniswap是在以太坊上运行,交易的是以太坊 ERC-20代币。 每个代币都有自己的智能合约和流动池。 Uniswap是完全去中心化的,因为任何代币都可以添加添加进流动池。 如果还没有对一个的代币流动池存在,任何人都可以使用UniswapFactory创建一个,任何人都可以为一个流动池提供流动性。 每笔交易向这些流动性提供者支付0.3%的费用作为激励。

代币的价格由池中的流动性决定。 比如用户用TOKEN2购买TOKEN1,那么池子里TOKEN1的供应量就会减少,而TOKEN2的供应量就会增加,TOKEN1的价格就会上涨。 同样,如果用户在卖TOKEN1TOKEN1的价格也会下降。 因此,代币价格总是反映了供求关系。

当然用户不一定是人,可以是一个智能合约。 这使得我们可以将Uniswap添加到自己的合约中,为我们合约的用户增加额外的支付选项。 Uniswap让这个过程变得非常方便,下文会介绍如何整合Uniswap。

可以直接将Uniswap整合到你的合约中进行交易。 例如用户可以用ETH支付,在你的合约自动交易为 DAI,而不是一定得接收DAI。

Uniswap 预言机

现在让我们来看看Uniswap如何作为预言机使用。 例如,你可能想获得DAI的喂价,以便知晓给定ERC-20代币的大概的美元价格。 这可以用Uniswap来完成,但你需要注意一些事情。

Uniswap v1的问题

首先,只从Uniswap 流动池中提取最后的交易价格,会有什么问题呢?

虽然这听起来可能是一个可行的策略,实际上确实有项目直接使用这个价格,但它很容易被操纵的,自然而然就会有这样的黑客事件发生。 那么如何操纵最后的交易价格呢?

简单,你只要在Uniswap上交易就可以了。 上面提到过“如果用户在卖TOKEN1,TOKEN1的价格就会下降”。 最重要的是这根本就不需要花多少资金去做。你只需要卖出TOKEN1兑换TOKEN2,此时使用操纵的价格进行操作,之后立刻卖回TOKEN2。 例如像闪电贷中那样,攻击的资金成本几乎0(手续费除外)。

一般来说,如果你想了解更多的信息,可以看看这篇很赞的文章价格预言机不总是可靠,讲述了预言机和价格操纵。

Uniswap v2: 时间加权平均价格

首先Uniswap v2只在一个区块结束时测算价格。 就是说要想操纵价格,就必须购买代币,等待下一个区块,然后才能够再卖回去。 这使得其他交易者有更多的套利机会,从而增加了价格操纵者的风...

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

  • 单篇购买 10学分
  • 永久订阅专栏 (30学分)
  • 发表于 2021-01-28 10:12
  • 阅读 ( 1784 )
  • 学分 ( 192 )
  • 分类:DeFi
  • 专栏:热门 DEFI 分析

评论