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 Token 铸造
在 Uniswap 里对某个买卖对(pair) 第一次增加流动性的人,可以任意对买卖对的价格进行定价,即 x、y 和 k 都是这个人定的。
创世流动性之后再增加 dx 和 dy,如果按系统默认值去增加,都会受 dx/dy=x/y 的束缚。
增加流动性后,Uniswap 会给用户返回一个 erc20 代币,这就是 LP Token。
LP Token 的总量是改变的,增加流动性就会铸造新的 LP Token,即增发,而赎回流动性则会毁掉 LP Token。
假设创世流动性里用户注入了 x 个 ETH 和 y 个 USDT,则创世铸造 LP Token 的数量 =sqrt(x*y)。(注:sqrt 是开方;注:代码里的公式是 sqrt(x*y)-1000*10^-18,这个 1000*10^-18 是个啥不管它,我没研究,反正这么小无所谓)
创世流动性之后,有用户增加了 (dx,dy) 个币的流动性,而且 dx/dy=x/y,则系统新铸造出 d(LP Token 数量)=dx/x*铸造前 LP Token 的总量,返回给用户。
但如果 (dx-ddx)/dy=x/y (注:ddx>0),新铸造的 d(LP Token 数量)=dy/y*铸前总量,而这 ddx 个币则相当于捐赠给了一切的 LP Token 持有者。
如果 dx/(dy-ddy)=x/y(注:ddy>0),则新铸造的 d(LP Token 数量)=dx/x*铸前总量。ddy 变成了捐赠。
可以总结为:增加流动性取得的 LP Token 数量 =min(dx/x*铸前总额,dy/y*铸前总额)。(注:min 是取最小值函数)
在极点情况下,有人误打了 dx>0 个币,但 dy=0 个币,则不会铸造新的 LP Token,dx 悉数变成了现有 LP Token 里的成分,捐赠给了一切现有 LP Token 的用户。
这种误打币到某个 LP Token 合约地址,是常常会产生的。
LP Token 毁掉
当用户想赎回流动性时,需求将 LP Token 毁掉掉。按 Uniswap 系统的流程就可以完结毁掉。
假设现在一个买卖对(ETH/USDT)的流动性有 x 个 ETH,y 个 USDT,现在有用户毁掉 z 个 token,则用户可以得到 ETH 和 USDT 的数量分别是 :dx=(z/ 总 LP Token)*x,dy=(z/ 总 LP Token)*y
LP Token 的权益
从上面剖析可以明晰地知道,LP Token 代表了一个买卖对的资金池的一切权,可以从这个资金池里按份额提取买卖对代币的份额。
LP Token 的成分包含了两种币,如 ETH/USDT 买卖对的 LP Token 就包含了 ETH 和 USDT 两种币。
随着流动性资金池里成分不一样,LP Token 的价值也不一样。
用户在 Uniswap 买卖,是需求付 0.3% 的手续费。比方用户用 dy 个 USDT 去 ETH/USDT 买卖对买 dx 个 ETH。
Uniswap 首要会扣除用户 0.3%*dy 的本金,然后去核算该给用户的 dx,在给完用户 dx 后,这 0.3%*dy 的本金会注入到 LP Token 的成分里,相当于 LP Token 增值了。
LP Token 会取得一切的捐赠收益,比方用户误将 dx 个 ETH 转入了 ETH/USDT 这个 pair 的 LP Token 合约地址,dx 个 ETH 就会变成捐赠给 LP Token,增加了 LP Token 的价值。
感谢 Plancker Dao 成员李世胜对本文的贡献
视野开拓
闻所未闻的衍生产品——美元化收益率曲线票据,非连续分配看多票据,固定期限国债浮息卷,基准同业浮动利息票据,石油连接票据和实际收益债券分拆票-《诚信的背后》