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