Uniswap v3的TVL计算可能是错误的?

原文作者:Ivan Vakhmyanin

原文编译:RR

原文来源:Coinmonks

本文来自老雅痞

Uniswap v3的TVL计算可能是错误的?

2 x 2 = 5

Uniswap 是以太坊和整个区块链行业中最大的去中心化金融(DeFi)项目。成千上万的流动性提供者每天都在使用这些数据来制定自己的投资策略。那么,这些数字怎么会不准确呢?

让我们一步一步来,从问题开始。

问题所在

首先,什么是TVL,它是如何使用的?简而言之,TVL被定义为当前用户委托给区块链或协议的所有加密资产的美元价值。这些资产可能是去中心化交易所跨链桥协议或贷款协议的总流动性,或PoS区块链的总抵押资产。

加密货币市场投资者和其他参与者会在多种情况下使用TVL:

  • 评估协议的健康状况。这就是为什么流行协议会在主页上吹嘘他们的TVL。更大的TVL=更多的用户信任=更低的风险=稳定的利润。

  • 比较协议。如果我是一个加密交易者,我更愿意使用去中心化交易所或跨链桥等具有更高TVL的DeFi工具。

  • 衡量协议的增长。投资者如果看到一个协议或项目的TVL快速增长,会认为这是看涨该协议代币价格的信号。

这么看来,知道准确的TVL数字很重要,对吧?

但是,如果我说关于Uniswap v3 TVL的最新数据是有误导性的呢?不过,最让我惊讶的是,官方的Uniswap Chart App也有问题!我是这样发现的:

我当时正在做一个流动性分析项目,将Uniswap v3上的官方数据与我使用区块链原始数据进行的计算进行比较。这个步骤对于遵守最高的数据质量标准至关重要。为了开始验证,我选择了一个流行的流动性池USDC-WETH(费用水平0.3%)。

Uniswap v3的TVL计算可能是错误的?

看看Uniswap v3上的3号池——它有3.33亿美元的TVL和6100万美元的日交易量。

我马上遇到了一个问题:我计算的TVL价值是1.76亿美元,而不是Uniswap网站上报告的3.33亿美元。好吧,bug发生了。但在开始调试之前,我决定在最流行的以太坊区块链浏览器Etherscan上验证TVL。严格来讲,每个Uniswap v3池都是一个智能合约。因此,区块链浏览器可以显示池里拥有的代币余额,也就是TVL。

Uniswap v3的TVL计算可能是错误的?

我预计资金池的代币余额会比Uniswap报告的TVL稍高一些。这是因为该资金池不仅持有流动性,还持有已累积但尚未被领取的费用。但结果余额几乎是Uniswap报告的一半,而且令人惊讶的是,它与我的计算数字相同。

逐一比较资产的流动性也显示出了巨大的差异。这时,我意识到这个错误与我的数学能力无关。

Uniswap v3的TVL计算可能是错误的?

但这怎么可能呢?经过研究,我发现Uniswap依赖于去中心化的区块链索引服务The Graph。通过这项服务,任何开发者都可以为特定的区块链数据用例添加个人分析代码(称为subgraph),并通过API提供分析。

Uniswap Labs 为Uniswap协议分析创建了自己的subgraph,并通过The Graph托管服务将其提供。好在它的代码是公开的。不过,糟糕的是它的TVL计算错误。

对代码的简要分析表明,它考虑了所有的swap和流动性事件,但没有考虑费用。Uniswap池对每一次swap有0.01%到1%的费用。这笔费用从交易资产中扣除,累加给流动性提供者。反过来,流动性提供者可以随时收取应计费用。

然而,当前的Uniswap v3 subgraph显示的数字就好像从来没有累积和收取过费用一样。因此,Uniswap v3的TVL数据在每次swap时都与现实不符。

你可能会想:“在写这篇文章之前,你在GitHub上提交了issue ticket吗?”是的,这是我发现错误后的第一意图。你知道吗?该问题已经被记录了,是由核心开发人员在2021年11月创建的!

那么,为什么这个问题没有得到解决呢?我不知道。也许这个错误在发现时是可以忽略不计的。然而,这是一个随着每次swap而增加的累积错误。因此,随着池中费用和交易量的增长,由该错误产生的TVL差异将导致与现实的差异越来越大。我们可以看到,在像USDC-ETH这样收费高达0.3%的大型资金池中,情况已经失控!目前这个数字几乎是真实数字的两倍。

让我们验证一下总TVL

好了,我们现在知道了各个资金池中的TVL数字是扭曲的。下面我们将探讨这会如何影响投资决策。但是在我们开始之前,让我们看看这些错误是如何影响Uniswap v3协议的总TVL的。在撰写本文时,TVL被报告为近120亿美元。

