JustLend DAO 白皮书

JustLend

货币市场协议

V1.0

2020年12月

摘要

本文我们将介绍一种TRON网络的去中心化协议,该协议使用基于供需算法所设置的利率来建立货币市场。

1 引言

分散式金融,也被称开放式金融,已经发展成为TRON网络应用的核心驱动因素之一。DeFi的核心原则是提供一个全新的,无需许可的金融服务生态系统,没有任何中心化权威,世界上任何人都可以使用。在这个生态系统中,用户就是自己资产的托管人,对自己的资产拥有完整的控制权、所有权,他们可以自由进入市面上所有的去中心化市场。

借贷协议和平台给市场参与者提供了不同的使用动机,比如:

  • 对借款者:可以做空某个资产或者借来使用权

  • 对放贷者:可以利用自己的资产来获取利息

与传统金融产品相比,去中心化、无托管方的协议提供了几个很有前景的优势,比如:

  • 透明和价格有效性,因为价格受市场需求影响

  • 当发生借贷行为时的便利性和速度

  • 抗监管和不变性

在本文中,我们将介绍一种基于TRON网络的去中心化借贷协议JustLend,该协议将给用户提供一种分散,安全且低交易成本的市场,来获取贷款,赚取利息。

2 JustLend协议

2.1 协议概述

JustLend是TRON网络上建立的货币市场协议,用于建立基于TRON资产的供求变化,以算法计算得出利率的资金池。协议中存在两种角色,包括资产的存款方和借款人,并且资产的存款方和借款人可以直接与协议进行交互,从而赚取或支付浮动利率。

这里每个货币的市场都对应唯一的一个TRON资产,例如 TRX,TRC20 稳定币(比如 USDT)或其他TRC20 代币,并且包含一个透明且公开的分类账本,账本里面记录了所有交易。

2.2 存款

撮合借方和贷方的点对点平台是将一个用户的资产借给另一个用户。但JustLend与之不同的是,JustLend协议汇集了每个用户的存款资产,提供了更多的流动性,保证了资金系统的平衡。对于存款方来说,可以随时取出资产,不用等到某笔借款到期,这样流动性比在点对点平台上更加便利。

供应给市场的资产由TRC-20 代币 jToken 来表示。持有某种代币的人,可以通过Supply的方式获取jToken,遵守相应的约定便可以获取利息了。

2.2.1 主要用例

  • 用户可以在JustLend进行存款,低风险获得利息收入。

  • Dapp,机构及交易所的资产可以在JustLend中增值。

2.3 借款

用户(借款人)如果需要从JustLend中借出某种资产,首先用户(借款人)需要在JustLend上通过存款获取jToken后进行抵押,然后从协议中借出任何支持借出的资产。与点对点协议不同的是,从 JustLend 借出仅要求用户指定所需的资产,没有到期日之类的。借款是实时的,并且借款的利率是由市场供需自动决定的。比如:你要借 TRX,利率可能是 2%,要借 TRC20-USDT,利率可能是 5%,每种资产的利率都不一样,是根据市场供需自动计算出来。

2.3.1 抵押品价值

从对于借款人使用底层资产获得的抵押品 jToken 来说,每个市场都有一个从0到1的抵押系数(Collateral Factor,或者叫抵押因子,抵押率),这个系数代表你用一定数量的 jToken 能借多少资产,就是借款的上限。

流动性差的资产抵押系数低,而流动性高的资产有很高的抵押系数。借款人可以借取最高但不超过其借款能力的款项,这样可以保障资产借款方免受违约风险。

2.3.2 风险与清算

当借款人的未偿还借贷价值超过其安全抵押率,JustLend智能合约会自动发起清算,以消除协议的风险,确保资金提取和借出总是有超额的兑现能力,同时保护存款人的资金风险。

2.3.3 主要用例

通过 JustLend 协议,我们就可以无缝持有新资产了,不需要卖掉手里的币,也不需要跑到各种交易所去。这样,用户和开发者及交易员就有很多新玩法,比如:

  • 用户可以抵押持有的多种TRC20代币,换取其他TRC20代币。

  • 我们可以做空某种代币:可以把要做空的代币从JustLend 里借出来,放到交易所里在下跌前卖掉,从贬值中获利。

2.4 利率机制

