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