介绍
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();
重要事件
错误码
失败信息