MoCState

View Source: contracts/MoCState.sol

↗ Extends: MoCLibConnection, MoCBase, MoCEMACalculator, IMoCState ↘ Derived Contracts: MoCStateMock

MoCState - version: 0.1.12

Structs

InitializeParams

struct InitializeParams {
 address connectorAddress,
 address governor,
 address btcPriceProvider,
 uint256 liq,
 uint256 utpdu,
 uint256 maxDiscRate,
 uint256 dayBlockSpan,
 uint256 ema,
 uint256 smoothFactor,
 uint256 emaBlockSpan,
 uint256 maxMintBPro,
 address mocPriceProvider,
 address mocTokenAddress,
 address mocVendorsAddress,
 bool liquidationEnabled,
 uint256 protected
}

Contract Members

Constants & Variables

enum IMoCState.States public state;

uint256 public dayBlockSpan;

uint256 public peg;

uint256 public bproMaxDiscountRate;

uint256 public liq;

uint256 public utpdu;

uint256 public rbtcInSystem;

uint256 public liquidationPrice;

bool public liquidationEnabled;

uint256 public protected;

uint256 public maxMintBPro;

contract PriceProvider internal btcPriceProvider;

contract IMoCSettlement internal mocSettlement;

address internal DEPRECATED_mocConverter;

contract DocToken internal docToken;

contract BProToken internal bproToken;

contract MoCBProxManager internal bproxManager;

contract PriceProvider internal mocPriceProvider;

contract MoCToken internal mocToken;

address internal mocVendors;

uint256[50] private upgradeGap;

StateTransition

Parameters

NameTypeDescription

newState

enum IMoCState.States

BtcPriceProviderUpdated

Parameters

NameTypeDescription

oldAddress

address

newAddress

address

MoCPriceProviderUpdated

Parameters

NameTypeDescription

oldAddress

address

newAddress

address

MoCTokenChanged

Parameters

NameTypeDescription

mocTokenAddress

address

MoCVendorsChanged

Parameters

NameTypeDescription

mocVendorsAddress

address

Functions

initialize

⤿ Overridden Implementation(s): MoCStateMock.initialize

Initializes the contract

function initialize(struct MoCState.InitializeParams params) public nonpayable initializer 

Arguments

NameTypeDescription

params

struct MoCState.InitializeParams

Params defined in InitializeParams struct

setMaxDiscountRate

Sets the max discount rate.

function setMaxDiscountRate(uint256 rate) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

rate

uint256

Discount rate at liquidation level [using mocPrecision]

getMaxDiscountRate

Returns the value of the BPro max discount rate configuration param

function getMaxDiscountRate() public view
returns(uint256)

Returns

bproMaxDiscountRate BPro max discount rate

Arguments

setDayBlockSpan

Defines how many blocks there are in a day

function setDayBlockSpan(uint256 blockSpan) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

blockSpan

uint256

blocks there are in a day

setBtcPriceProvider

Sets a new BTCProvider contract

function setBtcPriceProvider(address btcProviderAddress) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

btcProviderAddress

address

address of the BTC price provider contract

getBtcPriceProvider

Gets the BTCPriceProviderAddress

function getBtcPriceProvider() public view
returns(address)

Returns

address of the BTC price provider contract

Arguments

getDayBlockSpan

Gets how many blocks there are in a day

function getDayBlockSpan() public view
returns(uint256)

Returns

blocks there are in a day

Arguments

subtractRbtcFromSystem

⤾ overrides IMoCState.subtractRbtcFromSystem

Subtract the btc amount passed by parameter to the total Bitcoin Amount

function subtractRbtcFromSystem(uint256 btcAmount) public nonpayable onlyWhitelisted 

Arguments

NameTypeDescription

btcAmount

uint256

Amount that will be subtract to rbtcInSystem

addToRbtcInSystem

⤾ overrides IMoCState.addToRbtcInSystem

btcAmount Add the btc amount passed by parameter to the total Bitcoin Amount

function addToRbtcInSystem(uint256 btcAmount) public nonpayable onlyWhitelisted 

Arguments

NameTypeDescription

btcAmount

uint256

Amount that will be added to rbtcInSystem

bproTotalSupply

All BPros in circulation

function bproTotalSupply() public view
returns(uint256)

Arguments

docTotalSupply

All docs in circulation

function docTotalSupply() public view
returns(uint256)

Arguments

cobj

Target coverage for complete system

function cobj() public view
returns(uint256)

Arguments

collateralRbtcInSystem

Amount of Bitcoins in the system excluding BTCx values and interests holdings

function collateralRbtcInSystem() public view
returns(uint256)

Arguments

globalCoverage

