區(qū)塊鏈 - 深入理解Uniswap協(xié)議

最近想換換腦子皆辽,看了看Uniswap協(xié)議柑蛇。Uniswap協(xié)議是一種通過(guò)智能合約實(shí)現(xiàn)代幣間自動(dòng)交易的協(xié)議。本文介紹Uniswap協(xié)議驱闷,生態(tài),交易價(jià)格以及流動(dòng)性收益的計(jì)算空免。

01Uniswap協(xié)議基本介紹

Uniswap協(xié)議通過(guò)智能合約實(shí)現(xiàn)了代幣之間的自動(dòng)交易空另。目前,Uniswap協(xié)議已經(jīng)在以太坊上部署蹋砚,可以實(shí)現(xiàn)ETH和代幣以及代幣和代幣的之間交易扼菠。Uniswap協(xié)議的整個(gè)框架如下圖所示:

image

Uniswap Exchange Factory以及Uniswap Exchange都是由以太坊上的智能合約(vyper語(yǔ)言)實(shí)現(xiàn)摄杂,相關(guān)的代碼的github地址如下:

https://github.com/Uniswap/contracts-vyper

通過(guò)UniswapExchangeFactory可以創(chuàng)建Uniswap Exchange。每個(gè)Uniswap Exchange實(shí)現(xiàn)一種代幣和ETH之間的交易循榆。

在多種代幣都能和ETH交易的前提下析恢,代幣和代幣之間也能交易,如下圖所示:

image

兩個(gè)Exchange秧饮,一個(gè)提供了ABC和ETH的交易映挂,一個(gè)提供了XYZ和ETH的交易。通過(guò)Uniswap協(xié)議盗尸,一個(gè)用戶可以先通過(guò)ABC to ETH Exchange將ABC轉(zhuǎn)成ETH柑船,接著再通過(guò)XYZ to ETH Exchage將ETH轉(zhuǎn)換成XYZ。整個(gè)過(guò)程Uniswap自動(dòng)完成泼各,從用戶的角度來(lái)看鞍时,ABC代幣直接轉(zhuǎn)換成了XYZ代幣。

02Uniswap生態(tài)

Uniswap交易生態(tài)中扣蜻,除了需要交易的用戶外逆巍,還有一個(gè)特別重要的角色:流動(dòng)性提供者。對(duì)一個(gè)Exchange來(lái)說(shuō)莽使,流動(dòng)性提供者提供了ETH以及相應(yīng)的Token锐极。只有有足夠多的流動(dòng)性,用戶才能順暢的交易吮旅,并能保持價(jià)格在合理的范圍溪烤。

image

普通交易用戶,通過(guò)Exchange庇勃,實(shí)現(xiàn)一個(gè)代幣和ETH之間的交換檬嘀。流動(dòng)性提供者,同時(shí)提供代幣和ETH责嚷。交易的用戶每筆交易需要支付一定的交易費(fèi)用(0.3%)鸳兽。這些費(fèi)用被流動(dòng)性提供者均分。

03x-y-k做市商模型

Uniswap協(xié)議使用的是x-y-k做市商模型罕拂,實(shí)現(xiàn)x和y之間的自動(dòng)交易揍异。Uniswap協(xié)議在github上有對(duì)x-y-k模型的詳細(xì)介紹:

https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf

3.1 x-y-k模型

所謂的x-y-k模型,是因?yàn)樵谶@個(gè)模型下爆班,xy = k衷掷。可以想象成x和y柿菩,分別是兩種代幣的數(shù)量戚嗅。在x和y交易時(shí),在沒(méi)有交易費(fèi)用的情況下,xy永遠(yuǎn)等于k懦胞,不變:

image

