Uniswap,作为近年来以太坊平台上最有趣的dApp项目之一,它在近日迎来了自己的一周岁生日。
Uniswap是去中心化交易所(DEX)中的一个另类,它实现了高度的去中心化,该项目没有原生代币,项目方本身不收取交易手续费,其也不具备什么特权(比如,如果你自己发行了一种以太坊token,你可以通过Uniswap自主创建一个交易市场,而不需要得到任何人的许可)。
而该协议最大的特点,在于它没有order book(挂单簿),价格完全根据使用者在此交易所进行的买卖自动调节,也因此,你只能被动接受Uniswap的价格,而不能进行挂单操作,而这也被很多人认为是一种缺陷。
尽管如此,Uniswap在DEX领域的表现依旧是让人眼前一亮的,它也是以太坊DeFi生态的重要一员。
1、Uniswap的诞生之路
2017年7月份,Uniswap协议的创始人Hayden Adams刚经历了失业,彼时的他对以太坊还一无所知,后来他在以太坊基金会成员 Karl Floersch的安利下进入这个圈子,他花费了约2个月的时间学习了以太坊、Solidity以及Javascript的基础知识。
而后,在Vitalik的博客文章的指引下,Adams决定实现一个自动化的撮合市场。
在那个时候,DEX市场上最知名的项目还是EtherDelta,但其用户体验确实非常糟糕。
在同年举行的Devcon 3大会上,Karl Floersch在演讲时介绍了Uniswap的Demo应用,而正是这次演讲,吸引了与会者Pascal Van Hecke的兴趣,后者向Uniswap创始人伸出了援手。
在经历近1年的开发之后,Hayden Adams等人选择在Devcon 4大会的最后一天(2018年11月2日)将Uniswap的智能合约部署到以太坊主网上。
另外,有意思的是,“Uniswap”最初并不是该项目的名称,其最初的名字其实是“Unipeg”(独角兽和飞马的结合体)。
在Hayden Adams把这个DEX项目告诉Vitalik之后,Vitalik给它起了一个更好的名字:
“Unipeg? 它听起来像是Uniswap”。
2、如何使用Uniswap?
首先,你需要一个以太坊钱包,例如MetaMask、imToken、Coinbase等,这里以MetaMask为例。
然后,使用浏览器打开Uniswap 交易所,并在跳出“连接钱包”页面后点击“Connect”与你的钱包账户形成联系。
目前,Uniswap上有四种类型的操作:
- 兑换(Swap);
- 发送(Send);
- 添加流动性、删除流动性(Add/Remove Liquidity);
- 创建交易所(Create Exchange);
其中的兑换操作,又可分为ETH ⇄ Token兑换及Token ⇄ Token兑换操作,两者的分别在于手续费,前者的手续费是0.3%,后者大约是前者的两倍(实际为0.5991%)。
(图:Uniswap兑换页面)
而发送(Send)操作,则是在完成兑换操作的同时,立即将这些兑换好的币发送给另一个人。
(图:Uniswap发送页面)
而“添加流动性”操作,则可让参与者享受系统的手续费分成,但这并不是稳赚不陪的,参与者也需要承担价格变动的风险。
(图:Uniswap添加流动性页面)
最后的”创建交易所”操作,就是为你创建的ERC20 代币创建一个交易市场,你只需要填入代币地址,然后点击“创建交易所”就可完成这个操作。当然,在你完成这个步骤之后,该代币并不会立刻出现在Uniswap网站的代币选择栏中,而需要你在 uniswap-frontend repo 发 issue 和 pull request,等审核通过后才会出现在选择栏中。
实际上,这样做是为了避免有人用同名的假币造成混乱,当然,即便你的币没有被审核通过,你也可通过搜索你的代币地址找到它的市场。
3、Uniswap的核心原理是什么?
上面,我们简单谈到了Uniswap交易协议的使用方法,那么,其底层的实现逻辑到底是怎样的呢?
实际上,Uniswap围绕的是 x * y = k
这一“恒定乘积做市商”公式。
其中x和y是流动性池中的代币数量,k则是乘积。而要想使得乘积k保持恒定,x和y的变动只能是相反的,例子如下:
流动性提供商将10 ETH 和500 OMG(ERC20代币)存入到智能合约当中,不变量被自动设为ETH_pool * OMG_pool = 5000
,
然后,有人想通过Uniswap使用ETH兑换OMG,其向合约发送了1 ETH,而流动性提供者会收取这笔交易0.25%的费用,剩余的0.9975 ETH会添加到ETH_pool。接下来,将不变量除以流动性池中的新ETH量,以确定OMG_pool的新大小,剩余的OMG就被发送给买方。
“买方发送:1 ETH 费用= 1 ETH / 500 = 0.0025 ETH ETH_pool = 10 + 1 – 0.0025 = 10.9975 ETH OMG_pool = 5000/10.9975 = 454.65 OMG 买方收到的OMG :500 – 454.65 = 45.35 OMG ”
这笔费用现在又被加到流动性池中。由于费用是在价格计算后加上的,因此不变量会随每次交易略有增加,这使得系统对流动性提供者而言是有利的。事实上,这个不变量真正代表的,是上一次交易结束时的ETH_pool * OMG_pool 。
“ETH_pool = 10.9975 + 0.0025 = 11 OMG_pool = 454.65 新的不变量 = 11 * 454.65 = 5,001.1”
在这种情况下,买方收到的费率为45.35 OMG/ETH。如果另一个买家在同一方向进行交易,他们得到的OMG/ETH的交易比率会更差一些。然而,如果买家进行相反方向的交易,他们将获得稍好的ETH/OMG利率。
通过上面的介绍,我们认识到,如果交易量过大,可能会导致成交价格滑动过大的问题。
在一个活跃的市场中,这种模型可以确保交易价格与其它交易所不会偏离太多,但在非活跃市场,情况将是完全不同的。
小结:
与传统的DEX不同,Uniswap取消了orderbook机制,相反,它使用了一种保证流动性并提供较价差的算法机制。这种定价机制工作得较好,且编程上也较容易实现,另外,它还具有相对更低gas消耗的好处。
(图片来自uniswap)
而根据dapptotal提供的数据显示,Uniswap 协议锁仓的资产价值,从18年11月初的10万美元上升至当前接近1800万美元,可用“发展稳定”称之。
我们可以看到,Uniswap的24小时活跃用户、交易数及交易额数据在以太坊DEX生态中均是非常突出的,但相比锁仓价值而言,其交易数据有起有落,这或许和市场行情有很大关系。
至于Uniswap及其DEX模型在未来是否会发展得更好,这还有待于我们继续观察。