传统金融借贷大部分按照天作为利息单位,但JustLend则是按照TRON网络3秒左右一个区块作为利息计算时间单位。传统金融借贷,在一次借款生命周期内,借款利率是固定不变的。而JustLend协议中的的利率根据市场的供需关系实时浮动变化,不同的货币市场每一个区块借款利率/放贷利率都可能不同。JustLend协议中使用算法设定每种资产的贷款利率,当借款人对某一加密资产的需求较低时,资金池里的可借贷金额过剩,流动性高,利率会降低,从而鼓励更多贷款;当借款人对某一加密资产的需求过剩时,可借贷金额降低,流动性低,利率会增加,从而吸引存款人的供给。

2.5 JustLend协议特点

  • 资金供给:采用货币市场资金池模式,不同的底层资产对应不同货币市场。

  • 撮合模式:智能合约自动撮合,不需要放贷方,借款方协商利息,借款时间等。

  • 记息时间单位:一个波场区块,大概3秒左右。

  • 放款方式:实时自动放款,放贷人只要持有jToken,就可以自动享受利息。

  • 还款方式:随借随还,只要 抵押资产价值*抵押因子 > 借出资产价值 + 累计利息,就可以一直进行借款。

  • 放贷/借款利率:浮动利率,由JustLend智能合约根据市场供需自动计算。

  • 清算机制:如果借款人抵押资产价值低于清算阀值,JustLend智能合约会自动发起清算。

3 JustLend协议架构

JustLend货币市场的核心是一个分布式账本,允许用户在计算利息时提供或借入资产。

3.1 JustLend核心架构

3.2 JustLend核心逻辑

  • 放贷人/借款人存入资产到JustLend智能合约的货币市场,放贷人/借款人存入的资产为底层资产。

  • 智能合约按照兑换率发放对应底层资产的JustLend代币jToken到用户账户。

  • 放贷人存入资产到JustLend的货币市场中可以享受放贷利息收益。

  • 借款人超额抵押资产后,可以从JustLend相应的市场借款,不同于P2P借款,借款人不需要和贷款人协商,只要对应的代币市场的流动性足够,将由JustLend智能合约自动撮合

借款利率由JustLend智能合约根据市场对资金的供需关系实时确定。在同一区块内,所有借款人的同一代币借款利率是相同的。

  • JustLend按照区块数为单位累积借款人利息。

  • 放贷人可以随时赎回自己存入的底层资产。

  • 借款人可以随时偿还贷款。

  • 如果借款人抵押资产价值低于清算阀值,JustLend智能合约会自动发起清算操作。

3.3 利率模型

利率模型是JustLend最核心的元素,涉及兑换率、使用率、放贷利率、借款利率、抵押率等概念。

3.3.1 兑换率

JustLend协议中,每个货币市场都是一个实现了TRC-20标准的智能合约,用户的余额则表示为jToken余额,用户可以通过向市场提供资产来铸造jToken,或者通过相应操作赎回相关资产的jToken。其中jToken与相关资产之间的汇率会随着时间的推移而上升。

其中:

  • 代表汇率,jToken 兑换对应的资产的兑换率。

  • 代表放贷人存到智能合约里面,但是还没有被借走的资产数量。

  • 代表平台的储备金总数量。

  • 就是当前时刻 jToken 的总流通量。

  • 代表当前时刻已借出资产数量。

3.3.2 使用率

使用率的用途在于度量平台资金使用效率,对于某个市场 a 的使用率 U 来说,可以用这样一个公式来表达,也就是整个池子里有多少钱借出去了,当然,钱借出去的比例越高,说明使用率越高。

3.3.3 储备金

在传统金融中,银行/P2P放贷,对每一笔借款,平台都会从放款收益中计提一笔风险储备金。JustLend会对每一笔借款的利息收益,按照储备金因子计算提取一笔储备金。

3.3.4 借款利率

借款利率和市场使用率及具体市场相关。目前借款利率根据不同的市场会采用不同的利率计算模型,一种是平滑利率模型,另外一种是分段利率模型。其中,平滑借款利率模型计算如下:

如果某一市场采用分段利率模型,则借款利率计算如下:

当使用率 <= kink时:

当使用率 > kink时:

其中 = /。

3.3.5 放贷利率

