Web3 新手系列:DEX 为啥不做订单匹配也能撮合交易

时间:2024-09-30 编辑: 浏览:(981)

DEX 也就是去中心化交易所,典型代表就是 Uniswap、Curve。对应的中心化交易所有币安、OKX 等。去中心化和中心化最核心的差别大家应该也都知道,中心化的交易所的交易是通过交易所的服务器来实现交易的,而去中心化的交易所则是通过运行在区块链上的智能合约交易的。

然而除了是否是去中心化以外,大部分 DEX 相比中心化交易所对比,还有一个巨大的差异,那就是他们撮合交易的方式也不同。中心化交易所撮合交易的方式和传统的股票交易类似,他们都是订单簿交易所。有人要卖,有人要卖,交易所在中间撮合。

但是这样的模式在 DEX 上就行不通了,为啥?因为这样消耗的 GAS 贵啊,效率也不高。想想看如果合约中要记录每个人的订单,然后去做撮合,中间得来来回回执行好多运算,另外有的代币可能流动性不高,能上中心化交易所的代币可能就没这个问题了,但是很多流动性较小的代币,可能还没法完成交易。

于是就发明了 AMM(自动化做市商,Automated Market Maker),可以做到不用匹配订单也可以实现交易。大家可能会好奇,这怎么做到的,交易通常就是有人卖才有人能买啊?没错 AMM 就是做到了没人卖你也可以买。接下来就具体展开讲讲 AMM 是如何做到这一点的。

AMM 是如何做的呢?没有订单如何交易呢?那就要引入一个概念 Liquidity Provider(LP),也就是流动性提供商。

简单一句话说:交易不再是通过订单匹配买卖双方交易,而是直接在 LP 提供的流动性池子中交易。

就比如说我作为 LP 在池子中放了 1 个 ETH 和 3000 个 USDT(当前市场价正好是 1 ETH = 3000 USDT),那你作为交易方就可以把 0.01 嗯 ETH 放进池子,然后拿出来 30 个 USDT。

这样池子里面就变成 0.99 个 ETH 和 3030 USDT 了,所以作为交易者你不需要等待,直接就能换。

但是价格怎么定呢?不能由 LP 来实时调整价格吧,这样行不通,价格应该是市场驱动的。那如何让市场的交易行为体现在架构上呢?这里就很巧妙了,其实核心就下面一个公式:

X * Y = K

其中 X 和 Y 是一个交易对(上面例子中就是 ETH 和 USDT)中两种代币的数量,K 是这两者相乘得到的值,我们要求交易者每次取出 X 存入 Y 或者存入 X 取出 Y(也就是发生了代币交换),但是 K 必须保持不变。

这样就能做到市场自动调节价格了吗?没错,我们继续看上面的例子。

1 * 3000 = 3000

0.99 * 3030 = 2999.7

K 从 3000 变成 2999.7 了,但是基本认为还是 3000。但是下一次再交换 ETH 的价格就不再是 3000 了,而是 3000 / 0.99 = 3030.3... 了,ETH 涨价了。这样是不是很合理,有人要换 ETH,ETH 变得稀缺,所以涨价了,下次要换 ETH 就需要更多的 USDT,只要保证池子中的 ETH * USDT 等于一个常量,这样自然就会此消彼长,当 ETH 变少时,你要通过 USDT 换取 ETH 时候就需要消耗更多 USDT,反之亦然。

如上图,x * y = K 的曲线如上,当 x 越少,y 就越多,x 的价格就是 y/x 其实就是斜率,斜率越高,x 越贵。

当然上面的例子只是为了方便理解,实际上的价格并不是交易后才重新计算,而是当前交易造成的 x 和 y 的变化就会影响价格。这里会引出一个比较重要的概念,就是滑点。在上面的例子中,真实情况是,为了保证 K 不变,你买入 ETH 就会导致 ETH 价格上涨,而这个上涨在当前交易中就会体现,你会发现最终成交的价格和交易前看到的价格不一致,这就是滑点。当一个交易对流动性越大的时候滑点就越小,反正滑点越大。另外交易量越大,滑点也会越大。

除了滑点外,在真正的实现中还有很多细节要考虑,比如取整问题,手续费,跨池子交易问题等等。在这里就不展开了,如果感兴趣的同学可以阅读来自 ZAN 团队同学在开源社区贡献的 https://github.com/WTFAcademy/WTF-Dapp/blob/main/P002_WhatIsUniswap/readme.md 这篇解析 Uniswap 代码的文章具体了解。

