UniswapV2算法概述
解锁 DeFi 世界的钥匙:深入剖析 Uniswap v2 算法
近年来,去中心化金融 (DeFi) 的浪潮席卷全球,而在这场变革中,去中心化交易所 (DEX) 无疑扮演着至关重要的角色。Uniswap,作为最受欢迎的 DEX 之一,其背后的算法是理解 DeFi 运作方式的关键。
背景:中心化交易所的局限与 DEX 的崛起
在 DeFi 出现之前,我们进行加密货币交易主要依赖中心化交易所 (CEX),如币安、Coinbase 等。这些平台虽然交易体验良好,但也存在一些固有的局限性:
- 托管风险: 用户的资产需要存放在交易所的钱包中,存在被黑客攻击或交易所跑路的风险。
- 审查风险: 交易所可以根据自身政策或监管要求限制用户的交易。
- 单点故障: 交易所的服务器一旦出现故障,整个交易系统都会瘫痪。
为了解决这些问题,去中心化交易所 (DEX) 应运而生。DEX 的核心特点在于:
- 非托管: 用户始终掌控自己的私钥和资产。
- 无需许可: 任何人都可以参与交易和提供流动性。
- 透明公开: 交易记录和智能合约代码通常是公开可查的。
Uniswap 就是这样一款具有代表性的 DEX。
Uniswap 的作用:连接加密资产的桥梁
Uniswap 的核心作用是实现不同加密资产之间的无需许可的兑换。它通过一种称为自动做市商 (Automated Market Maker, AMM) 的机制,允许用户在没有传统订单簿的情况下进行交易。
你可以将 Uniswap 想象成一个自动化的货币兑换点,你不需要找到一个想用另一种货币和你交易的人,只需要按照预先设定的规则(也就是算法)进行兑换即可。
Uniswap v2 的原理:恒定乘积做市商
Uniswap v2 的核心原理是恒定乘积公式。对于任何一个交易对(例如 ETH/USDT),Uniswap v2 维护着一个流动性池 (Liquidity Pool),这个池子里存放着等值的两种资产。
假设一个流动性池中包含 数量的代币 A 和 数量的代币 B,Uniswap v2 的核心思想是维持池中两种代币数量的乘积为一个常数 :
这里的 在没有新的流动性加入或移除,且忽略交易手续费的情况下,是保持不变的。
交易过程:
当你想要用一定数量的代币 A 兑换代币 B 时,你会将你的代币 A 加入到流动性池中,并从池中取出相应数量的代币 B。由于池中的代币 A 数量增加,为了维持 不变,池中的代币 B 数量必须减少。
价格的决定:
交易的实际兑换比例(即价格)是由交易前后流动性池中两种代币的比例决定的。如果你投入更多的代币 A,你会相对获得较少的代币 B,这反映了代币 A 相对于代币 B 的价格上涨。
Uniswap v2 的核心算法
现在,我们来更具体地看一下交易的算法:
假设流动性池中有 个代币 A 和 个代币 B。你想要用 个代币 A 来兑换代币 B。
-
加入代币 A: 流动性池中代币 A 的数量变为 。
-
计算可获得的代币 B: 为了维持 值(在扣除手续费之前),新的代币 B 数量 应该满足:
因此,理论上你可以获得的代币 B 的数量是:
那么,你将获得的代币 B 的数量 是:
-
交易手续费: Uniswap v2 对每笔交易收取 的手续费,这部分手续费会按比例分配给流动性提供者。因此,实际加入到池中的代币 A 数量是 。
所以,实际获得的代币 B 的数量 是:
总结一下交易过程:
当你用 个代币 A 交易代币 B 时,实际支付给流动性池的是 个代币 A。根据恒定乘积公式,系统会计算出你应该收到的代币 B 的数量 ,使得交易后池中两种代币数量的乘积依然(近似)等于 。
举例说明:ETH/USDT 交易
假设 Uniswap v2 的 ETH/USDT 流动性池中有 100 ETH 和 300,000 USDT。那么,。当前的 ETH 价格隐含在池子的比例中,即 USDT/ETH。
现在,你想用 1 ETH 来兑换 USDT。
- 你实际加入到池中的 ETH 数量是 ETH。
- 池中 ETH 的总数变为 ETH。
- 为了维持乘积 ,新的 USDT 数量 应该是:
USDT - 因此,你将获得的 USDT 数量是:
USDT
可以看到,你用 1 ETH 换得了大约 2962.17 USDT。实际的兑换价格是 USDT/ETH,略低于池子当前的隐含价格 3000 USDT/ETH。这就是滑点 (Slippage) 的体现,当你交易的规模相对于流动性池的大小越大时,滑点会越明显。
总结
Uniswap v2 通过简单的恒定乘积公式 实现了无需许可的加密资产兑换。其核心算法涉及到根据交易量和流动性池的规模动态调整价格,并通过收取交易手续费来激励流动性提供者。