Main Contract
Search…
Introduction
Money on Chain platform
Main concepts
System states
Public actions
Contracts architecture
Contract mocks
Relevant patterns and choices
Data dictionary
Getting started
Integration with MoC platform
Introduction to MoC
Getting BPros
Getting DoCs
Getting BTCx
Commission fees values
Vendors
Fees calculation
From outside the blockchain
Smart contracts
Contracts verification
ABIs documentation
BProToken
BtcPriceProviderMock
DocToken
ERC20Mintable
Governed
Initializable
MakeStoppable
MakeUnstoppable
MoC
MoCBProxManager
MoCBProxManagerUpdater
MoCBucketContainer
MoCConnector
MoCConverter
MoCEMACalculator
MoCExchange
MoCHelperLib
MoCHelperLibMock
MoCInrate
MoCLibConnection
MoCPriceProviderMock
MoCSettlement
MoCSettlementMock
MoCState
MoCStateMock
MoCToken
MoCVendors
MoCWhitelist
MockMakeStoppable
MockMakeUnstoppable
MockStopper
MockUpgradeDelegator
MockUpgraderTemplate
OwnerBurnableToken
Pausable
PriceFeed
PriceFeederAdder
PriceFeederRemover
PriceProvider
RevertingOnSend
Stoppable
Stopper
UpgradeDelegator
UpgraderTemplate
Powered By
GitBook
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
​
​
atState
​
​
atLeastState
​
​
atMostState
​
​
notInProtectionMode
​
​
bucketStateTransition
​
​
availableBucket
​
​
notBaseBucket
​
​
transitionState
​
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
​
()
​
​
initialize(address connectorAddress, address governorAddress, address stopperAddress, bool startStoppable)
​
​
bproxBalanceOf(bytes32 bucket, address account)
​
​
getRedeemRequestAt(uint256 index)
​
​
redeemQueueSize()
​
​
docAmountToRedeem(address redeemer)
​
​
redeemDocRequest(uint256 docAmount)
​
​
alterRedeemRequestAmount(bool isAddition, uint256 delta)
​
​
mintBPro(uint256 btcToMint)
​
​
mintBProVendors(uint256 btcToMint, address payable vendorAccount)
​
​
redeemBPro(uint256 bproAmount)
​
​
redeemBProVendors(uint256 bproAmount, address payable vendorAccount)
​
​
mintDoc(uint256 btcToMint)
​
​
mintDocVendors(uint256 btcToMint, address payable vendorAccount)
​
​
redeemBProx(bytes32 bucket, uint256 bproxAmount)
​
​
redeemBProxVendors(bytes32 bucket, uint256 bproxAmount, address payable vendorAccount)
​
​
mintBProx(bytes32 bucket, uint256 btcToMint)
​
​
mintBProxVendors(bytes32 bucket, uint256 btcToMint, address payable vendorAccount)
​
​
redeemFreeDoc(uint256 docAmount)
​
​
redeemFreeDocVendors(uint256 docAmount, address payable vendorAccount)
​
​
redeemAllDoc()
​
​
dailyInratePayment()
​
​
payBitProHoldersInterestPayment()
​
​
calculateBitProHoldersInterest()
​
​
getBitProInterestAddress()
​
​
getBitProRate()
​
​
getBitProInterestBlockSpan()
​
​
isDailyEnabled()
​
​
isBitProInterestEnabled()
​
​
isSettlementEnabled()
​
​
isBucketLiquidationReached(bytes32 bucket)
​
​
evalBucketLiquidation(bytes32 bucket)
​
​
evalLiquidation()
​
​
runSettlement(uint256 steps)
​
​
sendToAddress(address payable receiver, uint256 btcAmount)
​
​
liquidate()
​
​
transferCommissions(address payable sender, uint256 value, uint256 totalBtcSpent, uint256 btcCommission, uint256 mocCommission, address payable vendorAccount, uint256 btcMarkup, uint256 mocMarkup)
​
​
transferMocCommission(address sender, uint256 mocCommission, address vendorAccount, uint256 mocMarkup)
​
​
redeemWithCommission(address payable sender, uint256 btcAmount, uint256 btcCommission, uint256 mocCommission, address payable vendorAccount, uint256 btcMarkup, uint256 mocMarkup)
​
​
transferBtcCommission(address payable vendorAccount, uint256 btcCommission, uint256 btcMarkup)
​
​
doTransfer(address payable receiver, uint256 btcAmount)
​
​
doSend(address payable receiver, uint256 btcAmount)
​
​
⤾ 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
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
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
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
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
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
Previous
MakeUnstoppable
Next
MoCBProxManager
Last modified
9mo ago
Copy link
Outline
Contract Members
BucketLiquidation
ContractLiquidated
Modifiers
whenSettlementReady
atState
atLeastState
atMostState
notInProtectionMode
bucketStateTransition
availableBucket
notBaseBucket
transitionState
Functions
initialize
bproxBalanceOf
getRedeemRequestAt
redeemQueueSize
docAmountToRedeem
redeemDocRequest
alterRedeemRequestAmount
mintBPro
mintBProVendors
redeemBPro
redeemBProVendors
mintDoc
mintDocVendors
redeemBProx
redeemBProxVendors
mintBProx
mintBProxVendors
redeemFreeDoc
redeemFreeDocVendors
redeemAllDoc
dailyInratePayment
payBitProHoldersInterestPayment
calculateBitProHoldersInterest
getBitProInterestAddress
getBitProRate
getBitProInterestBlockSpan
isDailyEnabled
isBitProInterestEnabled
isSettlementEnabled
isBucketLiquidationReached
evalBucketLiquidation
evalLiquidation
runSettlement
sendToAddress
liquidate
transferCommissions
transferMocCommission
redeemWithCommission
transferBtcCommission
doTransfer
doSend