freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

解读Dex中的无常损失:原理,机制,公式推导
2023-01-20 09:39:35
所属地 重庆

本文源于十四正在撰写的《UniSwap 从V1到V3的去中心化交易所之路》中用作资料援引,也发现市面文章的推导公式都颇为复杂,且重要逻辑转换缺乏描述,而无常损失又是 Dex 中 AMM 的重要部分,故单独成文。

如读者对无常损失以及对应影响有兴趣的,亦可直接跳转文末阅读白话版本

本文推导基于 AMM 经典恒积公式

jwbscx9ecsr8jquf.png

AMM 机制简介可阅读:一文讲清-NFT市场新秀 SudoSwap 的 AMM 机制-创新挑战与局限

部分公式中虚线系公式编辑器误操作,无实际意义

如需 word 源文档可在公众号后台回复“无常损失”获取

Part 1: 计算初始持有价值

假定我持有若干 e 0(ETH) 以及若干 t 0(Token),初始两者价值相等,如 1 e 0 = 10 t 0 ,用公式表达其 token 的价格(用 ETH 本位计)则 p 0 为:


8xnuaeh6a7eh1lcj.png

则我持有的总价值(用 ETH 计)等于数量*价格为:

76z07s5td6hq18dt.png

如果未进行Uniswap注入 Lp 的行为,则未来即使 token 对比 Eth 的价值变动,产生了新的价格,则我介时的资产总值 VH 为:

q7x0as0j029tjnpq.png

Part 2 :为 UniSwap 注入流动性

我们可以将 ETH 和代币两者按一定比例注入流动性,这里方便计算假定为按总值各占 50% 的注入,流动性池会给我们 Lp 的凭证,如 10 个 LpToken 用于证明我们占据当前总流动性的分红权益股份。由于恒积公式,只有注入和抽离 LP 会改变 K 值(本文中均不算手续费收入)

la47ucr1462ub2m4.png

所以可以推导出计算当前 e 1 的数量公式:


aoxq554v2qgcvpcu.png


最终

47dvxi3zyqic3s03.png


如此综合计算我们可以提取的流动性价值 VU 是

m21jlm8cbgof1ca4.png

此处得出 VU 的将构成后续无常损失部分的被减数,因此特地为 VU 推导了上诉的两个采用 e 1 以及不采用 e 1 的公式

Part 3 :无常损失公式推导

依据 Part 1 我们得出了保持持有当前 token 的价值 VH,

依据 Part 2 我们得出了不用持有而是投入 Uniswap 做 LP 的总价值 VU,

显而易见:Divergence loss(无常损失或者发散损失)应该是 VD

ip2izhyygl0m7klg.png

由于价值涨跌应该依据其对于原始价值的比值,所以我们把等式两边都除以 VH

q17wajdd62pwki1r.png

此处带入上文 Part 1 和 2 结论中的 VH 与 VU 详细公式

ga8vpkr28pq556f6.png

所以无常损失率 VD/VH  为:

dveru96s46bozoml.png

这时最关键的一步,无常损失发生在有价格差的两个时间段上,所以我们来带入价格的变化率 R,其等于两个时间的价格相除

msoco8ly3b5xchx0.png

结合 Part 1 中的公式

yy3zgwlxite2nbmd.png

所以 R 也等于

ujr3fi29lshqjbjg.png

结合无常损失率 VD/VH  我们将核心部分都乘以 e 0 来形成只有 R 的最终公式

1tm1bs8fxk8vnia1.png

这样则可以化简出只有 R 来表示的无常损失率

23f28ok9esagojtl.png

由于最终无常损失率值和 R 值有关系,则也意味着只要 R 有变动,无论增加还是减少,都将产生无常损失,并且按倍数衡量是一个对等的数值

Part 4 图表化无常损失公式

我们可以通过绘图工具来呈现这个公式的结果,虽然下图看似是一个非对称的曲线,但实际上是对称的,因为他是一个相对的倍率,即对于原价值的 1 ETH= 100 Dai 而言,跌到 1 ETH= 50 Dai 是下跌 1 倍,等于涨到 1 ETH= 200 Dai 则是上涨 1 倍,其无常损失是相同的均为 5.72%

szsc3b64tytkq88n.png

afeaphwbgz6u80m9.png

如何理解无常损失?

  • 无常是什么意思?

首先他是命名不恰当,之前选择“无常”( impermanent loss)这个词是因为如果价格背离被逆转,那么由于价格背离造成的损失也会被逆转,后来更多的文章会采用(divergence loss)来描述他。

  • 无常损失在何时发生?

如果价格回到与流动性提供者增加流动性时相同的价值,这种损失就会消失。这种损失只有在流动性提供者撤回其流动性时才会实现,并且是基于存款和取款之间的价格差异

  • 无常损失会超过导致 LP 入不敷出吗?

流动性提供者的实际回报,其实是价格差异造成的背离损失与交易所交易的累计费用之间的平衡。

zpmimmq31xk04tlu.png

如上图,该账户自成为 LP 以来,与仅持有原始资金相比,该账户一直处于净负头寸(黄线)。这是由于在此期间 ETH 价格变动(绿线)造成的巨大背离损失(蓝线)。然而,自始至终总费用一直在稳步累积(红线)。随着 ETH 价格接近提供流动性的价格,大部分损失会被扭转。

  • 无常损失究竟来源何处?

向市场提供流动性做 LP,即成为做市商,实际上是和市场中的用户做对手盘。而 AMM(自动化做市商)是被动的和市场中的用户做对手盘,即当市场中大部分人看好 ETH 的后续市场,则会用 DAI 买入 ETH,你的流动性池子会被动的增加 DAI 而减少 ETH。

所以,提供流动性就代表了总是和市场做反向的操作,总是倾向去持有更多的弱势资产(当 ETH 上涨为强势资产,DAI 就是弱势资产)。于是当 ETH 上涨,你的流动性会不断提前抛出 ETH,而拿到更多的 DAI,这些被提前抛出的 ETH 就成了无常损失的来源,即这个时候无常损失可以理解为你在 ETH 上的踏空损失,或者是被外部套利者拿走了池内的价值。

相关资料:

https://uniswap.org/whitepaper.pdf

https://pintail.medium.com/understanding-uniswap-returns-cc 593 f 3499 ef

https://pintail.medium.com/uniswap-a-good-deal-for-liquidity-providers-104 c 0 b 6816 f 2

https://hackmd.io/@HaydenAdams/HJ 9 jLsfTz

https://github.com/Dapp-Learning-DAO/Dapp-Learning/blob/main/basic/13-decentralized-exchange/uniswap-v1-like/README.md

欢迎你从公众号后台留言作者探讨web3行业问题

点赞关注十四,用技术视角带给你价值

# web3.0 # DeFi安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录