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

Name
Type
Description

bucket

bytes32

ContractLiquidated

Parameters

Name
Type
Description

mocAddress

address

Modifiers

whenSettlementReady

modifier whenSettlementReady() internal

Arguments

atState

modifier atState(enum IMoCState.States _state) internal

Arguments

Name
Type
Description

_state

enum IMoCState.States

atLeastState

modifier atLeastState(enum IMoCState.States _state) internal

Arguments

Name
Type
Description

_state

enum IMoCState.States

atMostState

modifier atMostState(enum IMoCState.States _state) internal

Arguments

Name
Type
Description

_state

enum IMoCState.States

notInProtectionMode

modifier notInProtectionMode() internal

Arguments

bucketStateTransition

modifier bucketStateTransition(bytes32 bucket) internal

Arguments

Name
Type
Description

bucket

bytes32

availableBucket

modifier availableBucket(bytes32 bucket) internal

Arguments

Name
Type
Description

bucket

bytes32

notBaseBucket

modifier notBaseBucket(bytes32 bucket) internal

Arguments

Name
Type
Description

bucket

bytes32

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

Name
Type
Description

connectorAddress

address

MoCConnector contract address

governorAddress

address

Governor contract address

stopperAddress

address

Stopper contract address

startStoppable

bool

Indicates if the contract starts being unstoppable or not

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

Name
Type
Description

bucket

bytes32

Name of the bucket

account

address

Address

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

Name
Type
Description

index

uint256

queue position to get

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

Name
Type
Description

redeemer

address

address for which ^ is computed

redeemDocRequest

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

function redeemDocRequest(uint256 docAmount) public nonpayable whenNotPaused whenSettlementReady 

Arguments

Name
Type
Description

docAmount

uint256

Amount of Docs to redeem on settlement [using mocPrecision]

alterRedeemRequestAmount

Alters the redeem amount position for the redeemer

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

Arguments

Name
Type
Description

isAddition

bool

true if adding amount to redeem, false to substract.

delta

uint256

the amount to add/substract to current position

mintBPro

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

function mintBPro(uint256 btcToMint) public payable

Arguments

Name
Type
Description

btcToMint

uint256

Amount in BTC to mint

mintBProVendors

Mints BPRO and pays the comissions of the operation.

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

Arguments

Name
Type
Description

btcToMint

uint256

Amount in BTC to mint

vendorAccount

address payable

Vendor address

redeemBPro

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

function redeemBPro(uint256 bproAmount) public nonpayable

Arguments

Name
Type
Description

bproAmount

uint256

Amount in Bpro

redeemBProVendors

Redeems Bpro Tokens and pays the comissions of the operation

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

Arguments

Name
Type
Description

bproAmount

uint256

Amount in Bpro

vendorAccount

address payable

Vendor address

mintDoc

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

function mintDoc(uint256 btcToMint) public payable

Arguments

Name
Type
Description

btcToMint

uint256

Amount in RBTC to mint

mintDocVendors

Mint Doc tokens and pays the commisions of the operation

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

Arguments

Name
Type
Description

btcToMint

uint256

Amount in RBTC to mint

vendorAccount

address payable

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.

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

function redeemBProx(bytes32 bucket, uint256 bproxAmount) public nonpayable

Arguments

Name
Type
Description

bucket

bytes32

Bucket to reedem, for example X2

bproxAmount

uint256

Amount in Bprox

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

Name
Type
Description

bucket

bytes32

Bucket to reedem, for example X2

bproxAmount

uint256

Amount in Bprox

vendorAccount

address payable

Vendor address

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

Name
Type
Description

bucket

bytes32

Name of the bucket used

btcToMint

uint256

amount to mint on RBTC

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

Name
Type
Description

bucket

bytes32

Name of the bucket used

btcToMint

uint256

amount to mint on RBTC

vendorAccount

address payable

Vendor address

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

Name
Type
Description

docAmount

uint256

Amount of Docs to redeem.

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

Name
Type
Description

docAmount

uint256

Amount of Docs to redeem.

vendorAccount

address payable

Vendor address

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

Name
Type
Description

bucket

bytes32

Name of bucket.

evalBucketLiquidation

function evalBucketLiquidation(bytes32 bucket) public nonpayable availableBucket notBaseBucket whenSettlementReady 

Arguments

Name
Type
Description

bucket

bytes32

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

Name
Type
Description

steps

uint256

Number of steps

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

Name
Type
Description

receiver

address payable

address of receiver

btcAmount

uint256

amount to transfer

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

Name
Type
Description

sender

address payable

address of msg.sender

value

uint256

amount of msg.value

totalBtcSpent

uint256

amount in RBTC spent

btcCommission

uint256

commission amount in RBTC

mocCommission

uint256

commission amount in MoC

vendorAccount

address payable

address of vendor

btcMarkup

uint256

vendor markup in RBTC

mocMarkup

uint256

vendor markup in MoC

transferMocCommission

Transfer operation fees in MoC (commissions + vendor markup)

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

Arguments

Name
Type
Description

sender

address

address of msg.sender

mocCommission

uint256

commission amount in MoC

vendorAccount

address

address of vendor

mocMarkup

uint256

vendor markup in MoC

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

Name
Type
Description

sender

address payable

address of msg.sender

btcAmount

uint256

btcCommission

uint256

commission amount in RBTC

mocCommission

uint256

commission amount in MoC

vendorAccount

address payable

address of vendor

btcMarkup

uint256

vendor markup in RBTC

mocMarkup

uint256

vendor markup in MoC

transferBtcCommission

Transfer operation fees in RBTC (commissions + vendor markup)

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

Arguments

Name
Type
Description

vendorAccount

address payable

address of vendor

btcCommission

uint256

commission amount in RBTC

btcMarkup

uint256

vendor markup in RBTC

doTransfer

Transfer using transfer function and updates global RBTC register in MoCState

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

Arguments

Name
Type
Description

receiver

address payable

address of receiver

btcAmount

uint256

amount in RBTC

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

Name
Type
Description

receiver

address payable

address of receiver

btcAmount

uint256

amount in RBTC

Last updated