mErc20

Git Source

Inherits: mToken, ImErc20

mTokens which wrap an EIP-20 underlying

State Variables

underlying

Underlying asset for this mToken

address public underlying;

Functions

_initializeMErc20

Initialize the new money market

function _initializeMErc20(
    address underlying_,
    address operator_,
    address interestRateModel_,
    uint256 initialExchangeRateMantissa_,
    string memory name_,
    string memory symbol_,
    uint8 decimals_
) internal;

Parameters

NameTypeDescription
underlying_addressThe address of the underlying asset
operator_addressThe address of the Operator
interestRateModel_addressThe address of the interest rate model
initialExchangeRateMantissa_uint256The initial exchange rate, scaled by 1e18
name_stringERC-20 name of this token
symbol_stringERC-20 symbol of this token
decimals_uint8ERC-20 decimal precision of this token

sweepToken

A public function to sweep accidental ERC-20 transfers to this contract. Tokens are sent to admin (timelock)

function sweepToken(IERC20 token, uint256 amount) external onlyAdmin;

Parameters

NameTypeDescription
tokenIERC20The address of the ERC-20 token to sweep
amountuint256

mint

Sender supplies assets into the market and receives mTokens in exchange

Accrues interest whether or not the operation succeeds, unless reverted

function mint(uint256 mintAmount, address receiver, uint256 minAmountOut) external;

Parameters

NameTypeDescription
mintAmountuint256The amount of the underlying asset to supply
receiveraddressThe mTokens receiver
minAmountOutuint256The min amounts to be received

redeem

Sender redeems mTokens in exchange for the underlying asset

Accrues interest whether or not the operation succeeds, unless reverted

function redeem(uint256 redeemTokens) external;

Parameters

NameTypeDescription
redeemTokensuint256The number of mTokens to redeem into underlying

redeemUnderlying

Sender redeems mTokens in exchange for a specified amount of underlying asset

Accrues interest whether or not the operation succeeds, unless reverted

function redeemUnderlying(uint256 redeemAmount) external;

Parameters

NameTypeDescription
redeemAmountuint256The amount of underlying to redeem

borrow

Sender borrows assets from the protocol to their own address

function borrow(uint256 borrowAmount) external;

Parameters

NameTypeDescription
borrowAmountuint256The amount of the underlying asset to borrow

repay

Sender repays their own borrow

function repay(uint256 repayAmount) external returns (uint256);

Parameters

NameTypeDescription
repayAmountuint256The amount to repay, or type(uint256).max for the full outstanding amount

repayBehalf

Sender repays a borrow belonging to borrower

function repayBehalf(address borrower, uint256 repayAmount) external returns (uint256);

Parameters

NameTypeDescription
borroweraddressthe account with the debt being payed off
repayAmountuint256The amount to repay, or type(uint256).max for the full outstanding amount

liquidate

The sender liquidates the borrowers collateral. The collateral seized is transferred to the liquidator.

function liquidate(address borrower, uint256 repayAmount, address mTokenCollateral) external;

Parameters

NameTypeDescription
borroweraddressThe borrower of this mToken to be liquidated
repayAmountuint256The amount of the underlying borrowed asset to repay
mTokenCollateraladdressThe market in which to seize collateral from the borrower

addReserves

The sender adds to reserves.

function addReserves(uint256 addAmount) external;

Parameters

NameTypeDescription
addAmountuint256The amount fo underlying token to add as reserves

_getCashPrior

Gets balance of this contract in terms of the underlying

This excludes the value of the current message, if any

function _getCashPrior() internal view virtual override returns (uint256);

Returns

NameTypeDescription
<none>uint256The quantity of underlying tokens owned by this contract

_doTransferIn

Performs a transfer in, reverting upon failure. Returns the amount actually transferred to the protocol, in case of a fee. This may revert due to insufficient balance or insufficient allowance.

function _doTransferIn(address from, uint256 amount) internal virtual override returns (uint256);

_doTransferOut

Performs a transfer out, ideally returning an explanatory error code upon failure rather than reverting. If caller has not called checked protocol's balance, may revert due to insufficient cash held in the contract. If caller has checked protocol's balance, and verified it is >= amount, this should not revert in normal conditions.

function _doTransferOut(address payable to, uint256 amount) internal virtual override;

Errors

mErc20_TokenNotValid

error mErc20_TokenNotValid();