AESwap系列:一文讀懂市商和自動化市商

買賣虛擬貨幣
在社羣使用者們的熱切期待下,這周,AESwap終於和大家見面了。在這一階段,aelf讓大家使用測試ELF token體驗AESwap。很多人都知道DeFi很火爆,但是對具體專案並不熟悉,我們能看到各類swap產品,比如Uniswap、JustSwap、SushiSwap等等。本文會從較為基礎的層面為大家解讀這類swap,讓大家對DeFi本身有一個入門的理解。本文的題目叫《市商和自動化市商》,其實已經表明了這類swap的本質。它們被稱為“自動化市商”,英文為automated market maker。它為兩部分,第一部分automated,是自動化的意思,即把原本手動完成的事情自動化起來;第二部分是market maker,即市商,也是本文要討論的物件。如果你炒股票,相信你一定對市商再熟悉不過了,不過本文考慮到了沒有炒過股票的朋友們,所以會對市商展開說明。那麼,什麼是市商?更準確的說,market maker是做什麼的?注意,下面我會使用market maker,即“MM“代替“市商”二字,這樣會帶來十分直觀的理解。
在金融領域,market maker就是製作或者促成一個市場的人或者機構,一般都會以代理商的形式出現,比如交易所。他們會購買一些公司的股票,然後標註賣出價格和買入價格,也就是說,他們會有一個ask——賣出的價格,以及一個bid——買入的價格。比如A公司在這家交易所裡的ask是10美金一股,而bid卻是9美金一股,這是因為交易所要賺取這1美元的差價,作為其收入來源。如果有一個手持現金的人要買入A公司的股票,他只能以10美金購買,相反,如果他持有該股票想賣,他只能以9美金賣出。在這個例子裡,這個人最終用10美元買了A公司的股票,這就是A股票現在的價格,即它最後一次被交易的時候的價格。此外,除了交易所自身可以設定買賣價格,任何人都可以設定它的價格,比如A公司的股票的交易量超級大,這時候一定有許多的人——先把事情簡單化——持有A公司的股票,並設定賣出它的價格。這時候,如果張三覺得它很值錢,他可以設定賣出價為12美金,並賣出200股,這個“12美金,200股,賣出”就是所謂的訂單,即order。現在李四覺得它不是那麼值錢,他就把賣出價設定為11美金,並賣出300股,王五等其他人也會這樣設定價格。另外,也有許多人想買入A公司的股票,和賣家的心理活動相似,買家會設定自己覺得值得購買的價格和購買的數量。這樣,我們可以看到這些人形成了一系列訂單記錄。賣方……13美金:500股12美金:100股
11美金:250股10美金:300股買方9美金:100股8.5美金:300股8美金:350股
7美金:400股……

而這個訂單記錄就是所謂的order book,即國內的“盤口”。它是判斷股票價格短期波動方向的主要工具,而和它搭配的工具就是k線圖。在火幣等中心化的交易所裡,我們能看到,在右邊的那一部分就是所謂的order book,也就是我剛才說明的內容,而這就是市商的核心。

由於篇幅所限,便不在這方面展開說明,不過從MM中,我們還是可以看出一個關鍵點:市場的價格是由人為因素決定的,取決於你在盤口上的訂單。

而新出現的自動化市商,即AMM,則截然不同,在AMM中,價格不再由人為因素決定,而完全由演算法決定。這一點該如何理解呢?

在AMM中,一般兩種token(比如ETH和USDT)組成一個交易對,持有token的人會向這個交易對中存入token,這樣,這個交易對就變成一個具有流動性的池子了。一些想把ETH換成USDT的人,就可以透過這個交易對的池子實現幣種的兌換,反之亦然。不過,要想進行兌換,必然得看價格多少,在AMM中,一種token的價格是相對於另一種token的,並且由演算法決定。

實現價格決定的自動化演算法很多,但是最著名的莫過於“恆定乘積公式”,即constant product formula。它的表示式為:
x*y = k

x和y是兩種token的數量,k是恆定值。

而價格便由兩種token數量的比率決定:
P = x/y

這是因為,一個交易池是一個隔離的世界,比如上述的ETH-USDT,在這個池子裡,ETH的總價值一定和USDT的總價值相等。即:
P(ETH) * x = P(USDT) * y

得到:
P(ETH/USDT) = y/x

假設池中有100個ETH和10000個USDT,那麼ETH的價格就是10000/100 = 100。

現在你一定會問,這個看起來簡單的公式為什麼有效?

首先,它使得交易池子擺脫了流動性規模的限制。我們在座標平面上畫出x*y=k的圖形,發現它就是雙曲線的一支。

現在假設池子裡有100個ETH和10000個USDT,並且在中心化的交易所裡,比如火幣上的ETH/USDT是100。現在我要換取60個ETH,那麼這個時候我需要花多少USDT呢?

我們根據恆定乘積公式,知道k=100*10000=1M,現在當ETH變成了40(100-60=40),根據公式,USDT的數量應該是1M/40=25000,ETH在該池子對USDT的價格就變成了25000/40=625,使用者一般不會花如此高價購買如此多的ETH。所以,從利益動機上來看,人們不會在這個池子裡做這麼大比重的交易,一般人們只會進行一筆換取0.05個ETH的交易,這不會讓其價格和火幣的價格相差太多。而中心化的交易所,不存在這種利益動機能夠阻止一個買家在MM中下一個大筆訂單,並且,他完全可以出於某種利益動機這麼做,因為這會對資產的市場價格造成巨大的影響,而他自己並不會承受到這個影響。在這種情況下,我們稱這個市場的流動性較差,或者市場深度較低,反過來講就是:

一個市場流動性好的表現就是,不存在任何一筆訂單,會對市商內部的資產價格造成較大影響。

另外,AMM能夠透過套利機制實現價格的穩定。

假如現在火幣上ETH的價格變成了150,但是在AMM裡面,ETH的價格還是100,那麼聰明人一定會從AMM中換取ETH,然後放到火幣上賣出賺取差價,這樣AMM中的ETH就會開始變少,即ETH在AMM中開始變貴,人們不會停止套利直到AMM中ETH的價格變成150(不考慮交易費)。

再比如,如果我只向這個池子裡提供了100個ETH,現在池子裡變成了200個ETH和10000和USDT,顯然在AMM裡ETH貶值了一半,這時聰明人一定會從AMM中換取ETH,然後放到火幣上賣出賺取差價,和之前一樣,AMM中的ETH會迴歸到100個,但是池子裡所有人提供的ETH量就會折損成原理的一半,導致發生損失。因此,在提供流動性的時候,任何一個swap應用都會建議:

請一起提供ETH以及和其法幣價值相同的USDT。

最後,需要注意的是,k並不是絕對不變的,如果沒有向池子裡提供新的流動性,而只是進行token兌換,這時候k是不變的,但是一旦加入或者減少了流動性,k就會增大或者減少。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;