附: 以下为模拟交易:(1)当 1 ETH = 500 USDT,做市商存入 10 ETH 和 5000 USDT。他的总资产价值是10000 USDT。(2)当 1 ETH = 550 USDT,这个时候就存在套利的空间,在 AMM 机制下,做市商池就会自动向套利者卖出 ETH 换取 USDT,因此,目前流动性池中资产变为 9.53 个 ETH 和 5244 个 USDT,对应的 ETH 的价格为 550 USDT,总资产价值是 10488 USDT。(3)如果不去做市,USDT 本位的价值为 10500,这便产生了相对的 12 USDT 无常损失。 相反的, (a)当价格下跌 1 ETH = 450 USDT 时,套利者会向池子注入 ETH 来换取有利润空间的 USDT,直到 ETH 的场内价格与市场价相同,因此做市商的流动池就变为 10.54 ETH 和 4743 USDT,总资产价值是 9486 USDT。(b)如果不进行做市活动,总资产价值是 9500 USDT。相对来看整体资产贬值了 500 USDT,进行做市额外还损失 14 USDT。从实际例子中不难看出不论价格涨跌,在AMM机制下,流动性供应商的反向操作都会造成一定的无常损失。第一类:动态权重的恒定加权几何平均函数 此类解决方案以 Bancor V2 为代表项目。最原始的灵感是 Balancer 为 AMM 引入了恒定几何加权平均的函数。 本质跟 Uniswap 的恒定乘积类似,但赋予了每一项指数(权重)的概念,也因此拥有更灵活的曲线形态。也是 Balancer 第一次在一篇文章(Interest-Bearing Stablecoin Pools Without Impermanent Loss https://medium.com/balancer-protocol/zero-impermanent-loss-stablecoin-pool-with-lending-interests-a3da6d8bb782)中提到了可以通过动态更新权重项来从根源上阻止无常损失的发生,而 Bancor V2 则对此方案进行了更通用细致的数学描述(Calculating Dynamic Reserve Weights in Bancor V2 https://blog.bancor.network/calculating-dynamic-reserve-weights-in-bancorv2-538b901bcac4)(pdf 版本 https://drive.google.com/file/d/1lYsaUi5du7BdP5eXgVJX60POcg2UkBfZ/view)。 细致的数学描述这里不展开讲解,由于篇幅限制本文只进行原理概要。如果权重项不变的话,可以将曲线形态看成跟 Uniswap 一样。如果不断变化权重,曲线将会绕着曲线上的某一个点在不断旋转,使得旋转后的曲线在该点的切线斜率(即汇率)与最新的市场价格保持一致,而促进这个旋转计算的便是来自外部市场价的预言机驱动,通过为 AMM 更新每一刻最新的市场价,反推权重项的计算,以使当前点(池子两资产数量组成的点)在新曲线的切线斜率不断随市场变化,进而不创造套利空间。形象的计算如下: 虽然此类解决问题的方法是非常本质的,但缺陷也是十分明显且隐患巨大。一个本来可以完全自动应对市场的 AMM 需要单点依赖一个外部预言机,一旦预言机出现问题,即便是很小的问题,也会给 AMM 带来巨大的套利攻击损失,这种损失不同于无常损失,是切切实实的用户损失,也会给以后 AMM 的商业扩大带来根本阻力。另外,此类 AMM 将彻底失去市场定价权,即放弃了自己成为 Primary Market,我们都知道随着 DeFi 等的崛起,越来越多有价值的新资产都选择 DEX 作为自己的 Primary Market,反而那些中心化的主流交易所成了 Secondary Market。 (责任编辑:admin) |