RoC Stable Platform - Collateral RIF Token
  • Introduction
  • RIF On Chain platform
    • Main concepts
    • System states
    • Public actions
      • User actions
      • Process actions
    • Contracts architecture
      • MoC
      • CommissionSplitter
      • MoCState
      • MoCBucketContainer
      • MoCSettlement
      • MoCHelperLib
      • MoCLibConnection
      • MoCConverter
      • MoCExchange
      • MoCConnector
      • MoCRiskProxManager
      • MoCInrate
      • MoCVendors
      • MoCWhitelist
      • MoCBase
      • OwnerBurnableToken
      • RiskProToken
      • StableToken
      • MoCToken
      • PriceProvider
    • Contract mocks
    • Relevant patterns and choices
    • Data dictionary
    • Getting started
  • Integration with RoC platform
    • Introduction to RoC
      • The MoC Contract
      • RoC Precisions
      • RoC State Contracts
    • Getting RIFPros
      • Minting RIFPros
      • Redeeming RIFPros
    • Getting USDRIF
      • Minting USDRIF
      • Redeeming USDRIF
        • On Settlement: redeemStableTokenRequest
        • On Settlement: alterRedeemRequestAmount
        • Outside Settlement: redeemFreeStableToken
        • On Liquidation State: redeemAllStableToken
        • How-to
    • Commission fees values
    • Vendors
    • Fees calculation
    • From outside the blockchain
      • Using RSK nodes
      • Using web3
      • Official RIF On Chain ABIs
      • Events
      • Example code minting RIFPros
      • Example code minting RIFPros without Truffle
      • Example code redeeming RIFPros
      • Example code redeeming RIFPros without Truffle
      • Example code minting USDRIF
      • Example code redeeming free USDRIF
      • Example code redeeming USDRIF Request
      • Example code redeeming all USDRIF
  • Smart contracts
    • Contracts verification
    • ABIs documentation
      • Blockable
      • Blocker
      • ERC20Mintable
      • Governed
      • Initializable
      • MakeStoppable
      • MakeUnstoppable
      • MoC
      • MoCBucketContainer
      • MoCConnector
      • MoCConverter
      • MoCEMACalculator
      • MoCExchange
      • MoCHelperLib
      • MoCHelperLibMock
      • MoCInrate
      • MoCInrateRiskproxChanger
      • MoCLibConnection
      • MoCPriceProviderMock
      • MoCReserve
      • MoCRiskProxManager
      • MoCSettlement
      • MoCSettlementMock
      • MoCState
      • MoCStateMock
      • MoCToken
      • MoCVendors
      • MoCWhitelist
      • MocInrateStableChanger
      • MockBlocker
      • MockMakeStoppable
      • MockMakeUnstoppable
      • MockStopper
      • MockUpgradeDelegator
      • MockUpgraderTemplate
      • OwnerBurnableToken
      • Pausable
      • PriceFeed
      • PriceFeederAdder
      • PriceFeederRemover
      • PriceProvider
      • PriceProviderChanger
      • PriceProviderMock
      • ReserveToken
      • RiskProToken
      • StableToken
      • Stoppable
      • Stopper
      • UpgradeDelegator
      • UpgraderTemplate
Powered by GitBook
On this page
  • Structs
  • RiskProxRedeemStruct
  • RiskProxMintStruct
  • RiskProRedeemStruct
  • FreeStableTokenRedeemStruct
  • RiskProMintStruct
  • StableTokenMintStruct
  • CommissionParamsStruct
  • CommissionReturnStruct
  • StableTokenRedeemStruct
  • Contract Members
  • RiskProMint
  • RiskProWithDiscountMint
  • RiskProRedeem
  • StableTokenMint
  • StableTokenRedeem
  • FreeStableTokenRedeem
  • RiskProxMint
  • RiskProxRedeem
  • Functions
  • initialize
  • getMoCTokenBalance
  • calculateCommissionsWithPrices
  • riskProDiscToResToken
  • mintRiskPro
  • redeemRiskPro
  • redeemFreeStableToken
  • mintStableToken
  • redeemStableTokenWithPrice
  • redeemAllStableToken
  • mintRiskProx
  • redeemRiskProx
  • forceRedeemRiskProx
  • burnRiskProxFor
  • redeemRiskProxInternal
  • mintRiskProInternal
  • mintRiskProxInternal
  • mintStableTokenInternal
  • redeemFreeStableTokenInternal
  • redeemRiskProInternal
  • redeemStableTokenWithPriceInternal
  • moveExtraFundsToBucket
  • recoverInterests
  • doStableTokenRedeem
  • initializeContracts
  1. Smart contracts
  2. ABIs documentation

MoCExchange

PreviousMoCEMACalculatorNextMoCHelperLib

Last updated 2 years ago

