Web3 新手系列:DEX 為啥不做訂單匹配也能撮合交易

2024-06-06 00:06:22

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)撰寫。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
107 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
107 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
111 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
106 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
88 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
95 3個月前