Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

uniswap 做市(uniswap如何卖出)

区块链 加入收藏
普通的交易所都会有限价订单的概念,一般的做市商提供流动性都会设定价格,而这些在Uniswap都没有。在Uniswap,做市商只需提供代币资金,剩下的可以通过机制来解决。普通的交易所需要交易对手,做市商
普通的交易所都会有限价订单的概念,一般的做市商提供流动性都会设定价格,而这些在Uniswap都没有。在Uniswap,做市商只需提供代币资金,剩下的可以通过机制来解决。普通的交易所需要交易对手,做市商通过设置买入价和卖出价,一是为市场提供流动性,二是可以获得交易的利差。这些设置的价格形成了限价订单。当然这些订单可能成交,也可能不会成交。如果交易所将所有人的订单都集中到两个大型的池中,交易者不会愿意,他们不希望自己的订单跟其他人的订单混在一起。
Uniswap需要做的是混合代币,做市商不需要指定想要买卖的价格。Uniswap为什么要这么做?这来自于Uniswap自动做市商的设计。
uni swap的特点之一就是把大家的行动力集中起来,然后按照算法做市。即本质上是基于算法的自动做市服务。Uniswap将有一些预定义的规则,根据这些规则,它将向用户提供交换令牌的机会。自动做市有多种规则,Uniswap采用其中一种。
Uniswap采用的自动做市商模式
是基于“恒定产品做市商模式”的变种。它有一个有趣的特点。理论上可以提供无限的流动性,订单规模大,不用担心流量池小。之所以能做到,与其不断的产品自动做市模式有关。那么,恒量产品自动做市的模式是什么?
让我们假设流动性提供者提供了ETH/MKR交易对。假设按照现在的汇率,1MKR=3.5ETH,如果你想为Uniswap提供流动性,你向资金池提供100MKR和350ETH。然后,Uniswap将两个数值相乘,得到常数乘积:100 * 350 = 350,00。
其公式为X*Y=K,其中X为ERC20 token,Y为ETH,K为常数。Uniswap将保持k常数350,00不变。为了保持K不变,那么,X和Y就是权衡关系。如果有人在该合约中买入ETH,那么MKR将会增加,因为买方将MKR加入流动性池,同时减少ETH。而ETH则被买家买走,从而减少其在流量池中的数量。
但是,根据购买金额的不同,用户支付的成本不同,也就是实际价格不同。假设交易成本为token /100(实际为0.3%,这里主要是为了简化解释),我们得到如下交换关系:


从上表可以看出,池中MKR为100个,ETH为350个,其常数为100*500=35,000;
在这种情况下,如果用ETH购入MKR,那么每次ETH买入量不同,其购买的成本也是不同的,如果往流动池中注入1ETH,用来兑换MKR,那么可以兑换0.282个MKR,成本为3.5453,购买MKR成本上涨了1.294%;如果用350ETH来兑换MKR,那么这意味着ETH流动池有696.5ETH(减去3.5ETH的交易费用),根据计算公式,MKR的流动池剩下50.2513个MKR,那么350ETH可以换得49.7487个ETH,而单个MKR兑换成本高达7.0353;购买MKR的成本上涨超过100%,这个滑点太大了。
不过,如果池中MKR和ETH数量足够多,则滑点会小很多。截止到蓝狐笔记写稿时,实际来看,MKR的流动性可以达到23,238个ETH,超过3,000,000美元,如果用350ETH兑换MKR,可以兑换104.8559个,价格滑点为2.88%。当然这个流动池还不够大,如果再大一些,可能连1%的滑点都不到。
这里还有一个概念需要清楚,就是每次兑换之后,会产生新的流动池,同时也会产生新的常数。原因是每次交易后产生的手续费会重新回到流动性资金池中,这样手续费会在完成代币价格兑换计算后重新添加到资金池,这样常数在每次交易后稍为变大一些,这样可以为流动性提供者提供系统性的盈利。
举个例子,按照上面数字假设,假如用户用100ETH兑换MKR,假设1%的费率,那么,MKR的流动池是77.9510MKR,ETH的流动池为450ETH,根据规则,新的常数是77.9510*450=350,77.95,比原来的常数350,00增加了77.95。

除了ETH和ERC20代币可进行兑换之外,ERC20代币之间也可以实现兑换,且不必存在单独的资金池。其兑换的方法是通过ETH完成兑换,因为ETH是所有ERC20代币的通用交易对,它可以成为不同ERC20代币之间进行交易的媒介,例如MKR和SNX代币之间的兑换,首先通过MKR/ETH的交易对兑换成为ETH,然后通过SNX/ETH交易对完成兑换。
图集详情底部广告位