MoCExchange
View Source: contracts/MoCExchange.sol
↗ Extends: MoCExchangeEvents, MoCBase, MoCLibConnection
MoCExchange - version: 0.1.10
Structs
RiskProxRedeemStruct
struct RiskProxRedeemStruct {
uint256 totalReserveTokenRedeemed,
uint256 reserveTokenTotalWithoutCommission,
uint256 resTokenInterests,
uint256 bucketLev,
uint256 riskProxToRedeem,
uint256 resTokenToRedeem,
uint256 riskProxPrice,
struct MoCExchange.CommissionReturnStruct commission
}
RiskProxMintStruct
struct RiskProxMintStruct {
uint256 riskProxToMint,
uint256 finalReserveTokenToMint,
uint256 reserveTokenInterestAmount,
uint256 lev,
struct MoCExchange.CommissionReturnStruct commission
}
RiskProRedeemStruct
struct RiskProRedeemStruct {
uint256 riskProFinalAmount,
uint256 reserveTokenTotalWithoutCommission,
struct MoCExchange.CommissionReturnStruct commission
}
FreeStableTokenRedeemStruct
struct FreeStableTokenRedeemStruct {
uint256 finalStableTokenAmount,
uint256 finalReserveTokenAmount,
uint256 reserveTokenInterestAmount,
struct MoCExchange.CommissionReturnStruct commission
}
RiskProMintStruct
struct RiskProMintStruct {
uint256 riskProRegularPrice,
uint256 reserveTokenValue,
uint256 discountPrice,
uint256 riskProDiscountAmount,
uint256 regularRiskProAmount,
uint256 availableRiskPro,
uint256 finalRiskProAmount,
struct MoCExchange.CommissionReturnStruct commission
}
StableTokenMintStruct
struct StableTokenMintStruct {
uint256 stableTokens,
uint256 stableTokenAmount,
uint256 totalCost,
struct MoCExchange.CommissionReturnStruct commission
}
CommissionParamsStruct
struct CommissionParamsStruct {
address account,
uint256 amount,
uint8 txTypeFeesMOC,
uint8 txTypeFeesReserveToken,
address vendorAccount
}
CommissionReturnStruct
struct CommissionReturnStruct {
uint256 reserveTokenCommission,
uint256 mocCommission,
uint256 reserveTokenPrice,
uint256 mocPrice,
uint256 reserveTokenMarkup,
uint256 mocMarkup
}
StableTokenRedeemStruct
struct StableTokenRedeemStruct {
uint256 reserveTotal,
uint256 reserveTokenToRedeem,
uint256 totalReserveToken,
struct MoCExchange.CommissionReturnStruct commission
}
Contract Members
Constants & Variables
contract IMoCState internal mocState;
address internal DEPRECATED_mocConverter;
contract MoCRiskProxManager internal riskProxManager;
contract RiskProToken internal riskProToken;
contract StableToken internal stableToken;
contract IMoCInrate internal mocInrate;
contract IMoC internal moc;
uint256[50] private upgradeGap;
RiskProMint
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
RiskProWithDiscountMint
Parameters
riskProTecPrice
uint256
riskProDiscountPrice
uint256
amount
uint256
RiskProRedeem
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
StableTokenMint
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
StableTokenRedeem
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
FreeStableTokenRedeem
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
interests
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
RiskProxMint
âš This has been deprecated since the Proposal to remove leveraged positions from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.
Parameters
bucket
bytes32
account
address
amount
uint256
reserveTotal
uint256
interests
uint256
leverage
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
RiskProxRedeem
Parameters
bucket
bytes32
account
address
commission
uint256
amount
uint256
reserveTotal
uint256
interests
uint256
leverage
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
reserveTokenMarkup
uint256
mocMarkup
uint256
vendorAccount
address
Functions
initialize
Initializes the contract
function initialize(address connectorAddress) public nonpayable initializer
Arguments
connectorAddress
address
MoCConnector contract address
getMoCTokenBalance
Converts MoC commission from ReserveToken to MoC price
function getMoCTokenBalance(address owner, address spender) public view
returns(mocBalance uint256, mocAllowance uint256)
Returns
MoC balance of owner and MoC allowance of spender
Arguments
owner
address
address of token owner
spender
address
address of token spender
calculateCommissionsWithPrices
Calculates commissions in MoC and ReserveToken
function calculateCommissionsWithPrices(struct MoCExchange.CommissionParamsStruct params) public view
returns(ret struct MoCExchange.CommissionReturnStruct)
Returns
Commissions calculated in MoC price and ReserveToken price; and ReserveToken and MoC prices
Arguments
params
struct MoCExchange.CommissionParamsStruct
Params defined in CommissionParamsStruct
riskProDiscToResToken
Reserve token equivalent for the amount of riskPro given applying the spotDiscountRate
function riskProDiscToResToken(uint256 riskProAmount, uint256 riskProTecPrice, uint256 riskProDiscountRate) internal view
returns(uint256)
Returns
Reserve token amount
Arguments
riskProAmount
uint256
amount of RiskPro [using mocPrecision]
riskProTecPrice
uint256
price of RiskPro without discounts [using mocPrecision]
riskProDiscountRate
uint256
RiskPro discounts [using mocPrecision]
mintRiskPro
Mint RiskPros and give it to the msg.sender
function mintRiskPro(address account, uint256 reserveTokenAmount, address vendorAccount) external nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Arguments
account
address
Address of minter
reserveTokenAmount
uint256
Amount in ReserveToken to mint
vendorAccount
address
Vendor address
redeemRiskPro
Sender burns his RiskProS and redeems the equivalent ReserveTokens
function redeemRiskPro(address account, uint256 riskProAmount, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Returns
resTokens to transfer to the redeemer and commission spent, using [using reservePrecision]
Arguments
account
address
Address of the redeeemer
riskProAmount
uint256
Amount of RiskPros to be redeemed
vendorAccount
address
Vendor address
redeemFreeStableToken
Redeems the requested amount for the account, or the max amount of free stableTokens possible.
function redeemFreeStableToken(address account, uint256 stableTokenAmount, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Returns
resTokens to transfer to the redeemer and commission spent, using [using reservePrecision]
Arguments
account
address
Address of the redeeemer
stableTokenAmount
uint256
Amount of StableTokens to redeem [using mocPrecision]
vendorAccount
address
Vendor address
mintStableToken
Mint Max amount of StableTokens and give it to the msg.sender
function mintStableToken(address account, uint256 resTokensToMint, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Returns
the actual amount of resTokens used and the resTokens commission for them [using rbtPresicion]
Arguments
account
address
minter user address
resTokensToMint
uint256
resTokens amount the user intents to convert to StableToken [using rbtPresicion]
vendorAccount
address
Vendor address
redeemStableTokenWithPrice
User StableTokens get burned and he receives the equivalent ReserveTokens in return
function redeemStableTokenWithPrice(address userAddress, uint256 amount, uint256 reservePrice) public nonpayable onlyWhitelisted
returns(bool, uint256)
Returns
true and commission spent if resTokens send was completed, false if fails.
Arguments
userAddress
address
Address of the user asking to redeem
amount
uint256
Verified amount of StableTokens to be redeemed [using mocPrecision]
reservePrice
uint256
resToken price [using mocPrecision]
redeemAllStableToken
Allow redeem on liquidation state, user StableTokens get burned and he receives the equivalent ReserveTokens according to liquidationPrice
function redeemAllStableToken(address origin, address destination) public nonpayable onlyWhitelisted
returns(uint256)
Returns
The amount of ReserveTokens in sent for the redemption or 0 if send does not succed
Arguments
origin
address
address owner of the StableTokens
destination
address
address to send the ReserveTokens
mintRiskProx
âš This has been deprecated since the Proposal to remove leveraged positions from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.
âš See the approved technical proposal to understand how the behavior of this function has changed.
BUCKET RiskProx minting. Mints RiskProx for the specified bucket
function mintRiskProx(address payable account, bytes32 bucket, uint256 resTokensToMint, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Returns
total ReserveTokens Spent (resTokensToMint more interest) and commission spent [using reservePrecision]
Arguments
account
address payable
owner of the new minted RiskProx
bucket
bytes32
bucket name
resTokensToMint
uint256
resToken amount to mint [using reservePrecision]
vendorAccount
address
Vendor address
redeemRiskProx
âš This has been deprecated since the Proposal to remove leveraged positions from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.
Sender burns his RiskProx, redeems the equivalent amount of RiskPros, return the "borrowed" StableTokens and recover pending interests
function redeemRiskProx(address payable account, bytes32 bucket, uint256 riskProxAmount, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Returns
the actual amount of resTokens to redeem and the resTokens commission for them [using reservePresicion]
Arguments
account
address payable
user address to redeem riskProx from
bucket
bytes32
Bucket where the RiskProxs are hold
riskProxAmount
uint256
Amount of RiskProxs to be redeemed [using reservePrecision]
vendorAccount
address
Vendor address
forceRedeemRiskProx
Burns user RiskProx and sends the equivalent amount of ReserveTokens to the account without caring if transaction succeeds
function forceRedeemRiskProx(bytes32 bucket, address payable account, uint256 riskProxAmount, uint256 riskProxPrice) public nonpayable onlyWhitelisted
returns(bool)
Returns
result of the ReserveTokens sending transaction
Arguments
bucket
bytes32
Bucket where the RiskProxs are hold
account
address payable
user address to redeem riskProx from
riskProxAmount
uint256
Amount of RiskProx to redeem [using mocPrecision]
riskProxPrice
uint256
Price of one RiskProx in ReserveTokens [using reservePrecision]
burnRiskProxFor
Burns user RiskProx
function burnRiskProxFor(bytes32 bucket, address payable account, uint256 riskProxAmount, uint256 riskProxPrice) public nonpayable onlyWhitelisted
returns(uint256)
Returns
ResToken total value of the redemption [using reservePrecision]*
Arguments
bucket
bytes32
Bucket where the RiskProxs are hold
account
address payable
user address to redeem riskProx from
riskProxAmount
uint256
Amount of RiskProx to redeem [using reservePrecision]
riskProxPrice
uint256
Price of one RiskProx in ReserveTokens [using reservePrecision]
redeemRiskProxInternal
âš This has been deprecated since the Proposal to remove leveraged positions from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.
Internal function to avoid stack too deep errors
function redeemRiskProxInternal(address account, bytes32 bucket, uint256 riskProxAmount, struct MoCExchange.RiskProxRedeemStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
bucket
bytes32
riskProxAmount
uint256
details
struct MoCExchange.RiskProxRedeemStruct
vendorAccount
address
mintRiskProInternal
Internal function to avoid stack too deep errors
function mintRiskProInternal(address account, uint256 reserveTokenAmount, struct MoCExchange.RiskProMintStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
reserveTokenAmount
uint256
details
struct MoCExchange.RiskProMintStruct
vendorAccount
address
mintRiskProxInternal
âš This has been deprecated since the Proposal to remove leveraged positions from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.
âš See the approved technical proposal to understand how the behavior of this function has changed.
Internal function to avoid stack too deep errors
function mintRiskProxInternal(address account, bytes32 bucket, struct MoCExchange.RiskProxMintStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
bucket
bytes32
details
struct MoCExchange.RiskProxMintStruct
vendorAccount
address
mintStableTokenInternal
Internal function to avoid stack too deep errors
function mintStableTokenInternal(address account, struct MoCExchange.StableTokenMintStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
details
struct MoCExchange.StableTokenMintStruct
vendorAccount
address
redeemFreeStableTokenInternal
Internal function to avoid stack too deep errors
function redeemFreeStableTokenInternal(address account, struct MoCExchange.FreeStableTokenRedeemStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
details
struct MoCExchange.FreeStableTokenRedeemStruct
vendorAccount
address
redeemRiskProInternal
Internal function to avoid stack too deep errors
function redeemRiskProInternal(address account, struct MoCExchange.RiskProRedeemStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
details
struct MoCExchange.RiskProRedeemStruct
vendorAccount
address
redeemStableTokenWithPriceInternal
Internal function to avoid stack too deep errors
function redeemStableTokenWithPriceInternal(address account, uint256 amount, struct MoCExchange.StableTokenRedeemStruct details, address vendorAccount) internal nonpayable
Arguments
account
address
amount
uint256
details
struct MoCExchange.StableTokenRedeemStruct
vendorAccount
address
moveExtraFundsToBucket
Calculates the amount of ReserveTokens that one bucket should move to another in RiskProx minting/redemption. This extra makes RiskProx more leveraging than RiskPro.
function moveExtraFundsToBucket(bytes32 bucketFrom, bytes32 bucketTo, uint256 totalReserveToken, uint256 lev) internal nonpayable
Arguments
bucketFrom
bytes32
Origin bucket from which the ReserveTokens are moving
bucketTo
bytes32
Destination bucket to which the ReserveTokens are moving
totalReserveToken
uint256
Amount of ReserveTokens moving between buckets [using reservePrecision]
lev
uint256
lev of the L bucket [using mocPrecision]
recoverInterests
Returns ReserveTokens for user in concept of interests refund
function recoverInterests(bytes32 bucket, uint256 resTokenToRedeem) internal nonpayable
returns(uint256)
Returns
Interests [using reservePrecision]
Arguments
bucket
bytes32
Bucket where the RiskProxs are hold
resTokenToRedeem
uint256
Total ReserveTokens value of the redemption [using mocPrecision]
doStableTokenRedeem
function doStableTokenRedeem(address userAddress, uint256 stableTokenAmount, uint256 totalReserveToken) internal nonpayable
Arguments
userAddress
address
stableTokenAmount
uint256
totalReserveToken
uint256
initializeContracts
function initializeContracts() internal nonpayable
Arguments
Last updated