@@ -15,6 +15,304 @@ web3 开发者,Python、Go、Rust、Solidity 等语言经验丰富,项目开
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-19
19+
20+ # Web3 金融:Uniswap V2 资金效率深度剖析
21+
22+ 在 Web3 时代,去中心化金融(DeFi)正重塑传统金融格局,而 Uniswap V2 作为自动做市商(AMM)的先锋,以其独特的 x·y=k 模型为市场提供了无限价格区间的流动性。然而,低资金利用率成为其核心痛点:大量资金闲置在非活跃价格区间,限制了流动性提供者的收益效率。本文将深入剖析 Uniswap V2 的资金利用率问题,通过实际案例计算 ETH/DAI 交易对在价格波动下的资金效率,并探讨其局限性及后续优化的方向。无论你是 DeFi 新手还是资深玩家,这场 Web3 金融的深度解析都将为你揭开 Uniswap V2 的效率密码!
23+
24+ Uniswap V2 凭借 x·y=k 的恒定乘积模型,为 Web3 金融市场提供去中心化流动性,但其资金利用率偏低的问题限制了资本效率。本文以 ETH/DAI 交易对为例,通过价格波动(1300 DAI/ETH 和 2200 DAI/ETH)下的资金利用率计算,揭示 DAI 和 ETH 两侧的资金变化规律:价格下降时 DAI 利用率约 6.92%,ETH 增加 7.4%;价格上涨时 DAI 增加 21.24%,ETH 利用率达 17.33%。分析表明,Uniswap V2 的流动性分散在无限价格区间,导致大部分资金未被高效利用,且在单向市场压力下可能出现资产“耗尽”。本文进一步探讨这一局限性如何推动 Uniswap V3 的集中流动性创新,为 Web3 金融的未来提供启示。
25+
26+ ## Uniswap V2 的资金利用率
27+
28+ 假设 ETH/DAI 交易对的实时价格为 1500 DAI/ETH,交易对的流动性池中共有资金:4500 DAI 和 3 ETH,根据 Uniswap V2 的公式(x * y = k),x = 4500,y = 3,k = 4500* 3 = 13500。
29+ 假设 x 表示流动性池中的 DAI,y 表示流动性池中的 ETH,k 表示流动性池中 DAI 和 ETH 的乘积。即初始阶段 x1 = 4500,y1 = 3,k1 = 13500。
30+
31+ ### 当价格下降到 1300 DAI/ETH 时
32+
33+ $$
34+ x \cdot y = k = L^2 \\
35+ x2 \cdot y2 = 13500 \\
36+ $$
37+ $$
38+ \frac{x2}{y2} = 1300
39+ $$
40+ 计算 x2 和 y2:
41+ $$
42+ x2 = 1300 \cdot y2 = \frac{13500}{y2} \\
43+ $$
44+ $$
45+ y2 = \frac{x2}{1300} = \frac{13500}{x2} \\
46+ $$
47+ 因为:
48+ $$
49+ \begin{align*}
50+ x_2 \cdot y_2 &= 13500 \\
51+ x_2 &= 1300 \cdot y_2 \\
52+ 1300 \cdot y_2^2 &= 13500 \\
53+ y_2^2 &= \frac{13500}{1300} \\
54+ y_2 &= \sqrt{\frac{13500}{1300}}
55+ \end{align*}
56+ $$
57+ 我们来计算:
58+ $$
59+ y_2 = \sqrt{\frac{13500}{1300}}
60+ $$
61+ 先算分数:
62+
63+ $$
64+ \frac{13500}{1300} = \frac{1350}{130} = \frac{135}{13} \approx 10.3846
65+ $$
66+
67+ 再开根号:
68+
69+ $$
70+ y_2 = \sqrt{10.3846} \approx 3.222
71+ $$
72+
73+ ** 所以,计算结果是:**
74+
75+ $$
76+ y_2 \approx 3.222
77+ $$
78+
79+ 已知:
80+
81+ $$
82+ x_2 = 1300 \cdot y_2
83+ $$
84+
85+ 刚才算出:
86+
87+ $$
88+ y_2 \approx 3.222
89+ $$
90+
91+ 代入计算:
92+
93+ $$
94+ x_2 = 1300 \times 3.222 \approx 4188.6
95+ $$
96+
97+ ** 所以:**
98+
99+ $$
100+ x_2 \approx 4188.6
101+ $$
102+
103+ 综上可得:
104+ ** x2 = 4188.6,y2 = 3.222**
105+
106+ ## 资金利用率
107+
108+ 我们分别计算 DAI 和 ETH 两侧的资金利用率。
109+
110+ ### 1. DAI 侧资金利用率
111+
112+ $$
113+ \text{DAI 侧资金利用率} = \frac{x_1 - x_2}{x_1} \times 100\%
114+ $$
115+
116+ - \( x_1 = 4500 \)
117+ - $( x_2 \approx 4188.6 $)
118+
119+ $$
120+ \begin{align*}
121+ \frac{4500 - 4188.6}{4500} \times 100\% \approx \\ \frac{311.4}{4500} \times 100\% \\ \approx 6.92\%
122+ \end{align*}
123+ $$
124+
125+ ### 2. ETH 侧资金利用率
126+
127+ $$
128+ \text{ETH 侧资金利用率} = \frac{y_2 - y_1}{y_1} \times 100\%
129+ $$
130+
131+ 注意:这里 \( y_2 > y_1\) ,因为 ETH 增加了,实际应该是流出 ETH 的比例(即 ETH 被买走的比例),所以用:
132+
133+ $$
134+ \text{ETH 侧资金利用率} = \frac{y_2 - y_1}{y_2} \times 100\%
135+ $$
136+ 或者
137+ $$
138+ \text{ETH 侧资金利用率} = \frac{y_2 - y_1}{y_1} \times 100\%
139+ $$
140+
141+ 但通常和 DAI 一样,计算“减少的部分占初始的比例”,所以:
142+
143+ $$
144+ \text{ETH 侧资金利用率} = \frac{y_1 - y_2}{y_1} \times 100\%
145+ $$
146+
147+ - \( y_1 = 3 \)
148+ - \( y_2 \approx 3.222 \)
149+
150+ $$
151+ \begin{align*}
152+ \frac{3 - 3.222}{3} \times 100\% = \frac{-0.222}{3} \times 100\% \\ \approx -7.4\%
153+ \end{align*}
154+ $$
155+
156+ 负号表示 ETH 增加了(DAI 换成了 ETH),这和 AMM 的 swap 方向有关。
157+
158+ ### 3. 总结
159+
160+ - ** DAI 侧资金利用率** :\( \boxed{6.92\% }\)
161+ - ** ETH 侧资金利用率** :\( \boxed{-7.4\% }\) (ETH 增加,DAI 减少)
162+
163+ 如果你想要 ETH 被“卖出”的比例(即 ETH 减少的情况),那要看价格上涨的场景。
164+
165+ ---
166+
167+ DAI 侧资金利用率为:
168+ $$
169+ \frac{4500 - 4188.6}{4500} \times 100\% \approx 6.92\%
170+ $$
171+
172+ ETH 侧资金利用率为:
173+ $$
174+ \frac{3 - 3.222}{3} \times 100\% \approx -7.4\%
175+ $$
176+
177+ ### 假设当价格涨到 2200 DAI/ETH 时
178+
179+ $$
180+ \begin{align*}
181+ x \cdot y = k = L^2 \\
182+ x3 \cdot y3 = 13500 \\
183+ \end{align*}
184+ $$
185+ $$
186+ \frac{x3}{y3} = 2200
187+ $$
188+ 计算 x3 和 y3:
189+ $$
190+ x3 = 2200 \cdot y3 = \frac{13500}{y3} \\
191+ $$
192+ $$
193+ y3 = \frac{x3}{2200} = \frac{13500}{x3} \\
194+ $$
195+ 因为:
196+ $$
197+ \begin{align*}
198+ x_3 \cdot y_3 &= 13500 \\
199+ x_3 &= 2200 \cdot y_3 \\
200+ 2200 \cdot y_3^2 &= 13500 \\
201+ y_3^2 &= \frac{13500}{2200} \\
202+ y_3 &= \sqrt{\frac{13500}{2200}}
203+ \end{align*}
204+ $$
205+ 我们来计算:
206+
207+ $$
208+ y_3 = \sqrt{\frac{13500}{2200}}
209+ $$
210+
211+ 先算分数:
212+ $$
213+ \frac{13500}{2200} = \frac{1350}{220} = \frac{135}{22} \approx 6.1364
214+ $$
215+
216+ 再开根号:
217+
218+ $$
219+ y_3 = \sqrt{6.1364} \approx 2.48
220+ $$
221+
222+ ** 所以,计算结果是:**
223+
224+ $$
225+ y_3 \approx 2.48
226+ $$
227+
228+ 已知:
229+
230+ $$
231+ x3 = 2200 \cdot y3
232+ $$
233+
234+ 刚才算出:
235+
236+ $$
237+ y3 \approx 2.48
238+ $$
239+
240+ 代入计算:
241+
242+ $$
243+ x3 = 2200 \times 2.48 \approx 5456
244+ $$
245+
246+ ** 所以:**
247+
248+ $$
249+ x3 \approx 5456
250+ $$
251+
252+ 综上可得:** x3 = 5456,y3 = 2.48**
253+
254+ ## 资金利用率计算
255+
256+ 我们分别计算 DAI 和 ETH 两侧的资金利用率。
257+
258+ ### 1. DAI 侧资金利用率
259+
260+ $$
261+ \text{DAI 侧资金利用率} = \frac{x_1 - x_3}{x_1} \times 100\%
262+ $$
263+
264+ - \( x_1 = 4500 \)
265+ - $( x_3 \approx 5456 $)
266+
267+ $$
268+ \begin{align*}
269+ \frac{4500 - 5456}{4500} \times 100\% \approx \frac{-956}{4500} \times 100\% \\ \approx -21.24\%
270+ \end{align*}
271+ $$
272+
273+ ### 2. ETH 侧资金利用率
274+
275+ $$
276+ \text{ETH 侧资金利用率} = \frac{y_1 - y_3}{y_1} \times 100\%
277+ $$
278+
279+ - $( y_1 = 3 $)
280+ - $( y_3 \approx 2.48 $)
281+
282+ $$
283+ \frac{3 - 2.48}{3} \times 100\% = \frac{0.52}{3} \times 100\% \approx 17.33\%
284+ $$
285+
286+ ### 3. 总结
287+
288+ - ** DAI 侧资金利用率** :$\boxed{-21.1\% }$
289+ - ** ETH 侧资金利用率** :$\boxed{17.33\% }$
290+
291+ ## Uniswap V2 有什么问题?
292+
293+ 资金利用率问题
294+ > 基于 x⋅y=k 的恒定乘积自动做市商(AMM)模型,其核心特点是理论上能够在从零到正无穷的整个价格区间内为市场提供流动性。然而,正是因为流动性资金被分散到如此广阔、乃至无限的价格范围上,导致在任何给定时间,只有围绕当前市场价格的很小一部分资金被实际用于促成交易。这就造成了整体资金利用率偏低的问题:大部分存入的资金处于“非活跃”或“闲置”状态,未能被高效利用,这通常会影响流动性提供者(LPs)的资本回报效率。当市场价格发生剧烈且持续的单向变动,导致资金池中某一侧的资产(例如,代币 X)被完全兑换耗尽时,该 AMM 将无法继续提供该种已耗尽资产(代币 X)的兑换服务(即池子无法再卖出代币 X)。这种固有的资本效率限制也是驱动后续 AMM 创新(如集中流动性模型)以寻求更高资金利用率的重要原因之一。
295+
296+ - x⋅y=k 这个公式本身并不能阻止其中一种代币在持续的单向市场压力下被买到接近枯竭。
297+ - 当一种代币(比如X)被大量买走,其在池中的存量 x 变得极小,那么它的价格就会变得极高。
298+ - “耗尽”在实践中意味着该代币的存量小到无法进行有意义的交易,或者其价格高到无人愿意购买。此时,AMM池中几乎只剩下另一种代币(Y)。
299+ - 这种情况正是由“市场价格发生剧烈且持续的单向变动”所驱动的,AMM通过调整内部价格来响应外部市场的变化,直到自身储备达到极限。
300+
301+ 所以,尽管 k 试图保持不变,但它约束的是 x 和 y 的乘积,而不是它们各自的绝对数量。在极端单向市场条件下,一个变量可以趋向于0,而另一个变量则会相应地趋向于无穷大,从而导致事实上的“耗尽”。
302+
303+ 为了解决 Uniswap V2 资金利用率偏低这一核心问题,后续诞生了 Uniswap V3 协议。
304+
305+ ## 总结
306+
307+ Uniswap V2 的 x·y=k 模型为 Web3 金融奠定了去中心化交易的基础,但其资金利用率偏低的问题不容忽视。通过对 ETH/DAI 交易对的分析,我们看到价格波动下资金利用率仅在 6.92% 至 17.33% 之间,大量流动性闲置在非活跃价格区间,且单向市场压力可能导致资产耗尽。这一局限性揭示了 AMM 模型的资本效率瓶颈,也推动了 Uniswap V3 集中流动性方案的诞生。未来,Web3 金融的创新将继续聚焦资金效率优化,为流动性提供者和投资者创造更大价值。探索 Uniswap 的效率之道,正是解锁 DeFi 潜力的关键一步!
308+
309+ ## 参考
310+
311+ - < https://github.com/Uniswap/v3-core >
312+ - < https://github.com/Uniswap/v3-periphery/tree/main/contracts >
313+ - < https://docs.uniswap.org/contracts/v3/guides/local-environment >
314+ - < https://j1mmy.fi/uniswapv3/pool >
315+
18316# 2025-08-18
19317
20318## Solidity ` approve ` 函数授权的抢跑问题及其解决方案
0 commit comments