DEX 了解及入门

最近做的项目需要与 DEX 做交互,让我对 DEX 有了一些了解,主要是 Uniswap 和 PancakeSwap。

PancakeSwap 的合约是 fork Uniswap 的,概念基本一样。

交易及合约

首先,是什么币种和什么币种交易,例如使用 BNB 购买 USDT,那么币对就是 BNB-USDT。
要能进行交易,必须要有一个池子,里面有这两种币种的资金,这两个币种可以相互兑换,形成流动性。
在 Uniswap 叫池子(Pool),在 PancakeSwap 叫流动性(Liquidity)。

没有流动性就交易不了。当我们在池子创建了币对,才有了流动性。创建了 V2 流动性之后,会生成一个新的 LP Token 合约,即下面说的 Pair 合约。合约对应的一定数量 Token 会转入到创建流动性的地址,某些 DeFi 功能就是使用了这个 token 进行质押获得分红。

Pair合约

Pair 合约是 Uniswap 中的交易对合约,用于实现资产之间的交易。每个 Pair 合约都对应着两种不同的资产,比如 ETH/USDT、ETH/DAI 等。Pair 合约中包含了资产之间的价格信息、流动性提供者的信息等。

那么问题来了,用户创建流动性的时候,是谁来创建 Pair 合约的呢?是 Factory 合约。

Factory合约

Factory 合约负责创建新的交易对(Pair 合约)。Factory 合约中存储了所有已创建的交易对的地址。

路由 Router

Router 合约是 Uniswap 中的路由合约,用于执行交易操作。当用户在 Uniswap 上进行交易时,实际上是通过 Router 合约来执行交易操作的。Router 合约中包含了一系列的交易函数,用户可以通过调用这些函数来进行资产交易。

路由的作用就是找到对应的池子,进行兑换。如果没有对应的池子,是可以跨池子交易的,例如只有BNB-USDT, USDT-BTC 两个池子,用户想要使用BNB来兑换BTC,那么路由就可以做到兑换交易,只不过这样手续费会更高

SmartRouter

Uniswap 和 PancakeSwap 的路由也一直在升级,现在 V2、V3 都有在使用。

V3 相对于之前的版本,之前的 Liquidity 价格可以为 0 到无限大,而 V3 中定义了一个价格范围。

V3 适用于大体量的资金池子,如果池子资金量不够大,太容易被拉盘砸盘操纵价格。

用户进行交易是使用 V3 还是 V2 呢?在交易设置里可以自定义选择 V3 还是 V2,如果没有选择的话,交易是由智能路由(Smart Router)来进行选择的。
经过我的测试,无论用户选择了 V3 还是 V2,都是走 Smart Router,Smart Router 更像是最上层的一个分发器。

交易原理及特性

在 DEX 进行 Swap 的话,是怎么影响价格的?

AMM (Automated Market Maker)

AMM 是 Uniswap 的交易协议,是去中心化的。AMM 的核心原理是利用流动性池来完成交易。当用户想要进行交易时,他们可以直接从流动性池中交换一种资产为另一种资产,而无需依赖买卖订单的匹配。这是通过根据资产比例来计算价格完成的。

流动池就是由两个币种或者多个币种组成的一个资金池,例如 ETH-USDT 流动池。假如有 1 ETH 和 1000 USDT,那么 1 ETH 的价格就约等于 1000 USDT。如果有用户使用 USDT 购买 ETH,那么池子中的 ETH 会减少,USDT 会增加,ETH 的价格就会增加。

Permissionless Systems

无需许可系统。任何人都可以交易,任何人也都可以创建池子让别人交易。