jToken 集成

jToken介绍

jToken 是指 JustLend DAO 中存入底层资产所得到的“存款凭证”。也就是您在存款后所得到的 jTRX、jUSDT、jSUN、jBTC等代币,它是存在于您钱包中的一种 TRC20 代币。

去中心化金融(DeFi)协议 JustLend DAO 支持的所有资产,都是通过 jToken 智能合约来封装集成的,用户通过铸造代币(jToken)向协议提供资产,然后您只要持有 jToken,就可以赚取到利息,而当您选择赎回后,每个 jToken 都可兑换成相应的基础资产。

因为 jToken 是一种 TRC20 的代币,所以它和其他代币拥有同样的特性。例如:转账给其他人,存入某个智能合约中等等。如果您将 jToken 转账给其他人或机构,则代表您放弃了对您存入 JustLend DAO 的资产的拥有权。

使用场景

A 在 JustLend DAO 中存入了 100 TRX,得到了 10000 jTRX 的存款凭证(jToken),之后 A将 6000 jTRX 转账给了 B。此时,A剩余的存款凭证变为 4000 jTRX(等值 40 TRX 的 JustLend DAO 存款),而 B 会凭空得到 6000 jTRX 的存款凭证(自A转账所得,等值 60 TRX 的JustLend DAO 存款)。如果 B 不主动将 jToken 转回给 A,则代表 A 永远失去了对此 6000 jTRX(60 TRX)的存款拥有权。(此例子中 jTRX的兑换比例按 1 TRX = 100 jTRX 计算)。

可以说,jToken 是与JustLend DAO 协议交互的主要方式。每个 jToken 合约都创造了自己的货币市场,而用户铸币、赎回、借款、偿还借款、清算借款或转让 jToken 时,他们将使用到 jToken 合约。

如何用jTokens赚取利息

每个市场都有自己的供应利率(APR)。 利息无需分发,您只需持有 jTokens,就可以获得利息。

jTokens 通过其汇率积累利息——随着时间的推移,即便你钱包中 jTokens 的数量保持不变,每个 jToken 都可以转换为越来越多的基础资产。

jToken 智能合约

合约地址

查询接口

清算激励

function liquidationIncentiveMantissa() view returns (uint)

功能描述:通过调用Unitroller合约的liquidationIncentiveMantissa函数,可以查询到清算激励。 清算人将获得借款人抵押品的一部分作为激励,这被定义为清算激励。 这是为了鼓励清算人对水下账户进行清算。

参数: N/A

返回:

getAccountLiquidity 方法

getAccountLiquidity(address account) view returns (uint, uint, uint)

功能描述: 通过调用 Unitroller 合约的 getAccountLiquidity 函数,可以通过账户地址获取账户信息,判断该账户是否应该被清算。

参数:

返回值

注意:liquidity 和 shortfall 之间最多应该有一个非零值。

ExchangeRate

function exchangeRateCurrent() public nonReentrant returns (uint)

功能说明:调用该方法返回最新汇率

参数: N/A

返回值:

按 1e18 比例计算的汇率

Get Cash

function getCash() public view returns (uint)

功能描述:调用该方法获取当前市场可用的底层代币余额总量。

参数: N/A

返回值:

本合约拥有的底层资产数量

Total Borrows

function totalBorrowsCurrent() external nonReentrant returns (uint)

功能描述:调用该方法获取当前借出和应计利息的总和。

参数: N/A

返回值:

当前借出和应计利息的总和

Borrow Balance

function borrowBalanceCurrent(address account) external nonReentrant returns (uint)

功能描述:调用该方法对更新的 borrowIndex 产生利息,然后使用更新的 borrowIndex 计算账户的借入余额

参数:

返回值:

计算后的余额

Borrow Rate

function borrowRatePerBlock() external view returns (uint)

功能描述:调用此方法获取此 jToken 当前的借入利率/区块

参数: N/A

返回值:

借款利率,按 1e18 缩放

Total Supply

function totalSupply() external view returns (uint256)

功能描述:调用该方法获取流通中的 token 总数

参数: N/A

返回值:

token 的总量

Underlying Balance

function balanceOfUnderlying(address owner) external returns (uint)

