五分钟了解基于 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 进行了一次有趣的尝试,并且未来也将在目前借贷平台的基础之上慢慢丰富产品,建立一个大型的去中心化货币市场。