交易#
如果說借貸是歷史悠久的金融活動,那麼交易也同樣如此。現代社會早已摆脱物 - 物交換的交易方式。現今的絕大多數交易都是以法定貨幣的形式完成的,即商品 - 信用(即貨幣)的交換方式。這意味著交易的一側使用的是以數字方式表示的「信用」,至於它的表現形式是電子、紙幣還是硬幣都是無關緊要的。當交易的兩側都是以電子形式表示時,借助於互聯網,交易可以瞬間完成,典型的例子就是以電子支付的方式購買遊戲道具。
加密貨幣本身就是運行在互聯網上的以電子形式表示的資產,顯然具有極強的交易屬性。那麼去中心化的交易功能顯然就是一個極其重要的基礎設施。
早期的 DEX 產品在設計上和 CEX 並沒有太大的不同,例如 IDEX,它實現了鏈上的訂單簿功能,用戶可以通過發送以太坊交易的方式掛單買賣代幣。
真正屬於區塊鏈特有的交易方式出現在 Uniswap 上。交易不再以買賣掛單的方式進行,而是以固定算法的方式確定交易價格。以下通過幾個典型的 DEX 協議和一個交易聚合協議來勾勒當前 DEX 的主要功能。
Uniswap#
2016 年 10 月,Buterin 在 reddit 上發布了一篇帖子,討論了一種在預測市場上實現「鏈上自動做市商」的方式。這篇帖子的目標是要討論鏈上交易的一個問題:缺乏深度。除了一些主流的代幣在中心化交易所上有較好的交易深度,在去中心化交易所上,例如 Maker、Idex,交易對缺乏深度,買賣差價通常超過 10%。
帖子裡提出了一種通過固定函數來計算價格的方法。首先需要建立流動性池,其中包含一定數量的 A 代幣和 B 代幣,數量分別是 x 和 y。x 和 y 的乘積為 k,交易是通過將其中一種代幣注入池子並提取一定數量的另一種代幣來完成的。交易之後,池子的兩種代幣的數量的乘積仍然為 k。例子如下:
- 一個 ETH 和 DAI 的流動性池,其中包含 10ETH 和 30000DAI,他們的乘積為 300000。
2. 交易者想賣出 1ETH。他向池子中發送 1ETH。
3. 池子中的兩種代幣數量乘積需要保持為 300000,而當前池子裡有 11ETH,則池子中需要保留的 DAI 的數量為 300000/11=27272.7
4. 交易員得到的 DAI 的數量為 30000-27272.7=2727.3DAI。至此交易完成。
這就是 Uniswap 的交易方式的原型。
Uniswap 的創始人 Hayden Adams 畢業後成為了一名西門子的機械工程師,後來被解雇了。正當他陷入低谷時,他的好友推薦他嘗試開發以太坊智能合約。經過一段時間的學習,他準備開始做真正的項目,目標就是上述帖子中描述的 DEX。故事的結尾是,Uniswap 成為了 DeFi 的標誌性項目,在 DeFi 協議中市值排名最高。
回到機制本身。在 CEX 中,做市商需要一個機器人來進行買賣的掛單來提供流動性。IDEX 延續了這樣的交易方式,但是對於一些低市值代幣,通常持幣者沒有動力進行掛單,導致價差特別大。而通過 x*y=k 的做市方式來說,並不存在價差,它的當前價格就是目前池子中兩種代幣數量的比例,按上述例子就是 1ETH=3000DAI。當然,實際交易價格會低於此價格,因為充入的代幣使得此代幣的相對數量變多,價格降低。由於交易使得代幣價格下降的變動叫做「滑點(slippage)」,這裡的滑點是 1-2727.3/3000=9.1%,也就是交易者得到的價格比當前價格低 9.1%。滑點顯然和池子中代幣的數量負相關,例如代幣數量翻 100 倍,那麼交易員的交易損失會遠遠低於 9.1%。
對流動性池的操作有 2 種,一種是上述提到的交易,另一種是給池子提供流動性。給池子提供流動性必須按照流動性池當前的兩種代幣的比例充入,例如池子中有 10ETH 和 30000DAI,那麼你可以給流動性池注入 1ETH+3000DAI、5ETH+15000DAI 等等。這種用戶被叫做「流動性提供者(Liquidity Provider,以下簡稱 LP)」,注入後會返回數量的 LP token,作為該 LP 對這個池子的一部分的所有權。當然 LP token 也是可以自由流通的。既然給流動性池提供流動性可以降低交易者的損失,那麼流動性提供者自己獲得的好處是什麼?
這裡就得提到「無常損失(Impermanent Loss)」的概念,它指的是一種機會成本。這裡的問題是,對於流動性提供者來說,當他提供流動性且池子內的代幣的比例發生變動時,他的損失是多少?
假設一個 LP 給池子注入 1ETH+3000DAI,ETH 下跌至 750DAI,按照 k 不變的原則,此 LP 在池子中擁有 2ETH+1500DAI。假設他沒有提供流動性,那麼按照現在的 ETH 價格,他擁有 1*750+3000=3750DAI。現實是他提供了流動性,那麼現在持有的資產是 2*750+1500=3000DAI。所謂的無償損失就是和他沒有提供流動性相比損失金額的比例,也就是 (3000-3750)/3750=-20%。如果以 ETH 計價,損失也是 - 20%。事實上,價格往任何方向偏移,LP 都是承擔損失的。
所以 LP 沒有動機來提供流動性。因此在設計中,每一筆交易的 0.3% 作為手續費補償 LP,以此來抵消 LP 的無常損失,並且交易所不收取手續費。
這一類由 LP 提供流動性且以固定函數進行代幣交易的機制被稱作恆定函數做市商(CFMM,Constant Function Market Maker),以 Uniswap 為代表。IDEX 解決了低市值代幣在還沒上 CEX 的情況下就能交易的問題,但沒有很好地解決流動性問題。Uniswap 給流動性問題提供了一種有效的解決方案,它使得代幣持有人無須像專業的 CEX 做市商那樣需要開發交易機器人,只需要一次操作即可開始賺取交易手續費。對於尚未在 CEX 交易的代幣,我們看到交易活躍時會有大量資金來提供流動性,因為活躍的交易會帶來大量的手續費。再結合各類項目的流動性挖礦活動,Uniswap 為各類項目提供了一種脫離 CEX 獲得大量流動性的方式,使得它們不再依賴於 CEX,由此削弱了 CEX 的權力並且大大提升了區塊鏈的實用價值。已經有不少項目在脫離 CEX 的情況下獲得了成功。
這種方式的明顯缺點就在於,無法實現限價單功能,只能以當前價格進行交易。對於想抄底和止盈的交易員來說,必須開發鏈上機器人,需要有較高的技術要求。同時穩定幣兌換也會有較大的滑點,削弱了在 Uniswap 上兌換穩定幣的動力。Uniswap V3 版本做出了一些改進,將類限價單、穩定幣互換等功能整合到流動池中。