Skip to content

Commit 1be23f1

Browse files
committed
Add study notes for 2025-08-20
1 parent 6bb6d56 commit 1be23f1

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

tikpen.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,70 @@ web2前端开发,对web3感兴趣,想加入web3.
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-20
19+
20+
## UiniSwap V2
21+
22+
UniSwapV2与V1是基于相同的公式实现,但它提出了以下三点创新:
23+
24+
- 支持创建任意ERC20/ERC20的交易对,不再需要以ETH为交易中心媒介。
25+
26+
- 可以理解为你拿黄金换白银不用再用美元作为中介,可以直接拿黄金换相对应的白银。
27+
28+
- 提供了一个更强的价格预言机,在每个块的开头计算两个资产的相对价格。
29+
30+
- 可以理解为交易所每时每分都在为你更新现在1g黄金对比多少白银
31+
32+
- 支持闪电交换(Flash swap),即闪电贷,用户可以免费的获得这些资产并在链上使用它们,只需要在交易结束后归还这些资产。
33+
34+
- 可以理解为你可以把黄金先免费借出去,然后你再这交易所里可以随意换别的资产,换完只要你能够还回来原本的黄金g数以及利息,剩下多套利的部分就归你所有。
35+
36+
37+
38+
### 原理
39+
40+
#### 代币交易
41+
42+
在Uniswap V2中,交易使用恒定乘积公式的自动做市商模式,在一个币对的流动性池中,两个币种数量的乘积不会改变,即 x * y = k(实际交易中,因为存在手续费和整型精度问题的影响,交易后的K值会变大,但不会变小)
43+
44+
当前池子中A的数量为x,B的数量为y,两个币的乘积为k,即:x * y = k。此时,交易者使用数量为Δx换取数量为Δy的币,在交易前后,满足以下等式(暂时不考虑手续费)
45+
46+
(x+Δx)(y−Δy)=k
47+
48+
Δy=(y⋅Δx )/( x+Δx)
49+
50+
在Uniswap V2 中,每次会收取 0.3% 的手续费,即 p = 0.003,这笔手续费从交易者的Δx中扣除分发给流动性提供者。因此,只有Δx *(1-p)的A数量来兑换Δy数量的B。剩下p * Δx会作为手续费被添加到池子中。
51+
52+
#### 滑点
53+
54+
滑点一般指预设成交价位与真实成交价位的偏差,恒定乘积AMM也存在滑点,一旦发生交易,池中资产的数量发生变化,资产实际的交易执行价就会发生变化,产生滑点。交易额越大,滑点越大,交易者的损失越大。
55+
56+
滑点计算:
57+
58+
(成交后价格 - 初始价格)/ 初始价格
59+
60+
假设当前OBK/USDT的流动性池中有20个OKB和10000个USDT。此时可知道 1OKB = 500 USDT 理论上可以用250USDT换取0.5OKB,但实际上却不可以。
61+
62+
k = x * y = 20 * 10000
63+
64+
20 * 10000 = (20 - dy) * (10000 + 250)
65+
66+
=> dy = 0.487
67+
68+
表明只能用250USDT换取0.487OKB
69+
70+
此时交易后的OBK价格为
71+
72+
250/0.487 = 513 USDT (即此时购买1个OKB需要513个USDT)
73+
74+
根据滑点的计算公式可知:
75+
76+
slippageUSDT = dx/x = 250/10000 = 2.5%
77+
78+
slippageOBK = (513-500)/500 = 2.6%
79+
80+
以上可得出:交易量dx越大,产生的滑点就越大,偏离实际价位就越大,然而当池中的代币存储越多,dx所带来的变化就越小,滑点变化也越小,降低了用户的交易损耗。
81+
1882
# 2025-08-19
1983

2084
### Solidity用法

0 commit comments

Comments
 (0)