普通的交易所都會有限價訂單的概念,一般的做市商提供流動性都會設定價格,而這些在Uniswap都沒有。在Uniswap,做市商只需提供代幣資金,剩下的可以通過機制來解決。普通的交易所需要交易對手,做市商通過設置買入價和賣出價,一是為市場提供流動性,二是可以獲得交易的利差。這些設置的價格形成了限價訂單。當然這些訂單可能成交,也可能不會成交。如果交易所將所有人的訂單都集中到兩個大型的池中,交易者不會愿意,他們不希望自己的訂單跟其他人的訂單混在一起。
而Uniswap要做的就是將代幣混在一起,同時做市商無須指定其希望買入和賣出的價格。Uniswap為什么會這么做?這源于Uniswap自動做市商的設計。
Uniswap的特色之一就是將每個人的流動性集中到一起,然后根據算法進行做市。也就是它本質上是基于算法的自動做市服務。Uniswap會有一些預定義的規則,根據這些規則它會向用戶提供兌換代幣的報價。自動做市的規則可以有多種,Uniswap采用的是其中一種。
Uniswap采用的自動做市模型是基于“Constant Product Market Maker Model”的變體。它有一個特點很有意思,理論上,它可以提供無限的流動性,可以有很大的訂單規模,且不用擔心流動池很小。之所以能做到,跟它的Constant Product自動做市模型有關。那么,什么是Constant Product自動做市的模型呢?
讓我們假設,流動性提供商提供ETH/MKR的交易對。假設根據當前的匯率,1MKR=3.5ETH,如果你想為Uniswap提供流動性資金,你向資金池提供100MKR和350ETH的資金。那么,Uniswap會將兩個數值相乘,得出Constant Product:100*350=350,00。
其公式是X*Y=K,其中X是ERC20代幣,Y是ETH,K是常數。Uniswap會讓K常數350,00保持不變。為了保持K不變,那么,X和Y就是此消彼長的關系。如果有人在這個合約中購買了ETH,那么MKR就會增加,因為購買者向流動性池中增加MKR,同時減少ETH。而ETH被購買者買走,從而使其在流動池中的數量減少。
不過,根據買入量的不同,用戶付出的成本也不同,也就是實際價格不同。假設交易費用為入池代幣/100(實際上是0.3%,這里主要是為了簡化說明),我們得出如下的兌換關系:
從上表可以看出,池中MKR為100個,ETH為350個,其常數為100*500=35,000;
在這種情況下,如果用ETH購入MKR,那么每次ETH買入量不同,其購買的成本也是不同的,如果往流動池中注入1ETH,用來兌換MKR,那么可以兌換0.282個MKR,成本為3.5453,購買MKR成本上漲了1.294%;如果用350ETH來兌換MKR,那么這意味著ETH流動池有696.5ETH(減去3.5ETH的交易費用),根據計算公式,MKR的流動池剩下50.2513個MKR,那么350ETH可以換得49.7487個ETH,而單個MKR兌換成本高達7.0353;購買MKR的成本上漲超過100%,這個滑點太大了。
不過,如果池中MKR和ETH數量足夠多,則滑點會小很多。截止到藍狐筆記寫稿時,實際來看,MKR的流動性可以達到23,238個ETH,超過3,000,000美元,如果用350ETH兌換MKR,可以兌換104.8559個,價格滑點為2.88%。當然這個流動池還不夠大,如果再大一些,可能連1%的滑點都不到。
這里還有一個概念需要清楚,就是每次兌換之后,會產生新的流動池,同時也會產生新的常數。原因是每次交易后產生的手續費會重新回到流動性資金池中,這樣手續費會在完成代幣價格兌換計算后重新添加到資金池,這樣常數在每次交易后稍為變大一些,這樣可以為流動性提供者提供系統性的盈利。
舉個例子,按照上面數字假設,假如用戶用100ETH兌換MKR,假設1%的費率,那么,MKR的流動池是77.9510MKR,ETH的流動池為450ETH,根據規則,新的常數是77.9510*450=350,77.95,比原來的常數350,00增加了77.95。
除了ETH和ERC20代幣可進行兌換之外,ERC20代幣之間也可以實現兌換,且不必存在單獨的資金池。其兌換的方法是通過ETH完成兌換,因為ETH是所有ERC20代幣的通用交易對,它可以成為不同ERC20代幣之間進行交易的媒介,例如MKR和SNX代幣之間的兌換,首先通過MKR/ETH的交易對兌換成為ETH,然后通過SNX/ETH交易對完成兌換。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。