功能描述:调用该方法获取所有者的底层代币余额

参数:

返回值:

指定账户的余额

Supply Rate

function supplyRatePerBlock() external view returns (uint)

功能描述:调用此方法获取此 jToken 当前的抵押利率/每块

参数:N/A

返回值:

当前的抵押利率/每块,按 1e18 缩放

Total Reserves

function totalReserves() returns (uint)

功能描述:调用此方法获取储备金。 储备金代表作为 cash 留出的一部分历史利息,可以通过协议的治理提取或转移。

参数: N/A

返回值:

储备金总量

Reserve Factor

function reserveFactorMantissa() returns (uint)

功能描述:调用该方法获取当前的储备因子。

参数: N/A

返回值:

当前的储备因子

非查询接口

Borrow

function borrow(uint borrowAmount) external returns (uint)

功能描述:调用该方法从 JustLend DAO 协议中借用资产到交易发送者的地址

参数:

返回值:

无,发生错误时回退

repayBorrow

function repayBorrow(uint amount) external payable

功能描述:调用该方法偿还自己的借款

参数:

返回值:

无,发生错误时回退

repayBorrowBehalf

function repayBorrowBehalf(address borrower) external payable

功能描述:调用此方法以代替借款人还款

参数:

返回值:

无,发生错误时回退

Mint

function mint() external payable

功能描述:调用此方法向市场提供资产并接收 jToken 作为交换

参数:

返回值:

无,发生错误时回退

Redeem

function redeem(uint redeemTokens) external returns (uint)

功能描述:调用该方法以赎回 jTokens 换取原资产,无论操作成功与否,都可以获得抵押期间产生的利息。

参数:

返回值:

成功时返回0,否则将回退

RedeemUnderlying

function redeemUnderlying(uint redeemAmount) external returns (uint)

功能描述:调用该方法可赎回 jTokens 以换取指定数量的原始资产。

参数:

返回值:

成功时返回 0,否则将回退

Transfer

function transfer(address dst, uint256 amount) external nonReentrant returns (bool)

Feature description: Calling this method transfers a specified amount of jtokens to the destination. This action will fail if the account's liquidity become negative due to the transfer.

Parameter description:

Returns:

A boolean value indicating whether or not the transfer succeeded.

Liquidate Borrow(jTrc20)

function liquidateBorrow(address borrower, uint repayAmount, address jTokenCollateral) returns (uint)

功能描述:通过调用对应 jTrc20 合约(如jUSDT)的 liquidateBorrow 函数,流动性不符合市场抵押要求的账户将被其他用户强平,使账户流动性恢复到正常水平(即高于市场要求)用于抵押。在清算的情况下,清算人可以为借款人偿还部分或 50% 的贷款。清算人将获得一定比例的借款人抵押品作为奖励。

参数:

返回值:

Liquidate Borrow(jTRX)

function liquidateBorrow(address borrower, address jTokenCollateral) payables

功能描述:通过调用 jTRX 合约的 liquidateBorrow 函数,流动性不满足市场质押要求的账户将被其他用户强平,使账户流动性恢复到正常水平(即高于市场质押要求)。在清算的情况下,清算人可以为借款人偿还部分或 50% 的贷款。清算人将获得一定比例的借款人抵押品作为奖励。

参数:

返回值:

没有返回值。如果发生任何错误,交易将被回退。

合约事件

附录

jToken Decimals

JustLend DAO 上的所有 jToken 都有 8 位精度。

jToken Balance Query

建议您使用 TronWeb 查询 jToken 余额。 例如,您可以按照以下步骤查询 jUSDT 余额:

//Example 1
async function triggercontract(){
  let instance =
awaittronWeb.contract().at('TXJgMdjVX5dKiQaUi9QobwNxtSQaFqccvd');
  let res = await instance.balanceOf().call();
  console.log(res);
}

triggercontract();

//Example 2
async function triggercontract(){
  let instance =
awaittronWeb.contract().at('TXJgMdjVX5dKiQaUi9QobwNxtSQaFqccvd');
  let res = await instance["balanceOf"]().call();
  console.log(res);
}

triggercontract();

Last updated