讀懂自動做市商Balancer的發展邏輯與缺陷
本文於2020年5月2日發佈於鏈聞,作者潘致雄系鏈聞研究總監。
現在是關注 DeFi 領域中「自動化做市商」這個賽道最好的時候。這個賽道中,此前最靚麗的明星是去中心化交易平台 Uniswap 。據 Alethio 最新發佈的 DeFi 數據報告,Uniswap 正蠶食以太坊鏈上越來越多的交易量。作為一款以自動化算法實現交易的協議,Uniswap 竟然在 3 月 12 日「黑色星期四」期間吸引了以太坊鏈上交易平台中 40% 的日活用戶。
而 4 月初剛上線的 Balancer ,又是另一個值得關注的明星。這個新上線的 DeFi 平台,為 Uniswap 這類 AMM 工具注入了更多的想像力:Balancer 不僅能成為一個交易工具,還能擴展為一款大眾化的「指數基金投資工具」,投資回報有望超過專業投資者。
如果說 Uniswap 實現了 0 到 1 的突破,那 Balancer 有可能要 推動 1 到 10 的增長。
Balancer 是對鏈上流動性工具的一次巨大提升。與前輩 Uniswap 相比,它提供了更多的設置和功能,所以你可以將它理解為是個「高級版的 Uniswap」。
在 Balancer 之前, Uniswap 和 Curve 是同類產品中最典型的兩個:Uniswap 提供了簡潔的通用型解決方案,而 Curve 則針對 穩定幣 的場景深度優化。但 Uniswap 和 Curve 這兩個產品只能局限在「交易」的場景中,沒法擴展更多應用。而且在交易功能中,他們自定義化程度並不高。以 Uniswap 為例,流動性提供方不可以自定義費率、每個資金池無法按照特定比例分配、每個資金池僅支持兩個代幣。
但 Balancer 突破了這個問題。為了給做市商提供更全面和可自定義的解決方案,Balancer 解決了上述的這些問題。在 Balancer 的設計中,做市商和流動性提供方可以自行創建一個支持 高度自定義的交易資金池 ,以實現:
- 費率自定義 :交易費率更低或更高的資金池 (交易對) ,而 Uniswap 固定為 0.3%;
- 資產配比自定義 :資金池中的資產可以按照任意比例添加流動性,而 Uniswap 必須以 1:1 的比例添加;
- 支持 最多 8 種資產 :甚至,一個資金池內可以添加最多 8 種資產,而 Uniswap 每個資金池只包含 2 種資產;
- 指數基金 :一個多資產的資金池可以實現指數基金的功能,用戶還可以通過它進行被動式投資。
從某種角度來看,可以把 Uniswap 看作是 Balancer 的一個 子集 。用戶可以通過 Balancer 創建出一個幾乎與 Uniswap 相同的資金池,不過流動性取決於資金池的資金體量,所以兩者存在競爭關係。
而廣義上來說,Balancer 還在和其他的 資產管理類 DeFi 協議 競爭。作為 Balancer 的流動性提供方,投入資本的主要目的是為了賺取交易手續費,所以如果有更高收益且更低風險的投資機會,可能會最終影響到 Balancer 的流動性表現。
Balancer 在 4 月 1 日上線以太坊主網後,整體增長良好。目前已創建 29 個獨立資金池,累計的交易量達到 36 萬美元,累計流動性達 137 萬 美元 。
其中流動性最佳的資金池是由 WETH 和 MKR 組成的,匯集資產約 76 萬美元。這也和 Uniswap 類似,Uniswap 中流動性比較具有優勢的資金池也是由以太坊和 MakerDAO 的治理代幣 MKR 組成的。
總體來看,Balancer 的發展值得期待。
小科普:什麼是做市商、AMM、資金池?
在深入探究 Balancer 之前,有必要對「 自動化做市商 (AMM) 」做一個簡單科普。
Uniswap 和 Balancer,都屬於自動化做市商 (AMM) 。這類 DeFi 產品已成為 DeFi 的基礎設施。越來越多的鏈上交易平台,或去中心化交易所 (DEX) 已經集成了 AMM,作為托底的 流動性保障 。
做市商是交易市場的流動性提供者,有助於提升市場的 交易效率 。
自動化做市商 (AMM) 則基於特定算法或模型實現,比如 Uniswap 採用的是 恆定乘積做市模型 ,還有更複雜的 AMM 模型可以根據交易品類或行情波動定制。
每個 AMM 協議都會包含多個資金池,可以把它理解成是交易所的 交易對 ,但其中包含了部分資產用作執行 AMM 的 做市模型 。用戶與 AMM 的資金池之間的互動方式主要有三種:注入流動性、提取流動性和交易。注入流動性的用戶相當於成為 做市商 ,提取流動性的用戶相當於從資金池中 拿回 之前的資金。
為了促進更多普通用戶將閒置資金池注入資金池成為做市商的一員,AMM協議一般都會內置「 分紅 」機制,將收集而來的交易費按照資金池的佔有比例分配給所有流動性提供方 。
Balancer 和 Uniswap 有何區別?
上文我們已經簡單介紹過,可以把 Balancer 理解為是個「高級版的 Uniswap」,而 Uniswap 則可以被視為是 Balancer 的一個子集。
所謂「高級」,不是指性能,畢竟兩者同樣基於以太坊 Layer 1,很難拉開性能或交易吞吐量的差距;而是差別體現在 可定制化 上和 可伸縮性 上。
作為以太坊 DEX 的基礎設施,Uniswap 的優點為做市算法與產品邏輯簡單,而且因為沒有 管理員特殊權限 (admin key) ,被社區認為是去中心化程度較高的協議。其他一些常見的去中心化交易協議如 Kyber、0x API,也會將部分交易訂單轉交由 Uniswap 撮合完成。
為了保持產品邏輯的簡潔,Uniswap 的部分參數被 固化 在協議內,未開放給用戶設置,未來是否會開放也不得而知。不過從目前 Uniswap V2 的改進來看,這些仍然不是 Uniswap 現階段的關注重點。
而這正好構成了 Balancer 的突破口,足夠與 Uniswap 進行 差異化競爭 。相比 Uniswap,Balancer 主要增加了三個組件的可自定義化:
- 資金池的費率可設置 :該參數決定了交易者需要為每筆交易付出的額外交易成本,也就是流動性提供方可以獲得的收入比例;
- 支持的 資產數量最多 8 個 :這也就意味著普通用戶可以在單個資金池內實現最多 8 個資產的交易,而在 Uniswap 中,用戶大多需要使用多個資金池才可以實現兩個代幣交易;
- 資金池中 資產的占比可配置 :創建資金池時,不用按照相等的價值投入資產 (如 Uniswap) ,而可以根據任何比例添加。
第一條是比較明確的特性,但是第二第三條需要通過更多具體案例進行理解。
除此之外,AMM 工具的最核心模塊「 做市算法 」因此需要調整。之前在 Uniswap 中採用的「恆定乘積做市商」算法模型不再適用,需要升級為更通用的模型,或許我們可以稱之為「 加強版恆定乘積做市商 」 ,比 Uniswap 的模型增加了權重和多代幣的屬性,以便更好的支持上述第二和第三條特性。
我們希望通過一個案例理解這兩者的區別。為便於計算,以下案例均去除了交易費用的影響,並簡化計算量級。
Uniswap 的恆定乘積做市模型
假設 Uniswap 的 ETH/DAI 的資金池中擁有 10 個 ETH 和 1000 個 DAI,那該資金池的恆定乘積模型為:
該模型規定了,無論後續的用戶如何交易,該資金池中保留的 ETH 數量和 DAI 數量的乘積等於 10000 保持不變,如果用戶通過該資金池交易,提交 10 個 ETH 可以換得 500 個 DAI:
Balancer 的「加強版」恆定乘積做市模型
Uniswap 中,單資金池僅兩個代幣,所以上述公式是有效的。但是 Balancer 的做市商模型支持 多代幣 ,也就是一個資金池內共有 8 個代幣 (這是目前的限制) 可以互相交換,於是,最多就會涉及到最多 8 個變量。
更需要指出的是,該模型可以支持更多代幣,或許未來會放開該限制。
假設 Balancer 某個資金池中含有 ETH 、 DAI 和 SNT 三個資產,初始狀態下資金池包含了 10 個 ETH、500 個 DAI 和 100000 個 SNT,而這個資金池的創建者設置的三個資產的占比分別是 30%、30% 和 40%,則該資金池模型的恆定乘積為:
該公式考慮到了多資產以及權重在其中的影響,可以通過計算得出每一次交易時的比例。如果資產數量更多,就加上更多的乘積,以此類推。
通過「 加強版 」恆定乘積做市模型,資金池最多就可以支持 8 種資產了。
優勢:為何支持多代幣?
Uniswap 可以實現任意兩個 ERC-20 代幣 的兌換,但其實背後是由兩個資金池實現的。每一種 ERC-20 資產都可以創建一個與 ETH 之間的資金池,然後普通用戶可以為該特定的資金池提供流動性。
比如用戶將 SNT 換為 BAT,其實是通過 SNT/ETH 資金池和 BAT/ETH 資金池實現的,ETH 作為一種 交易媒介 ,促成兩個交易對同時成交,不過這樣需要付出兩次交易費。
但在 Balancer 中,由於一個資金池可以包含多個代幣,所以 ERC-20 之間的交易可以在 同一個資金池 內實現,也許可以減少交易費和鏈上 Gas 費用。
不過很多時候為了減少 交易成本 (滑點) ,Balancer 也可以幫助用戶從多個資金池內尋找並聚合最優交易路徑。
優勢:費率自定義可促進市場化
Balancer 的一大改進是資金池創建者可以設置資金池的 交易費率 ,而自定義費率可以促進流動性供給的市場化。
在 Uniswap 中,每一個資金池的費率固定為 0.3% ,而 Curve 中的費率僅 0.04% ,所以如果遇到穩定幣交易的場景,用戶應該會優先選擇 Curve,而且 Curve 的做市模型更適合穩定幣,滑點更低。
Balancer 為資金池創建者提供了 費率自定義 的功能,不同資金池之間為了爭奪交易量,可能會以費率作為競爭的核心參數。預計這會降低 DEX 的整體交易費率。
而對於那些具有 大量資金 的流動性提供方,或者提供某些特殊資產的資金池,可以設置一個更高的交易費率,因為他們為市場提供了更多流動性和特殊資源。
為什麼普通用戶要為 AMM 提供流動性?可盈利,但也可能虧損
流動性提供方可以將 AMM 看作是一種 資產管理工具 。
AMM 為了激勵更多用戶投入閒置資金建立流動性資金池,所以需要將資金池中的收益分配給所有流動性提供方。
收益取決於資金池交易費率和資金池的總交易量,比如 Curve 的資金池的交易費率較低僅 0.04%,但是由於交易量大,可以為流動性提供方帶去最高可達年化 20% 左右的收益。不過,最近 Curve 資金池的收益回落比較嚴重,一度低至 4%。
隨著流動性供給的市場化,收益終將回歸至 平衡點 。如果某個資金池的年化收益率顯著高於其他資金池,那更多用戶就會將資金投入該收益更高的資金池中,隨著資金池總量增加,單位成本的收益就會下降。
但也不可避免存在一些風險。
從協議的安全風險角度來說,開源且通過安全審計的 AMM 風險相對較低,所有交易均通過智能合約執行。但一個很明顯的缺點:用戶收益需要以 一籃子貨幣 計價。當用戶提供流動性時,需要注入該資金池中所有支持的代幣;當用戶提取流動性時,也是獲得該資金池中所有支持的代幣。
從上述的「 收益率 」公式來看,為了簡化計算,其實漏了個很重要的變量,就是資產本身價值的變動。所以上述的公式適合那些資產價值變化並不顯著的資金池 (如 Curve 的穩定幣資金池) 。如果增加了 資產價值變化 的變量,那資金池的收益率還需要減去資產本身貶值的價格,或加上額外的收益,計算起來是比較複雜的。
畢竟資產之間的價格會根據市場變化,波動可能會很劇烈。
以 Uniswap 這類均衡型的資金池為例,用戶初始投入了 1 ETH 和 100 DAI 的流動性資金 (也就是市場價格為 1 ETH = 100 DAI) ,但是取回前 ETH 價格相比 DAI 大漲 (市場價漲為 1 ETH = 133.34 DAI) ,所以只能取回 0.9 ETH 和 120 DAI。
如果完全以 ETH 計價,用戶初始投入的 2 ETH 已經跌為 1.8 ETH (也就是虧損) ,如果完全以 DAI 計價,用戶初始投入的 200 DAI 漲至 240 DAI (也就是盈利) 。相比之下,如果用戶沒有參與資金池,而是持有 2 ETH,此時他持有的資產價值以 DAI 來計算,為 266.67 DAI (最終還是虧損) 。
Crypto Español 頻道博主 AlfaBlok 曾 專門撰文,對該風險做了更詳細的分析。當 固定 某些參數的時候,以一個比較貼合實際的案例來說,在 1 ETH = 100 DAI、交易費為 0.3%、資金池大小為 30K ETH、月交易量為 20 萬 ETH、持有期間為 1 年的前提下,對於 Uniswap 的 ETH/DAI 資金池,當 ETH/DAI 價格在 -80% 至 120% 左右的範圍內波動,投入資金池的收益更高,否則的話,不如持有 ETH。
在整個收益的計算中,變量包括資金池 大小 、資金池 交易量 、 交易費率 、兩個資產間的價格波動、以何種資產計價等等,所以這不是個很簡單的資產管理投資工具,這或許會成為很多入門流動性提供者的門檻。
缺點:Balancer 資金池可能會增加交易滑點
從 交易滑點 來看,Uniswap 的 AMM 模型更優。因為在 Uniswap 中,每個資金池都是按照 50% 和 50% 的比例設立的,所以其曲線 (X*Y=K) 就是一個標準的反比例函數 (只包含第一象限) 。
而在 Balancer 中,由於可以設定資金池中每個資產的占比,比如代幣 A 與代幣 B 以 85% 和 15% 的比例組合為一個資金池,該資金池的恆定乘積曲線如下。
藍色的曲線
上文已經介紹過了 Uniswap 模型和 Balancer 模型的具體公式,根據公式就可以推導出 Uniswap 這種 1:1 的模型整體的滑點更低。或者你可以參考上圖,在該資金池中,綠點是一個很明顯的 分水嶺 ,在綠點的左側,代幣 B (Y 軸) 需要付出極大的代價才可以兌換極少數量的代幣 A (X 軸) 。
如果將該情況擴展到 Balancer 的多代幣資金池中,情況也差不多。不過為了減少滑點,Balancer 的資金池也可以將資產的比例設置為 1:1 或 1:1:1 等,那這樣就和 Uniswap 差不多了。
重新想像 Balancer 的潛力:指數基金生成器
Balancer 有機會成為 Uniswap 很好的補充,或成為鏈上資產流動性的重要提供方。但這不是全部:Balancer 的另一個本質,是成為 指數基金 創建工具。
指數基金投資在傳統金融領域是一種基礎的投資策略,比如常說的標普 500 或滬深 300 就是兩個大盤指數,基金公司可以根據指數創建對應的指數基金,追蹤大盤走勢。
由於這類被動投資基金費率低,且很多時候投資回報不輸主動管理基金,所以是市場中主流且大眾化的 被動投資方式 。
指數基金之父,先鋒集團創始人 約翰·博格 曾說:「不管市場如何,指數基金給你合理的市場回報。」 巴菲特 曾表示:「通過定期投資指數基金,一個什麼也不懂的業餘投資者能夠戰勝大部分專業投資者。」
具體而言,指數基金由多種資產標的以相應的比例組合而成,用以追蹤某些特定市場指標或資產價格的投資工具。正巧,這就是 Balancer 資金池的設定。
Balancer 每一個資金池支持最多 8 種資產,所以用戶可以通過 Balancer 創建一個最多由 8 種資產組合而成的 指數基金 ,比如:
- 追蹤 加密貨幣大盤 情況,可以由比特幣 (可以利用跨鏈至以太坊的 WBTC 或 HBTC 實現) 、以太坊和 DAI 組成;
- 追蹤 DeFi 生態 ,可以由 DeFi 協議的原生代幣組成,比如 MKR、ZRX、KNC、BNT 等;
- 追蹤 預言機 (Oracle) 生態,可以由預言機產品的原生代幣組成,如 LINK、TRB、NEST 等。
這樣的例子還有很多。如果功能允許的話,Balancer 還可以用來發行 組合型基金或母基金 (FoF) ,只需要支持將各個指數基金的流動性代幣再匯總至一個 Balancer 的資金池中即可。
為什麼指數基金生成器可以解決流動性問題?
因為指數基金有 再平衡 (rebalance) 的需求,而交易者有尋找最優匯率或套利的需求。將這兩個需求匹配起來,就為市場提供了流動性,我們通過一個案例來理解整個過程。
假設目前的市場價格為 1 BTC = 10000 USDC,我們在 Balancer 上創建一個由 50% 比特幣和 50% USDC 組成的基金,試圖追蹤美元以及比特幣的價格。
如果在 5 天後,BTC 的市場公允價格漲了 20% 達到了 12000 USDC,那資金池的中的兩個資產按照最新的市場價格,在資金池中的價值占比也就發生了相應的調整,分別為 55% 和 45%。
但是該資金池的兌換比例依舊保持在 1 BTC = 10000 USDC 的恆定乘積曲線。對於外部交易者來說,資金池內價格與市場價格偏離, 外部交易者 是有利可圖的。
根據恆定乘積模型來計算,套利者可以對資金池投入 500 美元換得 0.0476 個比特幣 (相當於 1 BTC = 10,504 USDC) ,這個 BTC 的價格遠低於市場 (1 BTC = 12000 USDC) ,用戶可以把 0.0476 個比特幣在公開市場上賣出,獲得 571.2 USDC。
500 美元成本賺得 71.2 美元,單次收益率高達 14% ,一定會有很多套利者進入,壓榨其中的套利空間,增加市場流動性。
最終市場價應該與該資金池內的兌換比例非常接近,而且這是一個 動態持續 的過程,所以該資金池的資產分布應該也會繼續保持為初始化時的比例。
如果把上述的這個資金池看作是一個指數基金,那上面描述的這個市場自動調節機制,就相當於進行了指數基金的「 再平衡 」 (rebalance) ,恢復至初始化時設置的指數分配比例。常規的指數基金會按照日、周、月或者年的頻率執行再平衡,但是在 Balancer 中,再平衡是 隨時發生 的。
利用聯合曲面發行流動性代幣
Balancer 協議如何記錄每個流動性提供方投入的資金數額呢?發行「流動性代幣 」作為一種記帳憑證。為了更好地描述「發行流動性代幣」的過程,Balancer 還提出了名為「聯合曲面」(Bonding Surface)的概念。
「聯合曲面」一詞來自於「聯合曲線」,前者是後者的更通用版本,或許你也可以把「聯合曲面」理解為「聯合曲線」的 升級版 。
首先來了解一下 DeFi 領域大名鼎鼎的「聯合曲線 」,這是一種通過智能合約發行代幣的方法。很多人可能以為「聯合曲線」是一種特定的曲線,其實它只是一個概念,用以描述「代幣發行量 」和「代幣價格」之間的關係,所以無論這兩者之間的函數關係在直角坐標系中繪製成曲線還是直線,都可以統稱為「聯合曲線」。
為什麼「代幣價格」和「代幣發行量」存在函數關係?那為什麼比特幣或以太坊的發行量和價格就不存在任何關聯呢?
因為利用「聯合曲線」進行的代幣發行類似於 一級市場 ,不是二級市場。而且這個一級市場與項方融資的一級市場不同,聯合曲線發行代幣的過程,是通過智能合約實現的。
那聯合曲線與 Balancer 有什麼關係?
就一個主要作用:發行「流動性代幣 」,作為投入流動性的記帳憑證。當用戶為 Balancer 的某個資金池提供相應的流動性後,Balancer 會按照投入資產的數量,配合上相應公式計算得出 用戶投入的貢獻 ,並發放相應的「流動性代幣」,作為一種憑證。
如果在一段時間之後,該資金池沒有發生任何變化,那用戶就可以將之前的流動性代幣換回相同資產。但如果在此期間該資金池收集了更多的 交易費 ,用戶就可以將之前的流動性代幣換回相同的資產外加 所分得的交易收益 。
稱之為聯合曲面,是因為聯合曲線只涉及到兩個代幣,分別是投入的代幣 A 和獲得的代幣 B。但是在 Balancer 的雙資產資金池中,其實涉及到三個代幣,分別是資金池中的代幣 A 和代幣 B,以及對應的「流動性代幣」。
X 和 Y 軸代表了代幣 A 和 B、Z 軸代表了流動性代幣
聯合曲面即是描述了資金池中 代幣 A、代幣 B 和 流動性代幣 這三者關係的。不過如果 Balancer 的資金池超過兩個代幣,那聯合曲面也將升級為更多維的曲面。雖然很難通過計算機繪製更多維的聯合曲面,但是所有的公式和定義還是依舊有效的。
Balancer 已打開 AMM 應用場景的大門
由 Uniswap 和 Bancor 發起的 AMM 概念,一直都束縛在現貨交易這一種場景內。而 Balancer 是第一款將 AMM 應用場景拓寬的工具,它用實際行動證明了 AMM 不僅可以進行普通的 現貨交易 ,還可以成為 指數基金管理平台 ,用來管理大規模的被動投資基金,並且是以去中心化的形式進行的。
現在也有越來越多的 DeFi 項目也在探索 AMM 的各種極限,比如 Curve 和 Shell Protocol 在優化 穩定幣 AMM 算法, MCDEX 和 Futureswap 則是在探索 衍生品交易 領域,如 20 倍槓桿的永續掉期合約。
在目前階段,以太坊的性能捉襟見肘,DeFi 生態可能是需要 AMM 等自動化工具減少鏈上提交頻率省下網絡性能的,但如果有一天以太坊 2.0 提升了上百上千倍的交易吞吐量,可能就是另一番場景了,或許會和現在的中心化交易所一樣,做市商幾乎是由 專業化的機構 主導的。到時候通用型 AMM 的場景在哪裡,是 DeFi 生態現在就可以考慮起來的問題。