即使你不是一个数据科学家也能看出这里有问题。

Uniswap v3的TVL计算可能是错误的?

我们可以从上面看到,TVL在2022年3月6日从5亿美元缓慢但稳定地增长到45亿美元。然后疯狂的事情发生了,TVL在2022年3月7日被报告为2540亿美元。这是整个以太坊网络有史以来最高TVL的2.5倍——在一天之内!很明显,数据有误。在接下来的几周里,TVL被报告为100-200亿美元。

此时,我失去了对Uniswap分析数据的所有信任。但我们怎么知道真正的TVL呢?我有两个选项。

选项1:分叉并修复Uniswap v3 subgraph。这个选项的缺点是,subgraph重新索引需要花费几天的时间。而且我并不喜欢The Graph使用的GraphQL语言。

幸运的是,我还有选项2:针对所有Uniswap v3和以太坊数据的高性能分析数据库Datamint,可以随时进行复杂的在线查询。

经过一些实验后,我创建了以下算法来精确计算TVL。

  1. 使用这两个步骤计算所有现有Uniswap v3池的TVL。

  2. 添加所有ERC-20代币转账池合约(包括所有无人认领的费用),并匹配Etherscan上的代币余额

  3. 添加所有流动性活动,然后添加所有的swap活动,以说明费用

  4. 比较两种方法,确保没有无法解释的差异

  5. 删除swap次数少于50或0.00000000000001代币数量的废弃池和空池(检测到7863个池(包括2,083对稳定币),我的算法将112个资金池作为空池/废弃池移除)

  6. 为每个代币找到稳定币的路径,将资金池TVL转换为美元价值

  7. 移除美元价值有问题的低流动性池,因为一些池在完全移除流动性后会显示不充分的价值(查看下图作为参考)

Uniswap v3的TVL计算可能是错误的?

8. 将所有剩余货币对的TVL转换为美元价值并相加

经过多次交叉检查,我得出了一个TVL结果:

Uniswap v3的TVL计算可能是错误的?

它几乎比报告的118亿美元少了4倍。

免责声明:我的计算可能包含错误。在面向企业客户的数据项目中,我们使用文档化方法、自动测试和许多其他工具来实现最高的数据质量。这些工具对于像这样的个人研究项目来说是多余的。本研究强调了现有数据中明显的问题,而不是提供最终的解决方案。

好的,我们会修正TVL的计算。这会有帮助吗?

问题不在于不正确的数字,而在于我们根据这些数字做出的决定。例如,大多数为流动性提供者提供的利润计算器都使用这些数字进行预测。

然而,修正TVL的计算并不难。Uniswap Labs要么在他们的subgraph代码中修复它,要么计算器开发人员开始使用其他数据源。核心问题是我们是否能相信计算器的预测是正确的。

我做了一些计算,简短的答案是——根本不可能。

我知道这是一个大胆的主张。许多流动性提供者使用现有的计算器,并影响成本高达数千万美元的决策。但是让我们来看看计算步骤,这样你就可以做出自己的判断了。

首先,让我们回顾一下Uniswap v3协议的一些核心概念。

其主要创新之一是集中流动性。本质上,使用Uniswap v3,你可以选择希望资金用作流动性提供者的价格范围。这是一个了不起的概念,可以为协议用户带来巨大的价值。流动性提供者限制了他们对无常损失的敞口,交易者可以在波动性较低时享受较小的价格滑点。但所有这些潜在的好处都是有代价的,那就是复杂性。

Uniswap v3的TVL计算可能是错误的?

因此,我们想了解一下Uniswap v3流动性提供者的收益是如何计算的。

在Uniswap v3中,流动性提供者选择要提供流动性的价格范围。一旦价格在这个区间内,他就会得到swap费用的分成。乍一看,流动性提供者希望其流动性头寸的价格区间越宽越好。然而,流动性是按比例分布在这个范围内的。因此,交易范围越广,每笔交易的swap费用就越低。

Uniswap v3的TVL计算可能是错误的?

在这个例子中,选项A显示流动性提供者选择了一个更宽的价格范围,选项2显示了相同金额的更窄的价格范围。如果在这两种情况下,价格都在选定的价格范围内,流动性提供者在选项b中得到的费用要多3倍。然而,如果价格波动较大,流动性提供者最终可能在选项a中获得更高的利润。

因此,选择合适的价格范围实际上取决于在风险和获得较低回报之间找到最佳平衡。

还有一个参数影响着流动性提供者的利润,而且经常被忽视。我不知道有哪个LP利润计算器会考虑这个参数,但这个参数可以改变一切。你现在一定在想这是什么。那就是LP的分布。看看下面的例子:

Uniswap v3的TVL计算可能是错误的?

在这个例子中,两个流动性提供者(LP1和LP2)持有头寸。LP1的仓位较窄,为3美元。LP2仓位较宽,为5美元。在这种情况下,如果价格不超出LP1的头寸范围,他将获得比LP2多3倍的费用。这是因为LP2在这个范围内只有1美元。这1美元会与LP1的3美元竞争。

如果你观察任何Uniswap v3池的流动性分布,你会发现它并不均匀。

Uniswap v3的TVL计算可能是错误的?

门槛越高,竞争越激烈。流动性提供者需要在选择有竞争力的区间和价格下跌概率较低的区间之间找到平衡。这就是为什么这种分布在LP的利润预测和战略制定中扮演着重要的角色。唯一的问题是,我不确定这个分布是否计算正确。

流动性狙击手

作为流动性提供者,你需要猜测价格、竞争状态和交易量。如果LP有一个愿望的话,那就是知道交易的未来,以便提前调整流动性头寸。

但如果我告诉你这是可能的呢?

在研究过程中,一些不同寻常的流动性提供者引起了我的注意。他们每天多次增减大量流动性头寸(超过1000万美元)。更令人惊讶的是,他们总是在同一个区块增加和减少流动性。

让我们看一个例子:

Uniswap v3的TVL计算可能是错误的?

有三笔交易都在15413416区块中,头寸3-5,以自下而上的顺序执行。采用Execute方法的第一笔交易是一份名为“MEV Bot”的合约,向USDC-WETH池中增加了2200万美元的流动性。

Uniswap v3的TVL计算可能是错误的?

第二笔交易通过WETH从USDC swap到DogeChain。这是一份价值约为16500美元的普通swap。

Uniswap v3的TVL计算可能是错误的?

第三笔交易又一次是“MEV Bot”,从USDC-WETH池中移除了2200万美元的流动性。

Uniswap v3的TVL计算可能是错误的?

在这个例子中发生的事情被称为“流动性狙击”。让我来解释一下这是如何运作的:

  1. 有人发送了一笔交易,将USDC swap到DogeChain

  2. MEV Bot在mempool中检测到这笔交易,并使用Flashbots技术或类似的技术激活与矿池的私人链接

  3. MEV Bot向矿工支付报酬,让他们按特定顺序包含一笔swap交易和两笔交易,以便提取价值

  4. MEV Bot在非常狭窄的价格范围内增加了大量的流动性(2200万美元),因此实际上,所有来自特定USDC-DogeChain交易的费用利润都归他所有

  5. 然后MEV Bot移除流动性并赚取费用(约35美元)

所以,扣除gas费后他的毛利大约是30美元。不是很多,是吗?是的,但他每分钟都会多次执行这个策略,这一切累计起来就很多了。你可以自己去看看。

这对作为流动性提供者的你意味着什么?这意味着流动性狙击手可能会从你的费用利润中抽走很大一部分。

结论

请不要误解我的意思。我相信Uniswap是一个具有巨大潜力的伟大项目。我也尊重Uniswap v3的核心中集中流动性的想法。然而,我发现Uniswap生态系统的分析部分还远未成熟。我相信这种情况很快就会改变。

让我总结一下我的研究结果:

  1. Uniswap v3图表中的TVL数据非常不准确。所有依赖官方Uniswap v3 subgraph的分析工具都存在同样的错误。

  2. Uniswap v3的总TVL是31.4亿美元,而官方网站报告的数字是118亿美元(在撰写本文时)。

  3. Uniswap v3流动性提供者的计算器对于实际策略没有什么价值,因为它们没有考虑竞争和流动性阻击手。

Uniswap v3的TVL计算可能是错误的?

幸运的是,你现在可以更好地理解Uniswap v3流动性池的实际运作方式,并可以相应地调整你的研究。

我无法提供财务建议,但我认为只有两种方法可以建立一个突出的流动性提供策略:

简单型。使用历史数据。尝试持有少量质押的流动性头寸,看看哪种选择效果更好。显然,这只有在市场稳定的前提下才有效。

进阶型。进行研究并相应地优化LP策略。如前所述,这需要深入理解Uniswap v3协议、并拥有数学和博弈论的能力,以及实时处理大量数据的强大数据分析工具。

这两种选择有一个共同点——你的决策要基于数据而不是直觉或随机工具。有时处理数据很困难,但它是有回报的。

原文链接

如有疑问联系邮箱:
*本文转载自网络转载,版权归原作者所有。本站只是转载分享,不代表赞同其中观点。请自行判断风险,本文不构成投资建议。*