MoC

View Source: contracts/MoC.sol

↗ Extends: MoCEvents, MoCLibConnection, MoCBase, Stoppable, IMoC

MoC - version: 0.1.12

Contract Members

Constants & Variables

address internal docToken;

address internal bproToken;

contract MoCBProxManager internal bproxManager;

contract IMoCState internal mocState;

address internal DEPRECATED_mocConverter;

contract IMoCSettlement internal settlement;

contract IMoCExchange internal mocExchange;

contract IMoCInrate internal mocInrate;

bool internal liquidationExecuted;

address public DEPRECATED_mocBurnout;

uint256[50] private upgradeGap;

BucketLiquidation

Parameters

ContractLiquidated

Parameters

Modifiers

whenSettlementReady

modifier whenSettlementReady() internal

Arguments

atState

modifier atState(enum IMoCState.States _state) internal

Arguments

atLeastState

modifier atLeastState(enum IMoCState.States _state) internal

Arguments

atMostState

modifier atMostState(enum IMoCState.States _state) internal

Arguments

notInProtectionMode

modifier notInProtectionMode() internal

Arguments

bucketStateTransition

modifier bucketStateTransition(bytes32 bucket) internal

Arguments

availableBucket

modifier availableBucket(bytes32 bucket) internal

Arguments

notBaseBucket

modifier notBaseBucket(bytes32 bucket) internal

Arguments

transitionState

modifier transitionState() internal

Arguments

Functions

⤾ overrides IMoC.

Fallback function

function () external payable whenNotPaused transitionState 

Arguments

initialize

Initializes the contract

function initialize(address connectorAddress, address governorAddress, address stopperAddress, bool startStoppable) public nonpayable initializer 

Arguments

bproxBalanceOf

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

Gets the BProx balance of an address

function bproxBalanceOf(bytes32 bucket, address account) public view
returns(uint256)

Returns

BProx balance of the address

Arguments

getRedeemRequestAt

Gets the RedeemRequest at the queue index position

function getRedeemRequestAt(uint256 index) public view
returns(address, uint256)

Returns

redeemer's address and amount he submitted

Arguments

redeemQueueSize

Returns current redeem queue size

function redeemQueueSize() public view
returns(uint256)

Returns

redeem queue size

Arguments

docAmountToRedeem

Returns the total amount of Docs in the redeem queue for redeemer

function docAmountToRedeem(address redeemer) public view
returns(uint256)

Returns

total amount of Docs in the redeem queue for redeemer

Arguments

redeemDocRequest

Creates or updates the amount of a Doc redeem Request from the msg.sender

function redeemDocRequest(uint256 docAmount) public nonpayable whenNotPaused whenSettlementReady 

Arguments

alterRedeemRequestAmount

Alters the redeem amount position for the redeemer

function alterRedeemRequestAmount(bool isAddition, uint256 delta) public nonpayable whenNotPaused whenSettlementReady 

Arguments

mintBPro

Mints BPRO and pays the comissions of the operation (retrocompatible function).

function mintBPro(uint256 btcToMint) public payable

Arguments

mintBProVendors

Mints BPRO and pays the comissions of the operation.

function mintBProVendors(uint256 btcToMint, address payable vendorAccount) public payable whenNotPaused transitionState notInProtectionMode 

Arguments

redeemBPro

Redeems Bpro Tokens and pays the comissions of the operation (retrocompatible function).

function redeemBPro(uint256 bproAmount) public nonpayable

Arguments

redeemBProVendors

Redeems Bpro Tokens and pays the comissions of the operation

function redeemBProVendors(uint256 bproAmount, address payable vendorAccount) public nonpayable whenNotPaused transitionState atLeastState 

Arguments

mintDoc

Mint Doc tokens and pays the commisions of the operation (retrocompatible function).

function mintDoc(uint256 btcToMint) public payable

Arguments

mintDocVendors

Mint Doc tokens and pays the commisions of the operation

function mintDocVendors(uint256 btcToMint, address payable vendorAccount) public payable whenNotPaused transitionState atLeastState 

Arguments

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.

Redeems Bprox Tokens and pays the comissions of the operation in RBTC (retrocompatible function).

function redeemBProx(bytes32 bucket, uint256 bproxAmount) public nonpayable

Arguments

redeemBProxVendors

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

Redeems Bprox Tokens and pays the comissions of the operation in RBTC

function redeemBProxVendors(bytes32 bucket, uint256 bproxAmount, address payable vendorAccount) public nonpayable whenNotPaused whenSettlementReady availableBucket notBaseBucket transitionState bucketStateTransition 

Arguments

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.

BUCKET bprox minting (retrocompatible function).

function mintBProx(bytes32 bucket, uint256 btcToMint) public payable

Arguments

mintBProxVendors

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

BUCKET bprox minting