相比 ERC20 或者 ERC721 这样的合约,涉及到金融的合约往往更为复杂,往往包含大量的复杂逻辑代码,这里推荐大家可以试用体验我们的 ZAN AI Scan(https://zan.top/home/ai-scan?chInfo=ch_WZ)的合约审计服务。只需要输入合约地址就能快速对合约进行安全分析,查看与其相似的链上代码以及审计历史,还可以体验先进的形式化验证和 GPT 安全分析功能。

总的来说,基于智能合约可以做到不依赖中心化的服务进行交易,但是智能合约交易成本的考虑(主要是 gas)和交易效率的要求,使得订单薄不适用于它。于是有了 AMM,AMM 核心就是基于 X * Y = K 这个逻辑,于是需要 LP 来提供流动性。流动性提供方收取手续费,交易方基于流动性池子来交易。

本文由 ZAN Team(X 账号 @zan_team) 的愚指导(X 账号 @yudao1024)撰写。

最新 更多 >
  • 1 怎么查数字货币钱包的真假

    如何查找数字货币钱包的真假随着数字货币的普及,越来越多的人开始使用数字货币钱包进行存储和交易。然而,随之而来的问题是,如何准确判断数字货币钱包的真伪。下面是一些简单的方法,帮助您查找数字货币钱包的真假。1. 查看官方网站首先,您应该查看该数字货币钱包的官方网站。官方网站通常会提供关于钱包的详细信息,包括其功能、安全措施和下载链接。确保您使用的是来自官方网站的下载链接,以免下载到假冒的钱包。2. 检

  • 2 买数字货币怎么才靠谱

    如何买数字货币保证安全可靠随着数字经济的快速发展,数字货币市场也在不断扩大。对于初学者来说,正确的购买数字货币的方法是非常重要的,确保交易的安全性和可靠性。以下是一些保证你的数字货币交易可靠性的关键步骤。选择可信的交易平台首先,在购买数字货币之前,确保选择一个可信的交易平台。这个平台应该具备以下特点:1.良好的声誉:选择一个在数字货币社区有良好声誉的交易平台。可以通过阅读用户评价、访问论坛或参考专

  • 3 MATIC币是否有空投活动?

    MATIC币是否有空投活动? 近年来,区块链技术的不断发展和创新,使得数字资产市场变得前所未有的繁荣和活跃。作为一种重要的数字资产,加密货币受到了越来越多投资者的关注。其中,MATIC币作为一个备受关注的项目,被投资者热议。那么,MATIC币是否有空投活动呢? 首先,我们需要了解什么是空投活动。空投活动是指项目方为了宣传和推广自己的代币,将一定数量的代币送给特定的持币人或社区成员。这种活动旨在吸引

  • 4 TRX波场币的代码审计如何?

    TRX波场币的代码审计如何?TRX波场币是基于区块链的加密货币,旨在构建一个去中心化的数字娱乐生态系统。在使用和投资TRX波场币之前,进行代码审计是非常重要的。代码审计可以帮助评估其安全性和可靠性,并确保用户的资金和隐私不会受到任何威胁。进行TRX波场币的代码审计需要以下步骤:1. 了解TRX波场币的基本原理首先,审计人员需要充分了解TRX波场币的基本原理和技术细节。这包括区块链的构架,智能合约的

  • 5 哪里数字货币是用矿机

    数字货币与矿机的关系近年来,随着数字货币的兴起,矿机作为数字货币的核心生产工具,正变得越来越重要。数字货币是一种基于密码学技术的虚拟货币,通过使用矿机计算能力来进行挖矿,从而获得数字货币的奖励。下面将详细介绍数字货币与矿机的关系。什么是数字货币挖矿?数字货币挖矿是指通过特定算法计算来验证交易,并将完成验证的交易记录添加到区块链中,以获得数字货币奖励的过程。挖矿需要大量的计算能力来完成复杂的计算任务

  • 6 DOT波卡币的DApps有哪些?

    DOT波卡币的DApps有哪些?波卡币(Polkadot,简称DOT)是一个将多个独立的区块链网络连接在一起的开放平台。作为一个区块链互操作性协议,波卡币的目标是实现不同的区块链之间的互通和共享,并促进去中心化应用程序(DApps)之间的协作。目前,波卡币的生态系统包括了一系列的DApps,为用户提供了各种不同的功能和应用。波卡币生态系统中的DApps1. Polkaswap:Polkaswap是

  • 7 TRX波场币的应用场景有哪些?

    TRX波场币的应用场景有哪些?TRX(Tronix)是TRON(波场)网络的加密代币,波场币用于在波场生态系统中进行交易和支付。波场是一个基于区块链技术的去中心化平台,旨在构建一个全球范围内的内容分享和娱乐网络,通过区块链技术打破传统互联网中的垄断和审查。电子娱乐业波场币在电子娱乐业具有广泛的应用场景。通过波场币,用户可以在波场上购买电子游戏、音乐、电影等娱乐内容,支持艺术家、音乐家和游戏开发者获

  • 8 数字货币怎么了

    数字货币怎么了?近年来,数字货币一直备受关注。从最初的比特币到如今的以太坊、莱特币等,数字货币在全球范围内引起了广泛的讨论和研究。然而,随着时间的推移,数字货币面临着一些挑战和问题,这使得人们开始重新评估其前景和发展方向。监管和合规问题数字货币市场的高度去中心化特性是其吸引力所在,但这也带来了监管和合规问题。由于数字货币的匿名性和交易链的难以追踪,它们常常被用于非法活动,如洗钱和恐怖主义资金的转移

  • 9 etc是什么数字货币的缩写

    什么是ETC?ETC(Ethereum Classic)是以太坊经典的数字货币缩写。它是以太坊(Ethereum)分叉事件后分支出来的一种加密货币。ETC的出现源于2016年的以太坊硬分叉,当时以太坊遭受了一起价值约5000万美元的黑客攻击。为了解决此次攻击的影响,以太坊社区进行了硬分叉,并且形成了以太坊(ETH)和以太坊经典(ETC)两个分支。ETC的特点和目标ETC的特点与以太坊相似,它是一个

  • 10 DOT波卡币的网络费用是怎么计算的?

    DOT波卡币的网络费用是如何计算的?DOT波卡币是Polkadot网络的原生代币,用于支付网络费用和参与治理。网络费用是指在Polkadot网络上进行各种交易或操作时产生的费用,包括转账、交易验证和智能合约执行等等。这篇文章将介绍DOT波卡币的网络费用是如何计算的。1. 资源租约Polkadot网络采用了一种独特的资源租约模型来计算网络费用。资源租约允许用户在网络上购买一定数量的资源,用于执行交易