File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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用法
You can’t perform that action at this time.
0 commit comments