Sui上的全链借贷

Sui上的全链借贷

1. 背景

目前多链共存, 超过一半的流动性聚集在以太坊上, 剩余的流动性分散在其他公链.
流动性的割裂显然迟滞了资产的周转速度, 也加大了web3用户管理资产的难度.

2. DOLA协议

去中心化全链流动性聚合协议(Decentralized Omnichain Liquidity Aggregation Protocol)

  • (1) 星型拓扑结构: 以Sui为结算中心, 以其他链上的单币池为分支节点
    Sui网络即时确认,能够减少跨链时间,带来更好的用户体验,更容易扩展的链上存储资源和更安全的move合约特性
  • (2) Token跨链+Message跨链: Wormhole, Layerzero等跨链消息协议
  • (3) 链上治理: 早期由开发团队代理治理,治理代币发行后,逐步过渡到去中心化治理,最终完全由社区进行治理。
  • (4) 可扩展应用插件:
    • OmniId(全链数字身份, AA钱包入口),
    • OmniLending(全链借贷),
    • OmniSwap(全链交换),
    • OmniStableCoin(全链稳定币)
    • OmniLSD(全链流动性抵押衍生品)

dola-protocol

DolaProtocol 白皮书和源码:https://github.com/OmniBTC/DOLA-Protocol/tree/main/en

3. OmniLending 全链借贷

以Aave为代表的借贷协议,提供了对少数流动性最好的代币的借贷能力。在去中心化金融的世界里,Aave提供了无信任和无许可的良好特性。经过时间证明,去中心化的借贷能够运行的很好,但同时目前的借贷协议也存在大量未满足的需求。Aave仅仅满足了流动性最好的资产借贷能力,对于其他资产的借贷有待进一步扩展。Aave是单链模式的。虽然通过代币桥实现了跨链抵押借贷,但是需要各公链部署Aave协议,成本高且用户操作复杂。

OmniLending 基于DOLA协议实现了全链借贷:

  • (1) 去中心化借贷池: 储蓄用户提供闲置流动性获取收益, 借贷用户抵押贷出流动性
  • (2) 提高资产使用效率: 聚合割裂的流动性, 提高闲置资产的利用率
  • (3) 方便管理多链资产: 用户可以在A链向协议充值赚取收益,在B链上提现提取收益

4. OmniLending 协议安全性

  • (1) 超额抵押: 每一份贷出去的资产都对应一份超额抵押资产
  • (2) 二阶段浮动借贷利率: 当资金可用时,低利率鼓励借贷;当资金稀缺时,高利率鼓励偿还债务和增加额外的流动性
  • (3) 风险调整:不同于传统借贷,仅仅考虑用户抵押品价值降低带来的坏账风险。协议同时考虑负债价值上升带来的风险
  • (4) 软性清算: 在传统借贷中,清算人一次性清算的债务是固定的,目前是0.5,即清算人一次性允许清算人清算一半的债务。这种方式的缺点是如果较小的清算可以使债务恢复健康,那么清算一半的债务是过度的且不公平的。采用软性清算模式,每次允许清算的债务不超过使违约者恢复正常所需的金额(加上一个额外的安全系数)。这意味着轻微违约的借款人清算的债务少于一半,严重违约的借款人超过一半。
  • (5) 抗MEV清算: 在传统借贷中,清算的激励方式是将借款人的抵押品以固定百分比的折扣提供给清算人,通常在5%-10%之间。清算人是有利可图的,但是不抗MEV,因为矿工和跑在前面的人可以窃取清算人的交易。为了限制这种形式的MEV,协议允许流动性提供者有资格获取折扣(根据清算人为协议贡献的流动性给予清算折扣),矿工和其他人折扣很低甚至没有折扣。
  • (6) 风险保证金: 20%的借贷利息用于清偿坏账
  • (7) 流动性隔离防护: 用户可选择只参与储蓄不参与借贷,从而避免资产池清算的影响
  • (8) 联合喂价: 去中心化Oracle和中心化交易所Price联合喂价
  • (9) 多路跨链桥: 提高跨链桥容错率

5. OmniLending 用户视角下的资产操作

5.1 Web3用户 <-> OmniId用户

binding和unbinding:将链和地址同时绑定或解绑UserId

例:

U[A,Sui,B]: 表示这个UserId绑定了A链,B链和Sui上的地址, 可以从这三个链上发起交易

后续例子中:
A[-]: 表示在A链上完成用户的资产转出操作
-> : 跨链消息方向
Sui[+]: 表示在Sui上完成资产池的资产转入操作

5.2 OmniId用户 <-> OmniLending储蓄用户(提供流动性):

supply和withdraw: 提供流动性和提取流动性

例:

A链提供Token流动性(supply):   (U[A,Sui,B]: A[-] -> Sui[+])
提取A链Token流动性(withdraw): (U[A,Sui,B]: Sui[-] -> A[+])

5.3 OmniLending储蓄用户 -> 借贷用户(抵押借贷流动性)

borrow和repay: 借Token和还Token(包括利息)

例:

借B链的Token(borrow): (U[A,Sui,B]: Sui[-] -> B[+])
还B链的Token(repay): (U[A,Sui,B]: B[-] -> Sui[+])

5.4 OmniLending储蓄用户 <=> 借贷用户

默认储蓄用户就是借贷用户(可借币, 资产参与清算)

例:

降级为储蓄用户(cancel_as_collateral), 需要还清债务, 不参与清算: (U[A,Sui,B]: Sui)
升级为借贷用户(as_collateral), 可借币,资产参与清算: (U[A,Sui,B]: Sui)

5.5 OmniLending储蓄用户 x 借贷用户

流动性提供者以折扣价购买抵押品完成借贷用户的破产清算(替他还本金+利息)

例:

用A链的Token清算B链的抵押资产: (U[A,Sui,B]: A[-] -> Sui[-,+])