V1
价格会使用恒定产品(x*y=k
)
维持 eth_pool(ETH 数量) * token_pool(代币数量) = invariant(不变量)
这个关系来实现
ETH → OMG
TH_pool(ETH 资金池) = 10
OMG_pool(OMG 资金池) = 500
invariant(不变量) = 10 * 500 = 5000
OMG 购买者发送 1 ETH 到这个合约。其中 0.25% 的手续费会被划分给流动性提供者,剩余的 0.9975 ETH 会被放入 ETH_pool
。不变量除以流动性池里 ETH 新增后的数量,得到新的 OMG_pool
的代币数量。剩下来的 OMG 会转给购买者。
购买者发送: 1 ETH
Fee(费用) = 1 ETH / 500 = 0.0025 ETH
ETH_pool(ETH 资金池) = 10 + 1 - 0.0025 = 10.9975
OMG_pool(OMG 资金池) = 5000/10.9975 = 454.65
购买者收到: 500 - 454.65 = 45.35 OMG
不变量表示的是上次交易结束后ETH_pool(ETH 资金池) * OMG_pool(OMG 资金池)
的值。
ETH_pool(ETH 资金池) = 10.9975 + 0.0025 = 11
OMG_pool(OMG 资金池) = 454.65
new invariant(新的不变量) = 11 * 454.65 = 5,001.15
相对于流动性资金池较大规模的购买会导致价格明显下滑。不过在活跃的市场中,套利操作会确保价格不会和其他交易所偏移太多。
手续费
ETH 兑换 ERC20:ETH 的 0.3%
ERC20 兑换 ETH:ERC20 代币的 0.3%
ERC20 兑换 ERC20:输入 ERC20 到 ETH 交易,手续费为 ERC20 代币的 0.3%,输出 ETH 到 ERC20 交易,手续费为 ETH 的 0.3%,实际手续费为输入 ERC20 代币的0.5991%
兑换手续费是被立即存入到流动性准备金中。由于总准备金增加了,但是没有增加额外的份额代币,所以所有的份额代币增加了同等价值。这相当于向流动性提供者支付了一笔费用,流动性提供者可以通过销毁份额来提取。
由于手续费被添加到流动性资金池中,不变量在每次交易结束时都有增长。在一次交易中,invariant
不变量表示的是上一次交易结束后的 eth_pool(ETH资金池) * token_pool(代币资金池)
V2
Uniswap于2020年5月19日在Ethereum 主网上推出了第二个版本,以配合核心合约v1.0.1的发布
LP得到0.3%的手续费分成奖励–这个分成是基于其池中代币相对于整个池子供应量的比例。
ERC20到ERC20的代币交换
ERC20到ERC20的代币交换,其中ETH不再需要作为中介代币来促进交换过程,取消这一要求后,交易次数减少了一半,节省了gas费。这也使得Dapps在没有设置直接交换代币池的情况下,可以有效地找到从一个代币到另一个代币的 “路线”。
价格预言机:允许根据每个区块的代币对价格进行时间加权平均定价。
允许开发者根据该代币在一些区块上的价格变动计算出平均的代币价格,这些区块也通过它们的时间戳代表一段时期。这个时间段的累积可以是最近一小时、24小时或更长时间。
这些价格被称为 “时间加权平均价格”,或TWAPS。
闪电交换
能够从Uniswap池中 “借用 “代币,与外部服务进行一些任意交易,并在一次交易中偿还你最初的借贷资金。该交易是具有原子性的,这意味着如果在任何阶段交易失败,它将被全额还原。这种功能的明显用例是利用流动性池执行套利交易,但也有其他用例提供了好处,比如削减执行特定DeFi操作的gas费用,比如关闭Maker Vault。
利用Uniswap池来结算Maker Vault,你将偿还债务,并从该Vault中提取你的抵押ETH(或其他抵押代币)来偿还Uniswap池。这比使用您的自有资金来实现同样的任务所需的Gas更少。
支持非标准的ERC20代币
通过将无效返回类型的transfer和transferFrom视为成功转移,支持非标准的ERC20代币。这看起来似乎微不足道,但主要的代币如USDT(Tether)和BNB(Binance Coin)在它们的转移方法上正是这样做的。包括广泛采用的没有完全遵守ERC20标准的代币,加强了Uniswap在使用量上优先链上交易所的主张。
额外的实用方法,以防止在转移的代币数量超过Solidity所能支持的情况下出现溢出。
缺点:每笔Uniswap交易都很昂贵。Uniswap没有实时订单簿
V3
(x+m)*(y+n)= k,在V2上增加了m,n
分不同价格阶段提供流动性(集中流动性)
V2 LP只赚取一小部分资本的费用,这可能无法适当补偿他们因持有两种代币的大量库存而承担的价格风险(无常损失
)。 此外,由于流动性摊薄在所有价格区间,交易者往往会出现很高的价格滑点。
LP可以将任何数量的不同的集中持仓组合存入一个池子里。 例如,ETH/DAI池中的LP可以选择将100美元分配给1,000-2,000美元的价格区间,并将另外50美元分配给1,500-1,750美元的区间。
用户针对所有单个曲线的综合流动性进行交易,每个流动性提供者的Gas成本不增加。 在某一价格区间收取的交易费由LP按其对该区间贡献的流动性按比例分成。
通过集中流动性,LP可以在指定的价格区间内提供与v2相同的流动性深度,同时将远低于v2的资本风险,节省下来的资本可以对外持有,投资于不同的资产,存放在DeFi的其他地方,或者用于增加指定价格区间内的风险敞口,赚取更多的交易费用。
实例:
Alice和Bob都想在Uniswap v3上的ETH/DAI池中提供流动性,他们每人有100万美元。 目前ETH的价格是1500DAI。
Alice决定在整个价格范围内部署她的资本(就像她在Uniswap v2中一样)。 她存入50万DAI和333.33ETH(共值100万美元)。
Bob则建立了一个集中的仓位,只在1000到2250的价格范围内存款。 他存入了91751DAI和61.17ETH,总价值约18.35万美元。 他自己保留了另外的81.65万美元,按照自己的喜好进行投资。
虽然Alice投入的资金是Bob的5.44倍,但只要ETH/DAI价格保持在1000到2250的区间内,他们赚取的费用是一样的。
在V3 发布后,对于在0.10%的单一价格区间内提供流动性的LP来说,资本效率收益最高将达到4000倍。 v3 资金池工厂在技术上能够支持0.02%的颗粒度,相对于v2来说,最高可获得20000倍的资本效率收益。然而,更多颗粒度的资金池会增加兑换时的 Gas成本,因此在2层网络上可能更有用。
可以在一定程度上囤货或者出货,但是这个是基于自己对市场的判断。
提供多个收费层级
每对LP提供三个独立的费用等级–0.05%、0.30%和1.00%。 这些选择可确保LP根据预期的货币对波动率来调整其保证金: LP在ETH/DAI等非相关货币对中承担更多的风险,反之,在USDC/DAI等相关货币对中承担最小的风险。
预计同类相关资产对会在集中在0.05%的费率附近,ETH/DAI等资产对会使用0.30%,而外来(exotic)资产可能会发现1.00%的交换费用更合适。可以根据需要通过治理增加额外的收费层。
高级预言机
时间加权平均价格(TWAP)预言机
Uniswap v3对TWAP预言机进行了重大改进,使其可以在一次链上调用中计算过去约9天内的任何最近TWAP。 这是通过存储一组的累计和而不是只存储一个累加来实现。
这一系列的历史价格累积器使得创建更高级的预言机变得更加容易和便宜,包括简单移动平均线(SMA)、指数移动平均线(EMA)、异常值过滤等。
尽管有这一重大改进,但Uniswap交易商保持预言机更新的Gas成本相对v2减少了约50%。外部智能合约
中计算TWAP的成本也明显便宜了。
经济模型
UNI初始发行总量为 10 亿枚,会在4年内完成分发,其中60%分配给社区,21.51%归属团队,17.8%分配给早期投资者,0.69%分配给顾问。团队、投资人和顾问的代币都分4年线性解锁。,4年之后保持固定的2%的通货膨胀率以维持生态的健康与稳定。
流通4.56亿,总量10亿,价格8.3,市值38亿,FDV 83亿,TVL 74.6亿 2022.3.7,ATH 44.9 2021.5.3,ATL 1.03 2020.9.17
总结
无偿损失较高、资本效率低下、交易品种过少等问题,后续会有curve v2、Balancer V2对这些问题进行一定改善。