Loading...

當虛擬貨幣遇上數學的自動造市商

July 30, 2020 | Blog posts

上期談到,造市商是依據當前市場情況,以最佳買入價購入, 並以最佳報價賣出的人或機構,為市場提供流動性,即使到了虛擬貨幣市場, 也是為了達到相同的目的。

虛擬貨幣市場下的自動造市商

與傳統證券交易不一樣的是,虛擬貨幣的交易是依靠智能合約完成,但是智能合約常為人詬病的是確認速度太慢以及越來越高的手續費, 以以太坊1.0 為例,每秒僅能處理 15 筆交易(15 TPS)。 若再加上使用傳統訂單簿(Orderbook )來等待搓合買賣,既耗時又費錢。 此時,自動造市商(Automated Market Maker)技術的引入解決了這個問題。

Orderbook

自動造市商的機制則毋須使用訂單簿,它跳過買賣價撮合的等待過程, 讓買賣方直接交換智能合約,也就是說價格是預先設定好的, 而交換合約的對價基礎是來自兩種不同代幣間、由數學公式計算出來的匯率來制定, 使用者可自行決定是否接受當下匯率所算出來的估價。
那這數學公式又是怎麼計算的呢? 若以最簡單的公式來說明:

X*Y=K
token pool
token prices
Alice buy
Bob arbitrage
Bob sell
Pool rebalance

因此自動造市商的激勵 (incentive)策略可說是建立在套利 (arbitrage)機制上的, 吸引代幣持有者成為流動性提供者(Liquidity provider), 持續填充代幣池來獲利,以滿足市場的交易需求。 此外,由於套利行爲會改變代幣池中兩種代幣的數量比例, 持續的流動可使得交易匯率與市場匯率逐漸朝向一致。

chart

根據 X*Y = K 函數的公式可畫出上方這張圖。假設你有一份智能合約,含有 X 數量的代幣 A 和 Y 數量的代幣 B, 你的常數就是 X * Y = K,不論誰來買賣,造市商的基準位置都會跟著 X * Y = K 的曲線滑動, 如果將基準位置向右移動,那麼向右移動的數量就是使用者必須投入的代幣 A 數量(X軸), 而移動後的新基準點可對應出使用者可獲得的代幣 B 數量(Y 軸)。

在虛擬貨幣市場,最有名的自動造市商屬 Uniswap, 更精確的說,Uniswap 是恆定乘積造市商, 使用恆定乘積造市商模型(Constant Product Market Maker Model)來自動算出交易標的的數量與價格。 Uniswap 也有設計手續費(0.3%)來獎勵流動性提供者,因此在公式中納入了手續費的計算, 使公式更顯複雜, 更多關於 Uniswap 算法的文件請見連結

這樣的模式有別於一般中心化交易所幣幣交換的作法, 不使用訂單簿,而是以數學算法來完成交易買賣,可說是一種去中心化交易協議。

自動造市商看似簡化了許多傳統虛擬貨幣交易的問題, 但遇到相較極端狀況時,仍有造成資產損失的風險,例如:當代幣池的數量過少或兌換的數量很大時, 交易用戶將要承擔很大的價格滑點(Slippage)成本,這就與市場深度有關了, 我們將在下一期續談這個問題。