了解Uniswap流动性池设计。
原标题:Uniswap LP代币的铸造、销毁和权利
介绍了Uniswap中LP代币的铸造、销毁和权限。
Uniswap的还盘模式
在中心化交换中,用户可以在买卖之间下订单。交易所的匹配引擎将根据时间和价格对订单进行排序。一旦买卖订单的价格重叠,交易就可以完成。
但是Uniswap没有挂单的设计。相反,流动性池充当所有交易的交易对手。
流动性池包括两种需要交易的货币,如ETH和USDT。例如,流动性池中有x ETH和Y USDT。那么k=x*y(k是常数)
当用户a想用dy USDT购买ETH时,用户a的价格为Y/X,不考虑滑动点。当交易真实时,用户可以购买的ETH数DX为(不计0.3%手续费):k=(x-DX)*(y+dy),DX=x-k/(y+dy)
交换时,流动性池中的资金变为:(x-dx)ETH和(y+dy)USDT,ETH的价格变为(y+dy)/(x-dx)。
以上是Uniswap交易的基本模式。
我们来谈谈流动性池的设计。
LP代币铸造
在Uniswap中,第一次为一对货币添加流动性的人可以随意设定货币对的价格,即x、y和K由该人设定。
如果DX和Dy是在后面加的,那么如果是按照系统默认值加的,那么它们将受到DX/Dy=x/y的约束。
在添加流动性之后,Uniswap将向用户返回一个ERC20代币,称为LP代币。
LP代币的总量是可变的。增加流动性将创建新的LP代币,即额外发行,而赎回流动性将销毁LP代币。
假设x ETH和Y USDT注入创维流动性,创维铸造的LP代币数量为sqrt(x*Y)。(注:sqrt为平方根;注:代码中公式为sqrt(x*y)-1000*10^-18,此1000*10^-18为零。不管它是什么,我都没有研究它,不管它是不是那么小
创世纪流动性结束后,如果用户加上(DX,Dy)币的流动性,DX/Dy=x/y,系统将新投D(LP代币数量)=投DX/x*前的LP代币总量,并返回给用户。
但是,如果(DX-DDX)/dy=x/Y(注:DDXgt;0),则铸造前新铸造的D(LP代币)=dy/Y*的数量和DDX硬币相当于捐赠给所有LP代币持有者。
如果DX/(Dy ddy)=x/Y(注:ddygt;0),则新铸造的D(LP代币)=DX/x*铸造前的总量。Ddy成了一笔捐款。
可概括为:通过添加流动性获得的LP代币数量=min(DX/X*铸造前总金额,dy/y*铸造前总金额)。(注:Min为最小函数)
在极端情况下,有人错误地键入DXgt;0个硬币,但dy=0个硬币,将不会生成新的LP代币。DX已全部成为现有LP代币的组件,并捐赠给所有现有LP代币用户。
这种对LP代币合约地址的错误输入经常发生。
LP代币销毁
当用户想要赎回他们的流动性时,他们需要销毁LP代币。根据Uniswap系统的流程,可以完成销毁。
假设一个交易对(ETH/USDT)有x ETH,y USDT流动性,现在用户销毁Z代币,那么用户可以得到的ETH和USDT的数量是:DX=(Z/total LP token)*x,Dy=(Z/total LP token)*y
LP代币权益
从上面的分析可以看出,LP token表示一个交易对的资金池的所有权,从中可以按比例提取交易对token的份额。
LP代币的组成部分包括两种货币。例如,ETH/USDT交易对的LP代币包括ETH和USDT。
由于流动性池的组成不同,LP代币的价值也不同。
用户在Uniswap交易时需要支付0.3%的服务费。例如,用户使用dy USDT购买DX ETH/USDT。
Uniswap将首先从用户中扣除0.3%*dy的本金,然后向用户计算DX。将DX给用户后,0.3%*dy的主体注入LP代币,相当于LP代币的增量。
LP代币将获得所有捐赠收入。例如,如果用户错误地将DX ETH传输到ETH/USDT的合同地址,则该对的LP token,DX ETH将被捐赠给LP token,从而增加LP token的价值。
感谢普朗克道成员李世生对本文的贡献
文章标题:解读uniswap-LP令牌机制:铸造、销毁与权益
文章链接:https://www.btchangqing.cn/183971.html
更新时间:2021年01月23日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。
回调点,我再进。。。
震撼!区块链