织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

速览即将推出的 Uniswap V2 新特性:供给池、预言机与闪电贷

时间:2020-03-27 18:15来源:未知 作者:admin1 点击:
2018 年底给大家介绍了 Uniswap V1,一个基于简单数学公式的去中心化交易所(V1 版本介绍)。如今 V1 版本已经在以太坊上运行了一载有余,证明了这种数学公式兑换模型的可行性和实用性

  原文标题:《Uniswap V2 关于预言机和闪电贷》

  撰文:outprog,imToken 后端开发与智能合约开发

  来源:币乎

  2018 年底给大家介绍了 Uniswap V1,一个基于简单数学公式的去中心化交易所(V1 版本介绍)。如今 V1 版本已经在以太坊上运行了一载有余,证明了这种数学公式兑换模型的可行性和实用性。2020 年 3 月 23 号,官方发布文章介绍即将问世的 V2 版本。那么 V2 有什么改进和突破呢?就让我们来瞧一瞧(官方博客:Uniswap V2)。

  本文主要从技术角度介绍 V2 的一些特性,分析这些新特性可能带来的改进和影响。这些特性包括:ERC20/ERC20 供给池、价格预言机和闪电兑换。其中关于预言机和闪电兑换会做一些的思考,欢迎有识之士来探讨这些问题。对某项特性感兴趣的读者可直接跳到指定章节。

  ERC20/ERC20 供给池

  V1 版本只能通过 ERC20 和 ETH 建立供给池。如果我们使用 DAI 去兑换 ETH,那就可以直接使用 DAI/ETH 的供给池获得兑换。当我们要进行 DAI 到 USDC 的兑换时,V1 版本是将 DAI 兑换成 ETH,再使用 ETH 去 USDC/ETH 的供给池进行「二次」兑换,最终完成 USDC 到 DAI 的整个兑换过程。

速览即将推出的 Uniswap V2 新特性:供给池、预言机与闪电贷

  V2 的供给池,可以使用任意两种 ERC20 代币构成。这样做的一个好处是可以降低兑换汇率的滑点,因为每个供给池都会收取一定的费用作为兑换手续费,通过两个供给池兑换那就是两倍的费用。V2 对 ERC20/ERC20 供给池的支持,使 DAI 兑换 USDC 的时候不再需要向两个供给池进行兑换,减少了一半的费用,兑换汇率滑点也会更低。

  如果两种 ERC20 Token 之间没有直接的供给池,V2 的路由协议可以在多个供给池之间找到一条优化的兑换路径,在多个供应池之间完成兑换。为了实现 A 到 D 的兑换,可以通过 A 兑换到 B,B 兑换到 C,C 兑换到 D 来完成。

  目前代码中的路由协议是 01 版本,需要在链下计算好路径提交给路由协议进行处理。

  价格预言机

  随着 DeFi 应用的兴起,预言机变得越来越重要,区块链应用对预言机的依赖和要求越来越高。

  但在预言机的发展和探索道路上,可谓事故频发,造成的经济损失不计其数。早有 Synthetix 由于预言机的错误喂价导致 3500 万的 sETH 损失;最近的 bZx 闪电贷套利事件,也是由于平台使用了 Uniswap 作为价格预言机造成了经济损失。

  bZx 闪电贷事件中,攻击者使用借出的资金对 Uniswap 进行砸盘,导致其价格剧烈变化。此时,使用 Uniswap 作为预言机的平台由于读取了当前砸盘后的价格,出现了巨大的套利空间。套利完成后,攻击者归还在闪电贷中借出的资金,完成交易。而整个交易过程都在一个区块的一个交易中一次性完成,是为「闪电贷」。

  可以发现在 bZx 事件中,由于平台使用了 Uniswap 最后时点的执行价格产生了不符合预期的喂价。尽管这个价格在 Uniswap 是真实的,但和其他平台是价格存在很大的偏差。由于闪电贷在一个区块中迅速完成所有的操作,Uniswap 的执行价格没有和其他平台进行套利拉平的机会,可以认为是一个不符合预期的价格。

  V2 的改进是历史将价格保存在链上,并加上了时间权重。它的存储方式是在链上保存了一个累积价格,通过使用两个累积价格的差值和时间差,可以计算出一个具有时间权重的平均价格。

  我们知道 Uniswap 的价格变动是跟随交易变化的。如果一直没有交易,那么这个价格会是一个固定的值。假设两次交易的间隔 10 秒,第一次交易后产生的价格 P1 会持续存在,直到第二次交易的发生(10 秒后)才变为 P2。因此 P1 的累积值就是 P1 * 10。累积价格(priceCumulative)即价格和时间差的乘积。在无数次的价格变动中,其中每次的时间间隔分别是 T1、T2、T3...,就有:

  priceCumulative = P1 * T1 + P2 * T2 + P3 * T3 + ...

  有了累积价格,使用累积价格除以时间就可以得到一个基于时间权重的平均价格。

  具体实现如下图:

速览即将推出的 Uniswap V2 新特性:供给池、预言机与闪电贷

  区块 122,供给池被创建后累积价格(priceCumulative)初始值为 0,此时只是发生了交易,产生了一个截止价格,而累积价格并未产生。 (责任编辑:admin1)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容