自動做市商(AMM)是一種 DEX 常用的定價和流動性決定機制。簡單地說,想提供流動性的人將兩種資產按一定比例放到一個資產池(其實就是一套智能合約)中,讓其他交易者直接和池中資產進行交易,資產池使用一種根據資產供需比例的演算法自動決定資產價格,這就是AMM。
「做市商」是起源於傳統金融(TradFi)的一種常見實踐。做市商積極回應買方委託並發起賣單,從而為市場提供流動性。有點像是主動在尷尬聚會上介紹陌生人互相認識的自來熟?♂️?♀️。
許多 DEX(如 Uniswap)都採用自動做市商(AMM)來創造所謂「unlimited 無限制流動性」(即隨時隨地交易?)。池中的資產相對定價,根據恆定積函數(Constant Product Function)演算法進行。這意味著買賣任何一個幣種,必須同時改變另一幣種的儲備量,使得池中兩幣儲備量的乘積保持不變(即等於一個常數)。簡言之,從池中拿走一個幣,必須放置一定數目的另一個幣。
為了更好地說明 AMM 是如何運作的,不妨讓我們回到「以物易物」的時代。
假設你是個蘋果農民,生活在沒有貨幣的時代。你想和你的朋友約翰 John 交換一些西瓜,他剛好有西瓜,但他想要做一些蘋果汁。
但有時候約翰可能很忙,你無法找到他來交換水果。此外,你還想要其他水果,但不知道該找誰。有很多人都面臨同樣的問題。位了回應這個需求,有一天一個名叫 Unifruit 的組織提出了一個去中心化的水果店想法。基本上,他們創建了一個有很多水果籃子的倉庫。每個籃子裡面都裝有兩種不同的水果。
✔ 目標很簡單:想買水果的人總是能找到自己想要交換的兩種水果的籃子,直接兌換,不需要找特定果農。舉例而言,想要用香蕉換橘子的人,找到這個籃子,把他的香蕉放進去,取出一些橘子就完事兒,而無需尋找培育橘子的果農去交易。
現在你可能會有以下這些問題: ❓ 假設我去蘋果/西瓜的籃子裡想要 2 個西瓜。我該放多少蘋果?反過來呢? 現在,讓我們假設這個世界上的每個人都是有誠信的,願意遵守 Unifruit 設定的所有規則。被蘋果砸中後,Unifruit 的一名成員提出了一種自動計算水果相對價格的演算法,最終得到通過並被稱為恆定乘積演算法 constant product algorithm。
假設最初籃子裡有4 個蘋果和6 個西瓜,那麼水果數量的乘積就是4 * 6 = 24
現在你要拿走兩個西瓜,讓籃子裡只剩下4 個西瓜和4 個蘋果。但是,這時候恆定積的規則就被打破了!
為了讓乘積再次等於24,你需要在交易後籃子裡的蘋果數量為24 / 4 = 6。現在籃子裡只有 4 個蘋果,因此你需要再放 2 個蘋果進籃子。
因此,這筆交易的實際價格為 1 個蘋果 / 1 個西瓜。
然後假設你想再買 2 個西瓜,讓籃子裡只剩下 2 個西瓜。你該放多少蘋果進籃子呢?
為了達到平衡,籃子裡最終應該有 24 / (4 - 2) = 12 個蘋果。
這意味著你需要再放 6 個蘋果進籃子。
現在西瓜的價格為:6 個蘋果 / 2 個西瓜,或 3 個蘋果 / 1 個西瓜。
從上面的小測驗可以看出,隨著籃子裡的西瓜數量減少,收取的蘋果數量越多,這符合供需法則。
❓ 你可能會問,第一次交易時所有的水果都從哪裡來的?如果不是 Unifruit,為什麼提供者願意放棄他們的水果?
令人驚訝的是,這些水果來自於其他像你和 John 一樣的農民!為了創建一個可持續的供應系統,Unifruit 鼓勵農民參與進來,創建他們自己的籃子,裡面裝有兩種不同種類的水果,從而成為「籃子提供者」。每當籃子裡發生一次交易時,Unifruit 要求買方留下一些水果籽作為對籃子提供者的補償。透過這種方式,農民有動力成為籃子提供者。
AMM 與訂單簿模式的一個關鍵差異在於價格決定機制與交易機制。
在訂單簿的模式中,使用者和使用者之間進行交易(訂單簿中的買單需要與賣單配對),而 AMM 的使用者則是和某對資產的流動性池進行交易。如果你想用USDC 購買一些ETH,在兩種不同類型的模式採取的步驟如下:
在訂單簿中,如果所有的賣單要價都高於你的買單(而你不想妥協),那麼你的訂單將被擱置,直到有賣家滿足你的要求。但對於 AMM 而言,你可以隨時且直接地與流動性池進行交易。