MoCExchange
View Source: contracts/MoCExchange.sol
↗ Extends: MoCExchangeEvents, MoCBase, MoCLibConnection, IMoCExchange
MoCExchange - version: 0.1.12
Structs
RiskProxRedeemStruct
RiskProxMintStruct
RiskProRedeemStruct
FreeStableTokenRedeemStruct
RiskProMintStruct
StableTokenMintStruct
CommissionParamsStruct
CommissionReturnStruct
StableTokenRedeemStruct
Contract Members
Constants & Variables
RiskProMint
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
btcMarkup
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
btcMarkup
uint256
mocMarkup
uint256
vendorAccount
address
StableTokenMint
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
btcMarkup
uint256
mocMarkup
uint256
vendorAccount
address
StableTokenRedeem
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
btcMarkup
uint256
mocMarkup
uint256
vendorAccount
address
FreeStableTokenRedeem
Parameters
account
address
amount
uint256
reserveTotal
uint256
commission
uint256
interests
uint256
reservePrice
uint256
mocCommissionValue
uint256
mocPrice
uint256
btcMarkup
uint256
mocMarkup
uint256
vendorAccount
address
RiskProxMint
Parameters
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
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
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
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
params
struct MoCExchange.CommissionParamsStruct
Params defined in CommissionParamsStruct
bproDiscToBtc
BTC equivalent for the amount of bpro given applying the spotDiscountRate
Returns
BTC amount
Arguments
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
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
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
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
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
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
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
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
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
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
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
account
address
bucket
bytes32
bproxAmount
uint256
details
struct MoCExchange.RiskProxRedeemStruct
vendorAccount
address
mintBProInternal
Internal function to avoid stack too deep errors
Arguments
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
account
address
bucket
bytes32
details
struct MoCExchange.RiskProxMintStruct
vendorAccount
address
mintDocInternal
Internal function to avoid stack too deep errors
Arguments
account
address
details
struct MoCExchange.StableTokenMintStruct
vendorAccount
address
redeemFreeDocInternal
Internal function to avoid stack too deep errors
Arguments
account
address
details
struct MoCExchange.FreeStableTokenRedeemStruct
vendorAccount
address
redeemBProInternal
Internal function to avoid stack too deep errors
Arguments
account
address
details
struct MoCExchange.RiskProRedeemStruct
vendorAccount
address
redeemDocWithPriceInternal
Internal function to avoid stack too deep errors
Arguments
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
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
bucket
bytes32
Bucket where the BProxs are hold
rbtcToRedeem
uint256
Total RBTC value of the redemption [using reservePrecision]
doDocRedeem
Arguments
userAddress
address
docAmount
uint256
totalBtc
uint256
initializeContracts
Arguments
Last updated