⤾ overrides IMoCState.globalCoverage

GLOBAL Coverage

function globalCoverage() public view
returns(uint256)

Returns

coverage [using mocPrecision]

Arguments

lockedBitcoin

BUCKET lockedBitcoin

function lockedBitcoin(bytes32 bucket) public view
returns(uint256)

Returns

lockedBitcoin amount [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

getRbtcInBitPro

Gets RBTC in BitPro within specified bucket

function getRbtcInBitPro(bytes32 bucket) public view
returns(uint256)

Returns

Bitcoin amount of BitPro in Bucket [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

getRbtcRemainder

⤾ overrides IMoCState.getRbtcRemainder

Gets the RBTC in the contract that not corresponds to Doc collateral

function getRbtcRemainder() public view
returns(uint256)

Returns

RBTC remainder [using reservePrecision]

Arguments

coverage

⤾ overrides IMoCState.coverage

BUCKET Coverage

function coverage(bytes32 bucket) public view
returns(uint256)

Returns

coverage [using coveragePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

abundanceRatio

⤾ overrides IMoCState.abundanceRatio

Abundance ratio, receives tha amount of doc to use the value of doc0 and Doc total supply

function abundanceRatio(uint256 doc0) public view
returns(uint256)

Returns

abundance ratio [using mocPrecision]

Arguments

NameTypeDescription

doc0

uint256

currentAbundanceRatio

⤾ overrides IMoCState.currentAbundanceRatio

Relation between docs in bucket 0 and Doc total supply

function currentAbundanceRatio() public view
returns(uint256)

Returns

abundance ratio [using mocPrecision]

Arguments

leverage

⤾ overrides IMoCState.leverage

BUCKET Leverage

function leverage(bytes32 bucket) public view
returns(uint256)

Returns

coverage [using mocPrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

globalMaxDoc

GLOBAL maxDoc

function globalMaxDoc() public view
returns(uint256)

Returns

abundance ratio [using mocPrecision]

Arguments

freeDoc

⤾ overrides IMoCState.freeDoc

Returns the amount of DoCs in bucket 0, that can be redeemed outside of settlement

function freeDoc() public view
returns(uint256)

Returns

amount of docs in bucket 0, that can be redeemed outside of settlement [using mocPrecision]

Arguments

maxDoc

BUCKET maxDoc

function maxDoc(bytes32 bucket) public view
returns(uint256)

Returns

abundance ratio [using mocPrecision]

Arguments

NameTypeDescription

bucket

bytes32

globalMaxBPro

GLOBAL maxBPro

function globalMaxBPro() public view
returns(uint256)

Returns

maxBPro for redeem [using reservePrecision]

Arguments

absoluteMaxDoc

⤾ overrides IMoCState.absoluteMaxDoc

ABSOLUTE maxDoc

function absoluteMaxDoc() public view
returns(uint256)

Returns

maxDoc to issue [using mocPrecision]

Arguments

maxBPro

BUCKET maxBPro to redeem / mint

function maxBPro(bytes32 bucket) public view
returns(uint256)

Returns

maxBPro for redeem [using mocPrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

maxBProx

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

GLOBAL max bprox to mint

function maxBProx(bytes32 bucket) public view
returns(uint256)

Returns

maxBProx [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

maxBProxBtcValue

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

GLOBAL max bprox to mint

function maxBProxBtcValue(bytes32 bucket) public view
returns(uint256)

Returns

maxBProx BTC value to mint [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

absoluteMaxBPro

⤾ overrides IMoCState.absoluteMaxBPro

ABSOLUTE maxBPro

function absoluteMaxBPro() public view
returns(uint256)

Returns

maxDoc to issue [using mocPrecision]

Arguments

maxBProWithDiscount

⤾ overrides IMoCState.maxBProWithDiscount

DISCOUNT maxBPro

function maxBProWithDiscount() public view
returns(uint256)

Returns

maxBPro for mint with discount [using mocPrecision]

Arguments

globalLockedBitcoin

GLOBAL lockedBitcoin

function globalLockedBitcoin() public view
returns(uint256)

Returns

lockedBitcoin amount [using reservePrecision]

Arguments

bproTecPrice

⤾ overrides IMoCState.bproTecPrice

BTC price of BPro

function bproTecPrice() public view
returns(uint256)

Returns

the BPro Tec Price [using reservePrecision]

Arguments

bucketBProTecPrice

⤾ overrides IMoCState.bucketBProTecPrice

BUCKET BTC price of BPro

function bucketBProTecPrice(bytes32 bucket) public view
returns(uint256)

Returns

the BPro Tec Price [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

bucketBProTecPriceHelper

⤾ overrides IMoCState.bucketBProTecPriceHelper

BUCKET BTC price of BPro (helper)

function bucketBProTecPriceHelper(bytes32 bucket) public view
returns(uint256)

Returns

the BPro Tec Price [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

bproDiscountPrice

⤾ overrides IMoCState.bproDiscountPrice

BTC price of BPro with spot discount applied

function bproDiscountPrice() public view
returns(uint256)

Returns

the BPro Tec Price [using reservePrecision]

Arguments

bproUsdPrice

BPro USD PRICE

function bproUsdPrice() public view
returns(uint256)

Returns

the BPro USD Price [using mocPrecision]

Arguments

maxBProxBProValue

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

GLOBAL max bprox to mint

function maxBProxBProValue(bytes32 bucket) public view
returns(uint256)

Returns

max BPro allowed to be spent to mint BProx [using reservePrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

bproxBProPrice

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

BUCKET BProx price in BPro

function bproxBProPrice(bytes32 bucket) public view
returns(uint256)

Returns

BProx BPro Price [using mocPrecision]

Arguments

NameTypeDescription

bucket

bytes32

Name of the bucket used

bproSpotDiscountRate

⤾ overrides IMoCState.bproSpotDiscountRate

GLOBAL BTC Discount rate to apply to BProPrice.

function bproSpotDiscountRate() public view
returns(uint256)

Returns

BPro discount rate [using DISCOUNT_PRECISION].

Arguments

daysToSettlement

⤾ overrides IMoCState.daysToSettlement

⤿ Overridden Implementation(s): MoCStateMock.daysToSettlement

Calculates the number of days to next settlement based dayBlockSpan

function daysToSettlement() public view
returns(uint256)

Returns

days to next settlement

Arguments

blocksToSettlement

Calculates the number of blocks to settlement

function blocksToSettlement() public view
returns(uint256)

Returns

Number of blocks to settlement

Arguments

isLiquidationReached

Verifies if forced liquidation is reached checking if globalCoverage <= liquidation (currently 1.04) and if liquidation is enabled

function isLiquidationReached() public view
returns(bool)

Returns

true if liquidation state is reached, false otherwise

Arguments

getLiquidationPrice

⤾ overrides IMoCState.getLiquidationPrice

Gets the price to use for doc redeem in a liquidation event

function getLiquidationPrice() public view
returns(uint256)

Returns

price to use for doc redeem in a liquidation event

Arguments

getBucketNBTC

⤾ overrides IMoCState.getBucketNBTC

function getBucketNBTC(bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

bucket

bytes32

getBucketNBPro

function getBucketNBPro(bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

bucket

bytes32

getBucketNDoc

function getBucketNDoc(bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

bucket

bytes32

getBucketCobj

function getBucketCobj(bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

bucket

bytes32

getInrateBag

function getInrateBag(bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

bucket

bytes32

getBcons

function getBcons() public view
returns(uint256)

Arguments

getBitcoinPrice

⤾ overrides IMoCState.getBitcoinPrice

function getBitcoinPrice() public view
returns(uint256)

Arguments

calculateBitcoinMovingAverage

function calculateBitcoinMovingAverage() public nonpayable

Arguments

getLiq

return the value of the liq threshold configuration param

function getLiq() public view
returns(uint256)

Returns

liq threshold, currently 1.04

Arguments

setLiq

sets the value of the liq threshold configuration param

function setLiq(uint256 _liq) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

_liq

uint256

liquidation threshold

getUtpdu

return the value of the utpdu threshold configuration param

function getUtpdu() public view
returns(uint256)

Returns

utpdu Universal TPro discount sales coverage threshold

Arguments

setUtpdu

sets the value of the utpdu threshold configuration param

function setUtpdu(uint256 _utpdu) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

_utpdu

uint256

Universal TPro discount sales coverage threshold

getPeg

returns the relation between DOC and dollar. By default it is 1.

function getPeg() public view
returns(uint256)

Returns

peg relation between DOC and dollar

Arguments

setPeg

sets the relation between DOC and dollar. By default it is 1.

function setPeg(uint256 _peg) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

_peg

uint256

relation between DOC and dollar

getProtected

⤾ overrides IMoCState.getProtected

return the value of the protected threshold configuration param

function getProtected() public view
returns(uint256)

Returns

protected threshold, currently 1.5

Arguments

setProtected

sets the value of the protected threshold configuration param

function setProtected(uint256 _protected) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

_protected

uint256

protected threshold

getLiquidationEnabled

returns if is liquidation enabled.

function getLiquidationEnabled() public view
returns(bool)

Returns

liquidationEnabled is liquidation enabled

Arguments

setLiquidationEnabled

returns if is liquidation enabled.

function setLiquidationEnabled(bool _liquidationEnabled) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

_liquidationEnabled

bool

is liquidation enabled

nextState

⤾ overrides IMoCState.nextState

Transitions to next state.

function nextState() public nonpayable

Arguments

setMaxMintBPro

Sets max mint BPro value

function setMaxMintBPro(uint256 _maxMintBPro) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

_maxMintBPro

uint256

[using mocPrecision]

getMaxMintBPro

return Max value posible to mint of BPro

function getMaxMintBPro() public view
returns(uint256)

Returns

maxMintBPro

Arguments

setMoCPriceProvider

Sets a new MoCProvider contract

function setMoCPriceProvider(address mocProviderAddress) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

mocProviderAddress

address

MoC price provider address

getMoCPriceProvider

Gets the MoCPriceProviderAddress

function getMoCPriceProvider() public view
returns(address)

Returns

MoC price provider address

Arguments

getMoCPrice

⤾ overrides IMoCState.getMoCPrice

Gets the MoCPrice

function getMoCPrice() public view
returns(uint256)

Returns

MoC price

Arguments

bproToBtc

BTC equivalent for the amount of bpros given

function bproToBtc(uint256 amount) public view
returns(uint256)

Returns

total BTC Price of the amount BPros [using reservePrecision]

Arguments

NameTypeDescription

amount

uint256

Amount of BPro to calculate the total price

docsToBtc

⤾ overrides IMoCState.docsToBtc

function docsToBtc(uint256 docAmount) public view
returns(uint256)

Arguments

NameTypeDescription

docAmount

uint256

btcToDoc

⤾ overrides IMoCState.btcToDoc

function btcToDoc(uint256 btcAmount) public view
returns(uint256)

Arguments

NameTypeDescription

btcAmount

uint256

bproxToBtc

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

function bproxToBtc(uint256 bproxAmount, bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

bproxAmount

uint256

bucket

bytes32

bproxToBtcHelper

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

function bproxToBtcHelper(uint256 bproxAmount, bytes32 bucket) internal view
returns(uint256)

Arguments

NameTypeDescription

bproxAmount

uint256

bucket

bytes32

btcToBProx

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

function btcToBProx(uint256 btcAmount, bytes32 bucket) public view
returns(uint256)

Arguments

NameTypeDescription

btcAmount

uint256

bucket

bytes32

setMoCToken

Sets the MoC token contract address

function setMoCToken(address mocTokenAddress) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

mocTokenAddress

address

MoC token contract address

getMoCToken

⤾ overrides IMoCState.getMoCToken

Gets the MoC token contract address

function getMoCToken() public view
returns(address)

Returns

MoC token contract address

Arguments

setMoCVendors

Sets the MoCVendors contract address

function setMoCVendors(address mocVendorsAddress) public nonpayable onlyAuthorizedChanger 

Arguments

NameTypeDescription

mocVendorsAddress

address

MoCVendors contract address

getMoCVendors

⤾ overrides IMoCState.getMoCVendors

Gets the MoCVendors contract addfress

function getMoCVendors() public view
returns(address)

Returns

MoCVendors contract address

Arguments

setMoCTokenInternal

Sets the MoC token contract address (internal function)

function setMoCTokenInternal(address mocTokenAddress) internal nonpayable

Arguments

NameTypeDescription

mocTokenAddress

address

MoC token contract address

setMoCVendorsInternal

Sets the MoCVendors contract address (internal function)

function setMoCVendorsInternal(address mocVendorsAddress) internal nonpayable

Arguments

NameTypeDescription

mocVendorsAddress

address

MoCVendors contract address

setLiquidationPrice

Calculates price at liquidation event as the relation between the doc total supply and the amount of RBTC available to distribute

function setLiquidationPrice() internal nonpayable

Arguments

initializeValues

function initializeValues(address _governor, address _btcPriceProvider, uint256 _liq, uint256 _utpdu, uint256 _maxDiscRate, uint256 _dayBlockSpan, uint256 _maxMintBPro, address _mocPriceProvider, bool _liquidationEnabled, uint256 _protected) internal nonpayable

Arguments

NameTypeDescription

_governor

address

_btcPriceProvider

address

_liq

uint256

_utpdu

uint256

_maxDiscRate

uint256

_dayBlockSpan

uint256

_maxMintBPro

uint256

_mocPriceProvider

address

_liquidationEnabled

bool

_protected

uint256

initializeContracts

function initializeContracts(address _mocTokenAddress, address _mocVendorsAddress) internal nonpayable

Arguments

NameTypeDescription

_mocTokenAddress

address

_mocVendorsAddress

address

Last updated