function mintBProxVendors(bytes32 bucket, uint256 btcToMint, address payable vendorAccount) public payable whenNotPaused whenSettlementReady availableBucket notBaseBucket transitionState bucketStateTransition 

Arguments

redeemFreeDoc

Redeems the requested amount for the msg.sender, or the max amount of free docs possible (retrocompatible function).

function redeemFreeDoc(uint256 docAmount) public nonpayable

Arguments

redeemFreeDocVendors

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

function redeemFreeDocVendors(uint256 docAmount, address payable vendorAccount) public nonpayable whenNotPaused transitionState notInProtectionMode 

Arguments

redeemAllDoc

Allow redeem on liquidation state, user DoCs get burned and he receives the equivalent BTCs if can be covered, or the maximum available

function redeemAllDoc() public nonpayable atState 

Arguments

dailyInratePayment

Moves the daily amount of interest rate to C0 bucket

function dailyInratePayment() public nonpayable whenNotPaused 

Arguments

payBitProHoldersInterestPayment

Pays the BitPro interest and transfers it to the address mocInrate.bitProInterestAddress BitPro interests = Nb (bucket 0) * bitProRate.

function payBitProHoldersInterestPayment() public nonpayable whenNotPaused 

Arguments

calculateBitProHoldersInterest

Calculates BitPro holders holder interest by taking the total amount of RBTCs available on Bucket 0. BitPro interests = Nb (bucket 0) * bitProRate.

function calculateBitProHoldersInterest() public view
returns(uint256, uint256)

Arguments

getBitProInterestAddress

Gets the target address to transfer BitPro Holders rate

function getBitProInterestAddress() public view
returns(address payable)

Returns

Target address to transfer BitPro Holders interest

Arguments

getBitProRate

Gets the rate for BitPro Holders

function getBitProRate() public view
returns(uint256)

Returns

BitPro Rate

Arguments

getBitProInterestBlockSpan

Gets the blockspan of BPRO that represents the frecuency of BitPro holders interest payment

function getBitProInterestBlockSpan() public view
returns(uint256)

Returns

returns power of bitProInterestBlockSpan

Arguments

isDailyEnabled

function isDailyEnabled() public view
returns(bool)

Arguments

isBitProInterestEnabled

function isBitProInterestEnabled() public view
returns(bool)

Arguments

isSettlementEnabled

Indicates if settlement is enabled

function isSettlementEnabled() public view
returns(bool)

Returns

Returns true if blockSpan number of blocks has passed since last execution; otherwise false

Arguments

isBucketLiquidationReached

Checks if bucket liquidation is reached.

function isBucketLiquidationReached(bytes32 bucket) public view
returns(bool)

Returns

true if bucket liquidation is reached, false otherwise

Arguments

evalBucketLiquidation

function evalBucketLiquidation(bytes32 bucket) public nonpayable availableBucket notBaseBucket whenSettlementReady 

Arguments

evalLiquidation

Evaluates if liquidation state has been reached and runs liq if that's the case

function evalLiquidation() public nonpayable transitionState 

Arguments

runSettlement

Runs all settlement process

function runSettlement(uint256 steps) public nonpayable whenNotPaused transitionState 

Arguments

sendToAddress

⤾ overrides IMoC.sendToAddress

Send RBTC to a user and update RbtcInSystem in MoCState

function sendToAddress(address payable receiver, uint256 btcAmount) public nonpayable onlyWhitelisted 
returns(bool)

Returns

result of the transaction

Arguments

liquidate

function liquidate() internal nonpayable

Arguments

transferCommissions

Transfer mint operation fees (commissions + vendor markup)

function transferCommissions(address payable sender, uint256 value, uint256 totalBtcSpent, uint256 btcCommission, uint256 mocCommission, address payable vendorAccount, uint256 btcMarkup, uint256 mocMarkup) internal nonpayable

Arguments

transferMocCommission

Transfer operation fees in MoC (commissions + vendor markup)

function transferMocCommission(address sender, uint256 mocCommission, address vendorAccount, uint256 mocMarkup) internal nonpayable

Arguments

redeemWithCommission

Transfer redeem operation fees (commissions + vendor markup)

function redeemWithCommission(address payable sender, uint256 btcAmount, uint256 btcCommission, uint256 mocCommission, address payable vendorAccount, uint256 btcMarkup, uint256 mocMarkup) internal nonpayable

Arguments

transferBtcCommission

Transfer operation fees in RBTC (commissions + vendor markup)

function transferBtcCommission(address payable vendorAccount, uint256 btcCommission, uint256 btcMarkup) internal nonpayable

Arguments

doTransfer

Transfer using transfer function and updates global RBTC register in MoCState

function doTransfer(address payable receiver, uint256 btcAmount) private nonpayable

Arguments

doSend

Transfer using send function and updates global RBTC register in MoCState

function doSend(address payable receiver, uint256 btcAmount) private nonpayable
returns(bool)

Returns

Execution result

Arguments

Last updated