MoCExchange
MoCExchange - version: 0.1.12
struct RiskProxRedeemStruct {
uint256 totalBtcRedeemed,
uint256 btcTotalWithoutCommission,
uint256 rbtcInterests,
uint256 bucketLev,
uint256 bproxToRedeem,
uint256 rbtcToRedeem,
uint256 bproxPrice,
struct MoCExchange.CommissionReturnStruct commission
}
struct RiskProxMintStruct {
uint256 bproxToMint,
uint256 finalBtcToMint,
uint256 btcInterestAmount,
uint256 lev,
struct MoCExchange.CommissionReturnStruct commission
}
struct RiskProRedeemStruct {
uint256 bproFinalAmount,
uint256 btcTotalWithoutCommission,
struct MoCExchange.CommissionReturnStruct commission
}
struct FreeStableTokenRedeemStruct {
uint256 finalDocAmount,
uint256 finalBtcAmount,
uint256 btcInterestAmount,
struct MoCExchange.CommissionReturnStruct commission
}
struct RiskProMintStruct {
uint256 bproRegularPrice,
uint256 btcValue,
uint256 discountPrice,
uint256 bproDiscountAmount,
uint256 regularBProAmount,
uint256 availableBPro,
uint256 finalBProAmount,
struct MoCExchange.CommissionReturnStruct commission
}
struct StableTokenMintStruct {
uint256 docs,
uint256 docAmount,
uint256 totalCost,
struct MoCExchange.CommissionReturnStruct commission
}
struct CommissionParamsStruct {
address account,
uint256 amount,
uint8 txTypeFeesMOC,
uint8 txTypeFeesRBTC,
address vendorAccount
}
struct CommissionReturnStruct {
uint256 btcCommission,
uint256 mocCommission,
uint256 btcPrice,
uint256 mocPrice,
uint256 btcMarkup,
uint256 mocMarkup
}
struct StableTokenRedeemStruct {
uint256 reserveTotal,
uint256 btcToRedeem,
uint256 totalBtc,
struct MoCExchange.CommissionReturnStruct commission
}
Constants & Variables
contract IMoCState internal mocState;
address internal DEPRECATED_mocConverter;
contract MoCBProxManager internal bproxManager;
contract BProToken internal bproToken;
contract DocToken internal docToken;
contract IMoCInrate internal mocInrate;
contract IMoC internal moc;
uint256[50] private upgradeGap;
Parameters
Name | Type | Description |
---|---|---|
account | address | |
amount | uint256 | |
reserveTotal | uint256 | |
commission | uint256 | |
reservePrice | uint256 | |
mocCommissionValue | uint256 | |
mocPrice | uint256 | |
btcMarkup | uint256 | |
mocMarkup | uint256 | |
vendorAccount | address | |
Parameters
Name | Type | Description |
---|---|---|
riskProTecPrice | uint256 | |
riskProDiscountPrice | uint256 | |
amount | uint256 | |
Parameters
Name | Type | Description |
---|---|---|
account | address | |
amount | uint256 | |
reserveTotal | uint256 | |
commission | uint256 | |
reservePrice | uint256 | |
mocCommissionValue | uint256 | |
mocPrice | uint256 | |
btcMarkup | uint256 | |
mocMarkup | uint256 | |
vendorAccount | address | |
Parameters
Name | Type | Description |
---|---|---|
account | address | |
amount | uint256 | |
reserveTotal | uint256 | |
commission | uint256 | |
reservePrice | uint256 | |
mocCommissionValue | uint256 | |
mocPrice | uint256 | |
btcMarkup | uint256 | |
mocMarkup | uint256 | |
vendorAccount | address | |
Parameters
Name | Type | Description |
---|---|---|
account | address | |
amount | uint256 | |
reserveTotal | uint256 | |
commission | uint256 | |
reservePrice | uint256 | |
mocCommissionValue | uint256 | |
mocPrice | uint256 | |
btcMarkup | uint256 | |
mocMarkup | uint256 | |
vendorAccount | address | |
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 | |
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 | |
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 | |
Initializes the contract
function initialize(address connectorAddress) public nonpayable initializer
Arguments
Name | Type | Description |
---|---|---|
connectorAddress | address | MoCConnector contract address |
⤾ overrides IMoCExchange.getMoCTokenBalance
Converts MoC commission from RBTC 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 |
Calculates commissions in MoC and BTC
function calculateCommissionsWithPrices(struct MoCExchange.CommissionParamsStruct params) public view
returns(ret struct MoCExchange.CommissionReturnStruct)
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 |
BTC equivalent for the amount of bpro given applying the spotDiscountRate
function bproDiscToBtc(uint256 bproAmount, uint256 bproTecPrice, uint256 bproDiscountRate) internal view
returns(uint256)
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] |
⤾ overrides IMoCExchange.mintBPro
Mint BPros and give it to the msg.sender
function mintBPro(address account, uint256 btcAmount, address vendorAccount) external nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
Arguments
Name | Type | Description |
---|---|---|
account | address | Address of minter |
btcAmount | uint256 | Amount in BTC to mint |
vendorAccount | address | Vendor address |
⤾ overrides IMoCExchange.redeemBPro
Sender burns his BProS and redeems the equivalent BTCs
function redeemBPro(address account, uint256 bproAmount, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
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 |
⤾ overrides IMoCExchange.redeemFreeDoc
Redeems the requested amount for the account, or the max amount of free docs possible.
function redeemFreeDoc(address account, uint256 docAmount, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
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 |
⤾ overrides IMoCExchange.mintDoc
Mint Max amount of Docs and give it to the msg.sender
function mintDoc(address account, uint256 btcToMint, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
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 |
⤾ overrides IMoCExchange.redeemDocWithPrice
User DoCs get burned and he receives the equivalent BTCs in return
function redeemDocWithPrice(address payable userAddress, uint256 amount, uint256 btcPrice) public nonpayable onlyWhitelisted
returns(bool, uint256)
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] |
⤾ overrides IMoCExchange.redeemAllDoc
Allow redeem on liquidation state, user DoCs get burned and he receives the equivalent RBTCs according to liquidationPrice
function redeemAllDoc(address origin, address payable destination) public nonpayable onlyWhitelisted
returns(uint256)
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 |
⤾ overrides IMoCExchange.mintBProx
BUCKET Bprox minting. Mints Bprox for the specified bucket
function mintBProx(address payable account, bytes32 bucket, uint256 btcToMint, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256, uint256, uint256, uint256)
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 |
⤾ overrides IMoCExchange.redeemBProx
Sender burns his BProx, redeems the equivalent amount of BPros, return the "borrowed" DOCs and recover pending interests
function redeemBProx(address payable account, bytes32 bucket, uint256 bproxAmount, address vendorAccount) public nonpayable onlyWhitelisted
returns(uint256, uint256