放贷利率同样和借款利率,与市场使用率等相关。某个市场的放贷利率可用如下公式来计算,其中,为货币市场a的借款利率,为货币市场a的使用率,为储备金因子。

3.4 清算

借款人在借款时候,JustLend要求抵押一定的资产,借款人的借款金额由抵押因子决定,也即贷款上限为:抵押资产价值*抵押因子。由于加密币资产的波动性,因此抵押资产的价值时刻都在变化,因此JustLennd会实时监控每一个借款账户的健康值,对健康值小于1的账户,JustLend会自动发起清算操作。其中健康值=用户所有抵押资产的价值(统一转为TRX度量)/用户所有借款资产的价值(统一转为TRX度量)。

3.5 价格预言机

由于存在实时计算借款人抵押物的资产价值、借款人所借资产价值等需求,因此需要实时获取各种底层资产的价格信息。开始时,JustLend将使用去中心化的JustLink价格预言机,来向JustSwap等多个价格数据源寻求价格,并筛选出合适的价格使用。同时采用了“平滑机制”等规避风险方案,避免了短时较高的价格波动。根据JustLink提供的数据,以供JustLend其他合约调用。但是随着时间的推移,JustLend价格预言机可以进行扩展并升级喂价机制,任何人可以为JustLend价格预言机提供价格数据来源。

3.6 管理审计

Comptroller提供对JustLend各个智能合约调用的管理/审计功能。Comptroller通过抵押系数对JustLend协议进行风险管理,即Comptroller为协议的风险管理层。每类底层资产都有相互独立的 抵押系数,其数值大小根据底层资产的流动性和市值规模在0~100%浮动。流动性越强,市值规模越高数值越大。若抵押系数为0,该类底层资产不能用作抵押或者在清算中进行抵扣。JustLend根据抵押系数确定用户所需抵押品价值以及该用户是否可以被清算。

3.7 治理

JustLend平台以对提案投票的形式进行治理。 JST代币可用来进行 JustLend的社区治理,持有者可以对JustLend协议提出提案,或对提案进行投票 。JustLend 在启动阶段将对协议进行中心化控制,然后,随着时间的推移,将过渡到完全的社区化。协议中的以下权限由管理员控制:

  • 开放/关闭/解禁一个货币市场

  • 更新每个市场的利率模型

  • 更新oracle地址

4 货币市场智能合约

JustLend协议中的货币市场以货币市场智能合约为基础。通过使用此智能合约,人们可以与 JustLend协议进行交互。接下来将会介绍JustLend货币市场智能合约的几个主要功能函数:

4.1 铸币功能

该功能将底层资产转入JustLend协议中,JustLend协议开始根据资产的当前存款利率来累计利息。 用户收到的jToken数量等于所提供的基础令牌的数量除以当前汇率。函数如下:

jTRC20:

function mint(uint mintAmount) returns (uint)

jTRX:

function mint() payable

4.2 提款功能

提款功能将用户的资产从货币市场转回给用户,具有降低协议中用户的供给平衡的作用。函数如下:

jTRC20/jTRX:

function redeem(uint redeemTokens) returns (uint)

4.3 借款功能

借款功能将资产从货币市场转移到使用者手中,其作用是根据借入资产的当前借款利率开始利息累积。函数如下:

jTRC20/jTRX:

function borrow(uint borrowAmount) returns (uint)

4.4 偿还功能

偿还借款功能将借入的资产转入货币市场,具有减少使用者借款余额的作用。函数如下:

jTRC20/ jTRX:

function repayBorrow(uint repayAmount) returns (uint)

4.5 清算功能

对健康值小于1的账户,JustLend会自动发起清算操作,清算发生时,清算人可以代表借款人偿还部分或全部未偿还的借款。函数如下:

jTRC20:

function liquidateBorrow(address borrower, uint amount, address collateral) returns (uint)

jTRX:

function liquidateBorrow(address borrower, address jTokenCollateral) payable

5 总结

本文中,我们介绍了建立在TRON网络上的JustLend协议,包括协议中的存款及借款,协议的利率机制,讲述了JustLend协议的资金供给及撮合模式等7个特点,随后介绍了JustLend协议架构,货币市场智能合约。 该协议完全运行在TRON网络上,从而让任何人都能够使用到高速,低交易成本的去中心化借贷协议。

Last updated