MoCExchange

View Source: contracts/MoCExchange.sol

↗ Extends: MoCExchangeEvents, MoCBase, MoCLibConnection, IMoCExchange

MoCExchange - version: 0.1.12

Structs

RiskProxRedeemStruct

struct RiskProxRedeemStruct {
 uint256 totalBtcRedeemed,
 uint256 btcTotalWithoutCommission,
 uint256 rbtcInterests,
 uint256 bucketLev,
 uint256 bproxToRedeem,
 uint256 rbtcToRedeem,
 uint256 bproxPrice,
 struct MoCExchange.CommissionReturnStruct commission
}

RiskProxMintStruct

struct RiskProxMintStruct {
 uint256 bproxToMint,
 uint256 finalBtcToMint,
 uint256 btcInterestAmount,
 uint256 lev,
 struct MoCExchange.CommissionReturnStruct commission
}

RiskProRedeemStruct

FreeStableTokenRedeemStruct

RiskProMintStruct

StableTokenMintStruct

CommissionParamsStruct

CommissionReturnStruct

StableTokenRedeemStruct

Contract Members

Constants & Variables









RiskProMint

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

btcMarkup

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

btcMarkup

uint256

mocMarkup

uint256

vendorAccount

address

StableTokenMint

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

btcMarkup

uint256

mocMarkup

uint256

vendorAccount

address

StableTokenRedeem

Parameters

Name
Type
Description

account

address

amount

uint256

reserveTotal

uint256

commission

uint256

reservePrice

uint256

mocCommissionValue

uint256

mocPrice

uint256

btcMarkup

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

btcMarkup

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

btcMarkup

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

btcMarkup

uint256

mocMarkup

uint256

vendorAccount

address

Functions

initialize

Initializes the contract

Arguments

Name
Type
Description

connectorAddress

address

MoCConnector contract address

getMoCTokenBalance

⤾ overrides IMoCExchange.getMoCTokenBalance

Converts MoC commission from RBTC to MoC price

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 BTC

Returns

Commissions calculated in MoC price and bitcoin price; and Bitcoin and MoC prices

Arguments

Name
Type
Description

params

struct MoCExchange.CommissionParamsStruct

Params defined in CommissionParamsStruct

bproDiscToBtc

BTC equivalent for the amount of bpro given applying the spotDiscountRate

Returns

BTC amount

Arguments

Name
Type
Description

bproAmount

uint256

amount of BPro [using mocPrecision]

bproTecPrice

uint256

price of BPro without discounts [using mocPrecision]

bproDiscountRate

uint256

BPro discounts [using mocPrecision]

mintBPro

⤾ overrides IMoCExchange.mintBPro

Mint BPros and give it to the msg.sender

Arguments

Name
Type
Description

account

address

Address of minter

btcAmount

uint256

Amount in BTC to mint

vendorAccount

address

Vendor address

redeemBPro

⤾ overrides IMoCExchange.redeemBPro

Sender burns his BProS and redeems the equivalent BTCs

Returns

bitcoins to transfer to the redeemer and commission spent (in BTC and MoC), using [using reservePrecision]

Arguments

Name
Type
Description

account

address

Address of the redeeemer

bproAmount

uint256

Amount of BPros to be redeemed

vendorAccount

address

Vendor address

redeemFreeDoc

⤾ overrides IMoCExchange.redeemFreeDoc

Redeems the requested amount for the account, or the max amount of free docs possible.

Returns

bitcoins to transfer to the redeemer and commission spent (in BTC and MoC), using [using reservePrecision]

Arguments

Name
Type
Description

account

address

Address of the redeeemer

docAmount

uint256

Amount of Docs to redeem [using mocPrecision]

vendorAccount

address

Vendor address

mintDoc

⤾ overrides IMoCExchange.mintDoc

Mint Max amount of Docs and give it to the msg.sender

Returns

the actual amount of btc used and the btc commission (in BTC and MoC) for them [using rbtPresicion]

Arguments

Name
Type
Description

account

address

minter user address

btcToMint

uint256

btc amount the user intents to convert to DoC [using rbtPresicion]

vendorAccount

address

Vendor address

redeemDocWithPrice

⤾ overrides IMoCExchange.redeemDocWithPrice

User DoCs get burned and he receives the equivalent BTCs in return

Returns

true and commission spent (in BTC and MoC) if btc send was completed, false if fails.

Arguments

Name
Type
Description

userAddress

address payable

Address of the user asking to redeem

amount

uint256

Verified amount of Docs to be redeemed [using mocPrecision]

btcPrice

uint256

bitcoin price [using mocPrecision]

redeemAllDoc

⤾ overrides IMoCExchange.redeemAllDoc

