uniswap v2在v1的基础上提供了几个新特性
支持ERC Token与ERC Token的置换
v1中两个ERC Token的置换需要通过ETH作为媒介,也即意味着支付两次gas与手续费以及两次滑点。v2中无需中间商。
价格预言机(price orcle)
v1有个漏洞,对于某个ERC Token-ETH的交易对:
- 如果用大量的ERC Token去购买ETH,会让ETH的价格瞬间到达一个非常高的值
- 此时如果用ETH购买ERC Token可以换取大量的ERC Token
- 随后再使用第一步获取的ETH置换ERC Token,就可以让ETH价格恢复到之前
第二步就可以进行套现。
那么在v2中如何避免呢?
就是引入线上价格预言机,在v1版本中,如果价格从t1时刻的p1价格,瞬间上涨到t2时刻的p2价格,此时就会让人乘虚而入进而套利。v2的解决方案就是t2时刻的价格=(t1到t2时刻价格的累加)/t2-t1的时间,就是让t2的价格平均下来,套利者就没有趁虚而入的机会。
flush swap
v2中新增了flush swap(闪电贷)的功能,就是能够让你在一个比较短的时间内使用流动性池子里的资金。 下面讲解套利的例子:
A交易所ETH=3200U,B交易所ETH=3000U。如果你只有1ETH本金,那么你一次只能赚取100U,而通过闪电贷,你可以增加你的本金,让套利的利润更大。
闪电贷可以提高uniswap流动性池中的资金利用率。
语言更换
v2使用solidity替换Vyper语言作为合约编程语言
价格存储类型变更
价格使用UQ112.112类型存储
支持meta transaction
此时有个场景,你转给了你的好朋友A 50个uni代币,你的好朋友A想用出这50个uni,但是由于他的账户没有ETH导致无法支付gas费用,无法进行使用。
所以uniswap v2中提供了meta transaction功能可以直接使用uni,无需使用ETH直接支付gas,具体原理是由第三方支付gas,并且收取手续费,比如好友A用uni购买susi,最后meta transaction的平台会授权一定数量的susi作为手续费。
协议费结构改变
v1中收取当前币的千3作为手续费,v2中变为千2.5的手续费+千0.5的协议费