科普 | 有关 Uniswap V2 的一切(上)
摘要: 概述以太坊上的 Uniswap V2 协议
Uniswap V2 是该链上交易所的新一版迭代
Uniswap 是一个运行在以太坊区块链上的流动性协议,支持免信任的代币互换,也即是说,该交易所上的所有交易都是由智能合约自动执行的,用户无需依靠某个中介也无需信任某个第三方。这种去中心化的代币互换方案已经证实在 ERC20 代币的持有者群体中很吃香,他们愿意使用 Uniswap 来交易代币并为不同的交易对提供流动性。
Uniswap 在 2020 年 3 月 19 日在以太坊主网上推出了一个新版本,还配合着公开了核心合约的 1.0.1 版;在发行之前,该版本已经在 Rinkeby 测试网上测试过一段时间了。截至撰文之时,这个新版本在以太坊主网上已经使用超过了两个月时间,而且迄今为止,没有出现任何损坏智能合约完整性的问题。
不论你是持有还是在交易密码学货币,是在搞以太坊开发还是做宽泛的金融科技业务,都有必要了解一下 Uniswap,它在 2020 年的第三季度随着 DeFi 概念的崛起迎来了快速的增长。所谓一项独立的服务,Uniswap 也可以集成到第三方的数字钱包和 dApp 中。此外,其它智能合约也可以拿 Uniswap 作为基础来开展服务。
本文旨在向读者介绍 Uniswap V2 带来的增强功能,并详细介绍其主要特性。
Uniswap V1 定下的基调
Uniswap V1 为链上代币互换和去中心化流动性池定下了基调,就是向交易代币的用户收取少量手续费、以此给提供流动性用户以奖励。
Uniswap V1 使用的不是链上订单簿,正相反,代币的交换比率是用一个叫做 “恒定乘积公式” 的算法来确定的,相当于提供了一种机制来保持一种代币的体量在所在交易对中的平衡。这个我们后面会进一步介绍。
底层的代币交易对(例如 DAI 对 ETH,或者 DAI 对 USDC)各有各的流动性池,用户可以通过同时存入两种相应的代币来提供流动性。流动性提供者可以得到所在流动性池中代币交易的手续费作为奖励,手续费率为 0.3%,流动性提供者之间按份额分配 —— 份额的大小,端看你注入流动性池的代币数量占整个流动性池数量的比重。
要是读者不太了解 Uniswap,我曾写过的一篇基于 Uniswap V1 的解释性文章肯定有所帮助 —— 在那篇文章中我解释了协议的整个机制、交易比例是如何计算出来的、流动性提供者如何能赚到佣金、使用 Uniswap 的好处和缺点,等等。见此处。
(编者注:想了解更多关于 Uniswap 的细节,可见文末超链接)
Uniswap V2 有什么新东西
Uniswap V2 给协议带来了一系列的升级和增强功能。主要的更新包括:
-
ERC20 对 ERC20 代币的交易对。即,不再需要 ETH 作为中介代币来协助两种 ERC2O 代币的互换过程。移除这个硬性要求可以减少一半的交易数量,也能节约交易的 Gas 费。也因此,dApp 可以在缺乏直接的代币互换池子的时候,更高效地发现从一种代币到另一种代币的 “路由”。这一部分我们后文还会详细讲。 -
价格信息传输功能,每个区块都能基于按时间加权平均的定价方式为交易对刷新价格。这一部分我们后文也会详细讲解。 -
闪电互换,或者说你可以从 Uniswap 流动性池中 “借出” 代币、用于与任意的外部服务交互、然后 还清 你的初始贷款,所有操作都要放在一笔交易内。这样的交易是原子化的,意思是说,交易中的任何一个操作失败,都是导致整笔交易失败、被改动的状态完全回复。这种功能的一个显而易见的用途就是利用流动性来做套利交易,但也有别的用途,比如为特定的 DeFi 操作节约 Gas 费,例如关闭 Maker 金库。(编者注:想进一步理解闪电互换的原理,可见文末超链接《一笔交易能做什么》) -
支持不标准的 ERC20 代币。办法是将返回 void
类型的transfer()
和transferFrom()
的函数调用也视作成功的 transfer (转移)操作。这个功能看起来毫不起眼,但其实,许多主流代币比如 USDT(Tether)和 BNB(币安币)的 transfer 方法都会产生这样的返回值。支持这些广泛接受、但不完全遵守 ERC20 标准的代币,增强了 Uniswap 在链上交易所中的优势。 -
额外的功能性方法,用于防止用户所转移的代币数量超过 Solidity 编程语言所能支持的最大数量时出现溢出错误(overflow)
Uniswap V2 经过充分的测试和审计之后方才推出
Uniswap V2 的工作原理
- Uniswap V2 上的汇率取决于恒定乘积公式 -
x * y = k
(其中x
和 y
分别代表交易池中两种代币的可用数量)自动计算的。对应的曲线代表所有可能的汇率。每个交易对都有自己的曲线,用来调节当前汇率。代币 B
的需求量很大,以至于流动性干涸,其价格将成倍增长,导致 k
点向曲线左侧上移(如上图所示)(译者注:即更多的 A 只能换来更少的 B)。如果 代币 B
的供应量很大,需求比 代币 A
少得多,k
点就会向曲线右侧下移(译者注:即更少的 A 就可换来更多的 B)。要注意的是,这种供需平衡仅限于代币 A 与代币 B 的流动性池。如果是代币 B 与代币 C 的流动性池,会形成自己的供需平衡,汇率也会不同。- Uniswap V2 用户界面上 ETH/DAI 交易对的汇率 -
(未完)
(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)
原文链接:
https://medium.com/@rossbulat/uniswap-v2-everything-new-with-the-decentralised-exchange-52b4bb2093ab
作者: Ross Bulat
作者:以太坊爱好者;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com
评论(0)
Oh! no
您是否确认要删除该条评论吗?