之前蓝狐笔记提到Bancor V2试图解决“无常损失”的问题,但并没有披露细节,前几天Bancor进一步披露了部分细节,主要如下图:
(Source:Bancor)
从图中可以看出其核心有两个:一是预言机提供最新价格;二是根据预言机价格更新代币池比重,也就是动态池的模式。
1.假设初始池为10ETH-1000BNT,其中假设ETH市场价格为100美元,ETH在代币池中的价格也是100美元,BNT市场价格为1美元,代币池价格也是1美元。也就是,假设ETH和BNT的市场价格和代币池价格一致,那么,ETH-BNT池是2000美元流动性的代币池,且不存在套利空间。
2.ETH市场价格上涨。假设ETH市场价格涨至120美元,ETH代币池价格为100美元,BNT市场价格为1美元,代币池价格也是1美元。也就是,ETH市场价格上涨了20美元,那么,这个时候,就存在了套利空间。整个流动性池的实际价值为2200美元,而不是2000美元。
3.为了防止流动性提供商产生损失,Bancor V2通过获取预言机价格,并升级代币池比重。怎么升级?在获取预言机提供的市场价格之后,ETH的池价格也升至120美元,那么,这个时候10ETH的代币池价值为1200美元,1000BNT为1000美元,整个代币池价值为2200美元,跟市场价值趋于一致。而更新之后,10ETH的占据代币池的54.5%的比例,而BNT占据44.5%的比例。通过这样的调整,作为流动性提供商,就不会因为ETH上涨产生“无常损失”。关于什么是无常损失,可以参考蓝狐笔记之前的文章《Bancor 有机会超越Uniswap吗?》
那么,这是相对比较粗线条的描述。具体来说,会有什么问题?
对此,Balancer的CEO Fernando提出了不同的看法:动态代币池的概念很有意思,其核心是实现代币池价格和链上预言机价格的一致,不过,可能会存在预言机价格延迟的问题。当ETH市场价格上涨至120美元,这会导致交易者立即套利并将价格推至120美元。预言机价格依然滞后在100美元。这会导致将价格重新变为100美元,这会产生第二次交易者套利机会,直到预言价格提供跟市场一致的价格为止。这样的结果是:任何预言机喂价和真实市场价格之间的偏差,都会导致代币池中一个代币被消耗光。传统的AMM没有价格预言机概念,它通过市场感知来管理,所以在市场价格和池价格之间没有偏差。因此除了同步至新的市场价格之外,没有其他价值可以从池中“抽取”。这些被抽取的价格,也就是所谓的“无常损失”。这是AMM固有的部分。
对此,Bancor的Nate Hindman作出了回应:
Nate Hindman认为Fernando作出了错误的假设。首先,Bancor V2的动态权重并不会根据交易调整比例。因此,一旦发生预言机价格延迟问题(预言机的喂价跟市场价格不一致时),会存在即时套利机会,但权重此时不会调整。只有当预言机价格更新时,才会调整权重,以创造新的套利激励,重新平衡价格。因此不存在二次套利的机会。
总言之,Bancor V2代币池只根据预言机价格更新调整代币池比重;如果代币池价格跟预言机一致,就不会调整比重;如果ETH市场平均价格上涨至120美元,交易者将价格ETH推至120美元,当预言机价格更新,ETH的代币池价格已经是120美元,不会存在套利机会。此外,在第二步和第三步之间,确实存在一定的套利机会。不过预言机价格更新,导致代币池比重变化,且每个池都有两个池代币的事实可以阻止无常损失。
从双方的争议看,Bancor V2依然存在套利机会,这是不可避免的,不过由于引入了预言机价格来调整代币池的比重,它确实也在一定程度上可以防止无常损失。
关于Bancor的更多文章,可以参考:《Bancor V2:引入可降低滑点的AMM》《Bancor 有机会超越Uniswap吗?》