虚拟货币——成为Web3.0用户的Step2

在上一期区块链知识科普中,小编向大家科普了Web3.0中的交易所CEX与DEX,这一期,我们来点干货吧!本文将以Uniswap为例,跟大家描述DEX的运作原理,大家搬好小板凳开始学习吧!

 

Uniswap通过Liquidity pool模块提供流动性管理,每个交易对的流动性都通过一个单独的以太坊合约来管理,通过add或remove方式增加或减少做市池中交易对的流动性。如图2.1所示,Uniswap系统模型中存在两种角色:1.流动性提供者liquidity provider,可以理解为做市商;2.交易者trader。

 

图2.1 Uniswap的流动性交易(做市)池

 

Uniswap工作流程:流动性提供者负责根据当前做市池两种Token数量,等比例向做市池注入两种Token,以提升交易池流动性。例如图2.1中,做市池有100个Token A和10个Token B(说明当前A和B之间的兑换价格是10:1的关系),那么就需要按照10:1的比例,存入Token A和B。如果交易者trader要买入1个Token B,根据当前价格就需要支付10个Token A。由于实际每笔交易中都有价格滑点的存在,真实的成交价格与当前价格比例存在一定偏差,trader实际收到的Token B会小于1个。此外,trader还需要额外支付交易额0.3%,作为对流通性提供者的奖励。

 

Uniswap工作原理:Uniswap通过恒定乘积做市商模型CPMM自动计算交易对的兑换价格以及确定交易产生的滑点。CPMM模型遵循简单公式img2,假设某个交易对Token A-Token B,img3是流动性池中Token A的总流通量,img4是Token B的总流通量,在流动池中交易对流通量不变的情况下,img5img6的乘积都保持常数img7。但是,由于每次交易都会改变做市池中Token A和B的数量,所以其价格也会发生变化。假设pool中开始为1200个A和400个B,所以其兑换价格为3:1,用户以3个TokenA兑换了1个TokenB,Pool中变成了1203个A和399个B,但是此时img8img9的乘积变成了479997不再是原本的常熟480000(0.3%手续费对于滑点影响甚小,此处分析不考虑),那么CPMM就通过设置交易滑点,来确保img10保持常量480000。假设img11为用户支付的Token A数量、img12为用户交易得到的Token B数量,交易完成后,做市池中Token A和B的数量,分别为img13img14。根据CPMM原理,交易完成后仍需满足img15,根据简单推导可得出img16,在上述例子中,用户实际交易得到的Token B数量img17约为0.9975,小于1个,而中间的差值即交易滑点Price Impact。而当pool中Token A、B数量修改为开120和40时,同样用户以3个TokenA仅能够兑换0.9756,这说明做市池中币量越多,交易所产生的滑点就越小。

 

以上所说的币都是基于以太坊ERC-21协议的虚拟货币,通常意义上可以被理解为“同质化代币”fungible token,在Web3.0中还有另外一类基于区块链的非同质化代币none fungible token,也就是大家熟知的NFT。关于NFT的介绍,请大家关注下一期的推文!

首页    知识科普    虚拟货币——成为Web3.0用户的Step2