Allow redeem on liquidation state, user DoCs get burned and he receives the equivalent RBTCs according to liquidationPrice

Returns

The amount of RBTC in sent for the redemption or 0 if send does not succed

Arguments

Name
Type
Description

origin

address

address owner of the DoCs

destination

address payable

address to send the RBTC

mintBProx

âš  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.

⤾ overrides IMoCExchange.mintBProx

BUCKET Bprox minting. Mints Bprox for the specified bucket

Returns

total RBTC Spent (btcToMint more interest) and commission spent (in BTC and MoC) [using reservePrecision]

Arguments

Name
Type
Description

account

address payable

owner of the new minted Bprox

bucket

bytes32

bucket name

btcToMint

uint256

rbtc amount to mint [using reservePrecision]

vendorAccount

address

Vendor address

redeemBProx

âš  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.

⤾ overrides IMoCExchange.redeemBProx

Sender burns his BProx, redeems the equivalent amount of BPros, return the "borrowed" DOCs and recover pending interests

Returns

the actual amount of btc to redeem and the btc commission (in BTC and MoC) for them [using reservePrecision]

Arguments

Name
Type
Description

account

address payable

user address to redeem bprox from

bucket

bytes32

Bucket where the BProxs are hold

bproxAmount

uint256

Amount of BProxs to be redeemed [using mocPrecision]

vendorAccount

address

Vendor address

forceRedeemBProx

âš  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.

⤾ overrides IMoCExchange.forceRedeemBProx

Burns user BProx and sends the equivalent amount of RBTC to the account without caring if transaction succeeds

Returns

result of the RBTC sending transaction [using reservePrecision]

Arguments

Name
Type
Description

bucket

bytes32

Bucket where the BProxs are hold

account

address payable

user address to redeem bprox from

bproxAmount

uint256

Amount of BProx to redeem [using mocPrecision]

bproxPrice

uint256

Price of one BProx in RBTC [using reservePrecision]

burnBProxFor

âš  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.

Burns user BProx

Returns

Bitcoin total value of the redemption [using reservePrecision]

Arguments

Name
Type
Description

bucket

bytes32

Bucket where the BProxs are hold

account

address payable

user address to redeem bprox from

bproxAmount

uint256

Amount of BProx to redeem [using mocPrecision]

bproxPrice

uint256

Price of one BProx in RBTC [using reservePrecision]

redeemBProxInternal

âš  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

Arguments

Name
Type
Description

account

address

bucket

bytes32

bproxAmount

uint256

details

struct MoCExchange.RiskProxRedeemStruct

vendorAccount

address

mintBProInternal

Internal function to avoid stack too deep errors

Arguments

Name
Type
Description

account

address

btcAmount

uint256

details

struct MoCExchange.RiskProMintStruct

vendorAccount

address

mintBProxInternal

âš  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

Arguments

Name
Type
Description

account

address

bucket

bytes32

details

struct MoCExchange.RiskProxMintStruct

vendorAccount

address

mintDocInternal

Internal function to avoid stack too deep errors

Arguments

Name
Type
Description

account

address

details

struct MoCExchange.StableTokenMintStruct

vendorAccount

address

redeemFreeDocInternal

Internal function to avoid stack too deep errors

Arguments

Name
Type
Description

account

address

details

struct MoCExchange.FreeStableTokenRedeemStruct

vendorAccount

address

redeemBProInternal

Internal function to avoid stack too deep errors

Arguments

Name
Type
Description

account

address

details

struct MoCExchange.RiskProRedeemStruct

vendorAccount

address

redeemDocWithPriceInternal

Internal function to avoid stack too deep errors

Arguments

Name
Type
Description

account

address

amount

uint256

details

struct MoCExchange.StableTokenRedeemStruct

vendorAccount

address

moveExtraFundsToBucket

Calculates the amount of RBTC that one bucket should move to another in BProx minting/redemption. This extra makes BProx more leveraging than BPro.

Arguments

Name
Type
Description

bucketFrom

bytes32

Origin bucket from which the BTC are moving

bucketTo

bytes32

Destination bucket to which the BTC are moving

totalBtc

uint256

Amount of BTC moving between buckets [using reservePrecision]

lev

uint256

lev of the L bucket [using mocPrecision]

recoverInterests

Returns RBTCs for user in concept of interests refund

Returns

Interests [using reservePrecision]

Arguments

Name
Type
Description

bucket

bytes32

Bucket where the BProxs are hold

rbtcToRedeem

uint256

Total RBTC value of the redemption [using reservePrecision]

doDocRedeem

Arguments

Name
Type
Description

userAddress

address

docAmount

uint256

totalBtc

uint256

initializeContracts

Arguments

Last updated