alpha和beta分別是每次交易的變化量替久。從上面的公式可以看出,變化前(xy)和變化后(x‘y')是相等的躏尉。

Uniswap協(xié)議在該模型的基礎(chǔ)上蚯根,引入了交易費(fèi)用,新的模型計(jì)算公式如下:

image

引入交易費(fèi)用胀糜,增加了rho變量颅拦。很容易可以看出,引入交易費(fèi)用后僚纷,x'y'是比xy的乘積大矩距。

3.2 交易價(jià)格計(jì)算

交易價(jià)格的計(jì)算分成兩種:一種是給定X的數(shù)量,計(jì)算能買到的Y的數(shù)量(Input)怖竭;一種是給定Y的數(shù)量锥债,計(jì)算需要的X數(shù)量(Output)。

getInputPrice的計(jì)算公式如下:

image

也就是說(shuō)痊臭,Delta X的代幣能換取Delta Y的其他代幣哮肚。此時(shí),Y代幣的價(jià)格為:

image

簡(jiǎn)單的說(shuō)广匙,買入越多X允趟,alpha越大,價(jià)格也越高鸦致。如果alpha為1的話(用當(dāng)前流動(dòng)性中X總額相等的X代幣買入)潮剪,也只能買差不多流動(dòng)性中的一半的Y代幣。如果把x/y視作當(dāng)前Exchange的價(jià)格的話分唾,一次買入后抗碰,價(jià)格變化為:

image

也就是說(shuō),“價(jià)格”是隨著買賣的比例二次函數(shù)變化:

image

getOutputPrice的計(jì)算公式如下:

image

也就是說(shuō)绽乔,Delta Y的代幣能換取Delta X的X代幣弧蝇。此時(shí),Y代幣的價(jià)格為:

image

簡(jiǎn)單的說(shuō)折砸,買入越多Y看疗,beta越大,價(jià)格也越高睦授。如果beta為1/2的話(買入當(dāng)前流動(dòng)性中一半的Y代幣)两芳,大約需要當(dāng)前流動(dòng)性中等量的X代幣。getInputPrice和getOutputPrice分別從兩種代幣角度計(jì)算價(jià)格去枷,具體的價(jià)格是一致的盗扇。注意祷肯,價(jià)格計(jì)算公式只區(qū)分價(jià)格計(jì)算的兩種方向沉填,并沒(méi)有制定X疗隶,Y具體代表的代幣類型。舉個(gè)例子翼闹,如果一個(gè)Exchange支持的是ETH和ABC交易斑鼻,你可以把ETH當(dāng)作X,ABC當(dāng)作Y猎荠,同樣你可以將ABC當(dāng)作X坚弱,ETH當(dāng)作Y。

3.3 流動(dòng)性計(jì)算

流動(dòng)性提供者可以隨時(shí)增加/刪除流動(dòng)性关摇。Uniswap協(xié)議文檔荒叶,用一個(gè)三元組(e, t, l)來(lái)代表Exchange的狀態(tài),其中e代表ETH的數(shù)量输虱,t代表Token的數(shù)量些楣,l代表當(dāng)前流動(dòng)性總量。

增加流動(dòng)性(addLiquidity)的計(jì)算公式如下:

image

增加流動(dòng)性宪睹,就是增加同等比例的e和t愁茁。

刪除流動(dòng)性(removeLiquidity)的計(jì)算公式如下:

image

刪除流動(dòng)性,就是依據(jù)流動(dòng)性的占比亭病,等比例的減少e和t鹅很。

很容易看出,增加流動(dòng)性和刪除流通性時(shí)都是按照x/y的價(jià)格計(jì)算的罪帖。需要指出的是促煮,在智能合約實(shí)現(xiàn)時(shí),需要考慮計(jì)算的精度整袁。

3.4 流動(dòng)性收益計(jì)算

到目前為止菠齿,我們已經(jīng)知道,增加流動(dòng)性和刪除流通性都是按照當(dāng)時(shí)x/y的價(jià)格計(jì)算的葬项。Exchange的買賣會(huì)導(dǎo)致x/y的波動(dòng)泞当。先不考慮交易費(fèi)用的情況下,可以先將模型退化到x*y=k的情況民珍,看看流動(dòng)性提供者的收益:

假設(shè)初始時(shí)襟士,Exchange的代幣流通性是e和t,經(jīng)過(guò)一些交易后變成e'和t'嚷量,et=e't'陋桂。

image

假設(shè)P'/P=x, 則收益曲線如下:

image

很容易看出,只要x/y有變化蝶溶,在沒(méi)有交易費(fèi)用的情況下嗜历,沒(méi)有盈利可能宣渗。最好的情況,e/t不變的話梨州,沒(méi)有損失痕囱。在有交易費(fèi)用的情況下,只有交易費(fèi)用足夠多暴匠,能抵消價(jià)格波動(dòng)的損失的情況下鞍恢,才有可能盈利。

總結(jié):

Uniswap協(xié)議是一種通過(guò)智能合約實(shí)現(xiàn)代幣間自動(dòng)交易的協(xié)議每窖。Uniswap協(xié)議采用x-y-k交易商模型帮掉。交易的價(jià)格隨著交易金額的比例成二次函數(shù)變化。流動(dòng)性提供者在沒(méi)有交易費(fèi)用的情況下窒典,沒(méi)有盈利的可能性蟆炊。只有足夠多的交易費(fèi)用的情況下,才有可能盈利瀑志。


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涩搓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子后室,更是在濱河造成了極大的恐慌缩膝,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岸霹,死亡現(xiàn)場(chǎng)離奇詭異疾层,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)贡避,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門痛黎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人刮吧,你說(shuō)我怎么就攤上這事湖饱。” “怎么了杀捻?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵井厌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我致讥,道長(zhǎng)仅仆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任垢袱,我火速辦了婚禮墓拜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘请契。我一直安慰自己咳榜,他們只是感情好夏醉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涌韩,像睡著了一般畔柔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贸辈,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天释树,我揣著相機(jī)與錄音,去河邊找鬼擎淤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛秸仙,可吹牛的內(nèi)容都是我干的嘴拢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼寂纪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼席吴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起捞蛋,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤孝冒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拟杉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庄涡,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年搬设,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了穴店。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拿穴,死狀恐怖泣洞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情默色,我是刑警寧澤球凰,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腿宰,受9級(jí)特大地震影響呕诉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酗失,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一义钉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧规肴,春花似錦捶闸、人聲如沸夜畴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贪绘。三九已至,卻和暖如春央碟,著一層夾襖步出監(jiān)牢的瞬間税灌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工亿虽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菱涤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓洛勉,卻偏偏與公主長(zhǎng)得像粘秆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子收毫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容