View Source:

↗ Extends: , ,

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

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

reserveTokenMarkup

uint256

mocMarkup

uint256

vendorAccount

address

RiskProWithDiscountMint

Parameters

Name
Type
Description

riskProTecPrice

uint256

riskProDiscountPrice

uint256

amount

uint256

RiskProRedeem

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

reserveTokenMarkup

uint256

mocMarkup

uint256

vendorAccount

address

StableTokenMint

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

reserveTokenMarkup

uint256

mocMarkup

uint256

vendorAccount

address

StableTokenRedeem

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

reserveTokenMarkup

uint256

mocMarkup

uint256

vendorAccount

address

FreeStableTokenRedeem

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

interests

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

reserveTokenMarkup

uint256

mocMarkup

uint256

vendorAccount

address

RiskProxMint

Parameters

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

origin

address

address owner of the StableTokens

destination

address

address to send the ReserveTokens

mintRiskProx

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

Name
Type
Description

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

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

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

Name
Type
Description

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

Name
Type
Description

account

address

reserveTokenAmount

uint256

details

struct MoCExchange.RiskProMintStruct

vendorAccount

address

mintRiskProxInternal

Internal function to avoid stack too deep errors

function mintRiskProxInternal(address account, bytes32 bucket, struct MoCExchange.RiskProxMintStruct details, address vendorAccount) internal nonpayable

Arguments

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

userAddress

address

stableTokenAmount

uint256

totalReserveToken

uint256

initializeContracts

function initializeContracts() internal nonpayable

Arguments

⚠ This has been deprecated since the from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.

⚠ This has been deprecated since the from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.

⚠ See the to understand how the behavior of this function has changed.

⚠ This has been deprecated since the from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.

⚠ This has been deprecated since the from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.

⚠ This has been deprecated since the from the protocol was approved, however it is necessary to maintain the contracts and their documentation for legacy support.

⚠ See the to understand how the behavior of this function has changed.

contracts/MoCExchange.sol
MoCExchangeEvents
MoCBase
MoCLibConnection
Proposal to remove leveraged positions
Proposal to remove leveraged positions
approved technical proposal
Proposal to remove leveraged positions
Proposal to remove leveraged positions
Proposal to remove leveraged positions
approved technical proposal
initialize(address connectorAddress)
getMoCTokenBalance(address owner, address spender)
calculateCommissionsWithPrices(struct MoCExchange.CommissionParamsStruct params)
riskProDiscToResToken(uint256 riskProAmount, uint256 riskProTecPrice, uint256 riskProDiscountRate)
mintRiskPro(address account, uint256 reserveTokenAmount, address vendorAccount)
redeemRiskPro(address account, uint256 riskProAmount, address vendorAccount)
redeemFreeStableToken(address account, uint256 stableTokenAmount, address vendorAccount)
mintStableToken(address account, uint256 resTokensToMint, address vendorAccount)
redeemStableTokenWithPrice(address userAddress, uint256 amount, uint256 reservePrice)
redeemAllStableToken(address origin, address destination)
mintRiskProx(address payable account, bytes32 bucket, uint256 resTokensToMint, address vendorAccount)
redeemRiskProx(address payable account, bytes32 bucket, uint256 riskProxAmount, address vendorAccount)
forceRedeemRiskProx(bytes32 bucket, address payable account, uint256 riskProxAmount, uint256 riskProxPrice)
burnRiskProxFor(bytes32 bucket, address payable account, uint256 riskProxAmount, uint256 riskProxPrice)
redeemRiskProxInternal(address account, bytes32 bucket, uint256 riskProxAmount, struct MoCExchange.RiskProxRedeemStruct details, address vendorAccount)
mintRiskProInternal(address account, uint256 reserveTokenAmount, struct MoCExchange.RiskProMintStruct details, address vendorAccount)
mintRiskProxInternal(address account, bytes32 bucket, struct MoCExchange.RiskProxMintStruct details, address vendorAccount)
mintStableTokenInternal(address account, struct MoCExchange.StableTokenMintStruct details, address vendorAccount)
redeemFreeStableTokenInternal(address account, struct MoCExchange.FreeStableTokenRedeemStruct details, address vendorAccount)
redeemRiskProInternal(address account, struct MoCExchange.RiskProRedeemStruct details, address vendorAccount)
redeemStableTokenWithPriceInternal(address account, uint256 amount, struct MoCExchange.StableTokenRedeemStruct details, address vendorAccount)
moveExtraFundsToBucket(bytes32 bucketFrom, bytes32 bucketTo, uint256 totalReserveToken, uint256 lev)
recoverInterests(bytes32 bucket, uint256 resTokenToRedeem)
doStableTokenRedeem(address userAddress, uint256 stableTokenAmount, uint256 totalReserveToken)
initializeContracts()