集成 Comptroller

介绍

Comptroller 是 JustLend DAO 协议的风险管理模块。 它决定了用户应该保留多少抵押品以避免清算。

Comptroller 作为一个可升级的合约来实现。 入口是 Unitroller; 实施是 Comptroller

相关方法

市场

enterMarkets()

function enterMarkets(address[] memory cTokens) public returns (uint[] memory)

调用此方法会进入一个或多个市场进行抵押或借贷。

返回值:对于每个市场,返回 0 即为成功加入,否则返回相应错误码

const result = comptroller.enterMarket(addresses).send({
  feeLimit:10_000_000_000,
  callValue:0,
  shouldPollResponse:true
});

exitMarket()

function exitMarket(address cTokenAddress) external returns (uint)

调用这个方法将退出后一个当前加入的市场。

返回值:成功时返回 0,否则返回相应错误码

const result = comptroller.exitMarket(address).send({
  feeLimit:10_000_000_000,
  callValue:0,
  shouldPollResponse:true
});

getAssetsIn()

function getAssetsIn(address account) external view returns (CToken[] memory)

调用这个方法将返回已加入的市场列表。

返回值:已加入的市场列表

const result = comptroller.getAssetsIn(account).call();

markets()

function markets(address cTokenAddress) view returns (bool, uint, bool)

调用这个方法将返回指定市场的状态(isListed, collateralFactorMantissa, comped)

const {0: isListed, 1: collateralFactorMantissa, 2: isComped} = comptroller.markets(address).call();

抵押和清算

getAccountLiquidity()

function getAccountLiquidity(address account) public view returns (uint256, uint256, uint256)

调用这个方法将返回用户的流动性及短缺数(由于comptroller选用无符号的 uint,用 shortfall 来体现短缺)。

const {0: error, 1: liquidity, 2: shortfall} = comptroller.getAccountLiquidity(account).call();

closeFactorMantissa()

function closeFactorMantissa() view returns (uint256)

调用此方法获取可清算账户应在单次清算中偿还的百分比。范围为 0%-100%。该方法的计算结果适用于单一资产。

返回值:close factor, 乘以 1e18

const result = comptroller.closeFactorMantissa().call();

liquidationIncentiveMantissa()

function liquidationIncentiveMantissa() view returns (uint256)

调用这种方法可以获得清算人的激励,这个激励是针对水下账户的。其中一部分将根据抵押份额分配给 jToken 储备金。

返回值:清算激励,乘以 1e18

const result = comptroller.liquidationIncentiveMantissa().call();

重要事件

错误码

失败信息

Last updated