五分鐘了解基於 AMM 的無清算借貸協議 Timeswap
撰文:iambabywhale.eth,ForesightNews
當下市場每個新公鏈的啟動都幾乎伴隨著兩種 DeFi 協議的建立,一種是基於 AMM 的 DEX,另一種就是借貸。二者所需要的流動性為新公鏈積累了早期的資本沉澱,推動了後續經濟基礎設施的建設。這其中,DEX 大都實現了利用聯合曲線來處理交易,簡單的數學模型讓 DEX 的邏輯很少出現漏洞,但隔壁的借貸協議卻因為預言機等較為複雜的組件而有被攻擊的風險。
那麼有沒有可能利用聯合曲線來建立一個借貸市場呢?Polygon 上的 Timeswap 給出了一個解決方案。
協議簡介
Timeswap 是建立在 Polygon 上的,基於 AMM 的無清算借貸協議,協議的機制我們稍後來詳細介紹,先來看下 Timeswap 的基本信息。
Timeswap 已於 2022 年 3 月 22 日上線主網,當前團隊會不時開放一些小的借貸市場來對協議進行測試,用戶可以選擇在 Polygon 上出借自己的 USDC,或者抵押 MATIC 借入 USDC 來進行嘗試。Timeswap 在 2021 年 10 月宣布完成種子輪融資,但並未披露融資金額,參與此輪融資的投資方包括 Multicoin Capital、Mechanism Capital 和 Defiance Capital。
Timeswap 的創始團隊主要由菲律賓人組成,其中創始人 Ricsson Ngo 是菲律賓馬尼拉雅典耀大學金融數學碩士,也曾是菲律賓當地社區教育平台 Einstar 的創始人;聯合創始人 Harshita Singh 此前在印度的沃爾瑪任供應鏈主管;另一位聯合創始人 Ameeth Devadas 曾是鏈接項目與資本的投資平台的產品經理,更重要的是他是 Polygon 的天使投資人。創始團隊的其他成員包括了 Zapper.fi 的創始人 Dipesh Sukhani、前 Polygon 財務副總裁 Keyur Shah 等。
實現機制
當前借貸協議的模式大都是由流動性提供者提供借款池,借款者通過超額抵押另一種代幣從而在池中進行借出,流動性提供者獲得借款人利息的收益。當抵押物的價值下降至某一個閾值以下時,就會將抵押物出售進行清算,部分補償 LP 的損失,部分成為清算人的利潤。
Timeswap 則是通過聯合曲線實現自動化的借貸,無需預言機喂價,也不會對抵押物進行清算。在上文中提到的借貸協議模式中,曾出現因為為某些資產提供喂價的預言機被操控從而實現對協議的攻擊的事件。Timeswap 希望通過聯合曲線建立一個不會出現預言機攻擊,並且無需許可的開放借貸市場,並最終成長為大型的貨幣市場。
當下實現其借貸協議的函數為 XYZ=k,其中 X 本金代幣數量、Y 代表每秒收益、Z 代表抵押代幣數量,而 k 則是常數,類似 Uniswap 中 XY=k 的模型。
舉例來說,當我想設置一個為期 6 個月的 DAI-ETH 借款池,初始資金為 1 萬枚 DAI,期望的初始年化收益率為 15% 且抵押率為 167% 時,此時 X=10000,而年化收益 15% 就意味著每秒的收益 Y 為 0.0000475 DAI,此時假設以太坊價格為 4000 DAI,則 Z 為 10000*1.67/4000=4.175,所以初始的曲線公式為:
XYZ=10000*0.0000475*4.175=1.98=k
當池子設置好了之後,市場上會出現三種類型的用戶,分別為想繼續添加流動性的 LP、貸款人和借款人。其中原理就類似於 Uniswap 中流動性提供者以及交易者。當添加或撤出流動性時,參數等比例增減,k 值發生改變;當市場上增加或退出了新的貸方或借方時,參數會隨著 X 與 Z 的增加與減少進行自動調整。
Timeswap 實現這一切的方式,是通過向每一類參與者發放代表不同池中份額的 ERC-20 以及 ERC-721 代幣,並在市場關閉後通過實際池中剩余的資金按比例分發給不同參與者。
貸款方
貸款方即向協議中添加可借資產的用戶,此類用戶在轉入可借資產之後,會收到 4 種代幣:債券本金代幣(BPT)、債券利息代幣(BIT)、保險本金代幣(IPT)、保險利息代幣(IIT)。
其中 BPT 代表的是可借資金池的份額,該資金池即初始的可借資產加上貸款方存入的資金減去借款方借出的資金後的總金額;BIT 即利息池的份額,也就是借款人支付的所有利息的池子;IPT 代表貸款方債券代幣中未實現資產在貸方持有的保險範圍內的份額;IIT 則代表了債券利息代幣未變現資產的份額。
借款方
借款方存入抵押資產來借出資金,並獲得 ERC-721 格式的抵押債務代幣(CDT),該代幣記錄了借款人要支付的利息和鎖定的抵押品的信息。在到期之前,若借款人償還債務,則將銷毀該代幣並釋放抵押品,否則會將抵押品分配給貸款方。
流動性提供方
流動性提供方在提供流動性後將獲得 LP 代幣,並將通過借貸雙方的利差獲取收益。在官方文檔中標出的流動性提供者收到的 CDT 代幣可能代表著收益的份額,也可能僅僅是錯誤。
借貸行為發生時的數據變化
當借貸行為發生時或者流動性增減時,流動性提供方所占份額的變化不難計算,因為其只會收到 LP 代幣。這其中計算最為複雜是貸款人和借款人,我們以官方文檔中的數據舉例。
這裡需要提前說明的一點是,無論用戶在選擇借款或貸款時都可以自行選擇收益率和抵押資產之間的關係,例如貸方可以降低收益率以提高自己貸出資產被借方抵押資產覆蓋的比例;借方也可以通過提高抵押資產數量來降低借款利息。但即便如此,對借方的影響仍然不大,因為借方只需要按照成交時的數據支付利息即可。
貸方
現在假設一個 DAI/ETH 借貸池的初始參數為 X=10000、Y=0.0000475(年化利率 15%)、Z=4.16、k=1.979,期限為 1 年。再假設此時 A 在該池期限結束前一個月存入 1000 DAI,選擇了 10% 的年化收益率。此時,x=1000,而 A 最大的收益率即 z=0 時,可以理解為完全不為收益投保的情況下,y=0.00000425,最大收益約為 13.41%,Timeswap 將最小收益率定義為最大收益的 1/16,這裡就是 0.84%,保證了貸款人多少會有收益。
A 的本金為 1000 DAI,所以會收到 1000 枚 BPT 代幣,10% 的年化收益存 30 天,會收到約 8.19 DAI,故會收到 8.19 枚 BIT 代幣。
接下來計算收到的 IPT 與 IIT 代幣數量,A 將收到的 IPT 數量即為當 Y 不變時 Z 的變化量,在本例中即為 0.37,即 A 將收到 0.37 枚 IPT 代幣。現在將 10% 的收益率帶入計算,得出 Z 的變化量 z 為 0.1,IIT 的計算方式為 z*30 天的秒數 / 2\^25=0.0077,即 A 將收到 0.0077 枚 IIT 代幣。
最終結算時,本金和收益有任何一方出現不足都將使用對應的保險代幣進行償付。若 DAI 池中的代幣足夠償付貸款人,則無需動用以太坊代幣池。
借方
有了貸方作為例子,借方的計算就順理成章,只是從 X 變化引發的 Y 和 Z 的變化,變為 Z 的變化引發 X 和 Y 的變化。
假設此時 B 在同樣時間,同樣的借貸池內,希望以 10% 的利率借出 1000 DAI,按照同樣的計算方法,B 最終需要還回 1008.19 DAI 才能收回抵押資產,而其抵押資產的計算則是關鍵。首先計算其最小的抵押數量,即 Y 不變,X 減少 1000 時,Z 的變化量為 0.469,再通過 10% 的利率計算 z 的變化量為 0.18,將 0.18*30 天的秒數 / 2\^25=0.139,所以 B 總共需要抵押 0.4829 ETH 才能借出 DAI,抵押率超過了 190%。
總結
Timeswap 使用三個可變參數來對借貸池中的數據進行實時處理,這樣的方案好處在於因為不存在預言機喂價的問題,所以不因為預言機被操縱從而受到攻擊,也意味著長尾資產也可以自由的在 Timeswap 上設立市場。但作為一個去中心化的市場,Timeswap 也存在一些問題。在例如 Aave 的借貸市場中,作為貸款方幾乎不會虧損的可能性,因為當抵押資產跌到一定程度就會被清算來補償貸方投入的資金。Timeswap 目前仍然是一個定期的借貸市場,如果在到期時出現行情大幅波動,導致抵押資產價格幾乎都低於借出資產價格,就會出現貸方雖然收到了抵押資產作為補償但仍然出現法幣本位的虧損。
此外,Timeswap 之所以將本金和收益代幣分離,是因為此前測試並未區分二者,也就是說貸方依據本金比例去分配最終資金池,這就導致在某些 APR 短時間內極高的極端情況下,貸方可以獲得大量的本金代幣,從而在最終拿走池中大部分的代幣使得部分前期的貸款人甚至遭受了本金損失。所以設置兩種代幣可以儘可能保證貸款人的本金安全,並且保險也是本金和收益分開投保的狀態。
Timeswap 進行了一次有趣的嘗試,並且未來也將在目前借貸平台的基礎之上慢慢豐富產品,建立一個大型的去中心化貨幣市場。