MoCInrate
MoCInrate - version: 0.1.12
struct InrateParams {
uint256 tMax,
uint256 tMin,
uint256 power
}
struct InitializeParams {
address connectorAddress,
address governor,
uint256 btcxTmin,
uint256 btcxPower,
uint256 btcxTmax,
uint256 bitProRate,
uint256 blockSpanBitPro,
address payable bitProInterestTargetAddress,
address payable commissionsAddressTarget,
uint256 docTmin,
uint256 docPower,
uint256 docTmax
}
Constants & Variables
struct MoCInrateStructs.InrateParams internal btcxParams;
contract IMoCState internal mocState;
address internal DEPRECATED_mocConverter;
contract MoCBProxManager internal bproxManager;
uint256 public lastDailyPayBlock;
uint256 public bitProRate;
address payable public bitProInterestAddress;
uint256 public lastBitProInterestBlock;
uint256 public bitProInterestBlockSpan;
address payable public commissionsAddress;
uint256 public DEPRECATED_commissionRate;
uint256 public docTmin;
uint256 public docPower;
uint256 public docTmax;
uint8 public constant MINT_BPRO_FEES_RBTC;
uint8 public constant REDEEM_BPRO_FEES_RBTC;
uint8 public constant MINT_DOC_FEES_RBTC;
uint8 public constant REDEEM_DOC_FEES_RBTC;
uint8 public constant MINT_BTCX_FEES_RBTC;
uint8 public constant REDEEM_BTCX_FEES_RBTC;
uint8 public constant MINT_BPRO_FEES_MOC;
uint8 public constant REDEEM_BPRO_FEES_MOC;
uint8 public constant MINT_DOC_FEES_MOC;
uint8 public constant REDEEM_DOC_FEES_MOC;
uint8 public constant MINT_BTCX_FEES_MOC;
uint8 public constant REDEEM_BTCX_FEES_MOC;
mapping(uint8 => uint256) public commissionRatesByTxType;
uint256[50] private upgradeGap;
Parameters
Name | Type | Description |
---|---|---|
amount | uint256 | |
daysToSettlement | uint256 | |
nReserveBucketC0 | uint256 | |
Parameters
Name | Type | Description |
---|---|---|
amount | uint256 | |
nReserveBucketC0BeforePay | uint256 | |
modifier onlyOnceADay() internal
Arguments
modifier onlyWhenBitProInterestsIsEnabled() internal
Arguments
function setDoCTmin(uint256 _docTmin) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
_docTmin | uint256 | |
function setDoCTmax(uint256 _docTmax) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
_docTmax | uint256 | |
function setDoCPower(uint256 _docPower) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
_docPower | uint256 | |
function getDoCTmin() public view
returns(uint256)
Arguments
function getDoCTmax() public view
returns(uint256)
Arguments
function getDoCPower() public view
returns(uint256)
Arguments
Calculates an average interest rate between after and before free doc Redemption
function docInrateAvg(uint256 docRedeem) public view
returns(uint256)
Returns
Interest rate value [using mocPrecision]
Arguments
Name | Type | Description |
---|---|---|
docRedeem | uint256 | Docs to redeem [using mocPrecision] |
Initializes the contract
function initialize(struct MoCInrateStructs.InitializeParams params) public nonpayable initializer
Arguments
Name | Type | Description |
---|---|---|
params | struct MoCInrateStructs.InitializeParams | Params defined in InitializeParams struct |
gets tMin param of BTCX tokens
function getBtcxTmin() public view
returns(uint256)
Returns
returns tMin of BTCX
Arguments
gets tMax param of BTCX tokens
function getBtcxTmax() public view
returns(uint256)
Returns
returns tMax of BTCX
Arguments
gets power param of BTCX tokens
function getBtcxPower() public view
returns(uint256)
Returns
returns power of BTCX
Arguments
⤾ overrides IMoCInrate.getBitProInterestBlockSpan
Gets the blockspan of BPRO that represents the frecuency of BitPro holders intereset payment
function getBitProInterestBlockSpan() public view
returns(uint256)
Returns
returns power of bitProInterestBlockSpan
Arguments
sets tMin param of BTCX tokens
function setBtcxTmin(uint256 _btxcTmin) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
_btxcTmin | uint256 | tMin of BTCX |
sets tMax param of BTCX tokens
function setBtcxTmax(uint256 _btxcTax) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
_btxcTax | uint256 | tMax of BTCX |
sets power param of BTCX tokens
function setBtcxPower(uint256 _btxcPower) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
_btxcPower | uint256 | power of BTCX |
⤾ overrides IMoCInrate.getBitProRate
Gets the rate for BitPro Holders
function getBitProRate() public view
returns(uint256)
Returns
BitPro Rate
Arguments
Sets BitPro Holders rate
function setBitProRate(uint256 newBitProRate) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
newBitProRate | uint256 | New BitPro rate |
⤾ overrides IMoCInrate.setBitProInterestBlockSpan
Sets the blockspan BitPro Intereset rate payment is enable to be executed
function setBitProInterestBlockSpan(uint256 newBitProBlockSpan) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
newBitProBlockSpan | uint256 | New BitPro Block span |
⤾ overrides IMoCInrate.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
Sets the target address to transfer BitPro Holders rate
function setBitProInterestAddress(address payable newBitProInterestAddress) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
newBitProInterestAddress | address payable | New BitPro rate |
Sets the target address to transfer commissions of Mint/Redeem transactions
function setCommissionsAddress(address payable newCommissionsAddress) public nonpayable onlyAuthorizedChanger
Arguments
Name | Type | Description |
---|---|---|
newCommissionsAddress | address payable | New commisions address |
Calculates interest rate for BProx Minting, redeem and Free Doc Redeem
⚠ 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 spotInrate() public view
returns(uint256)
Returns
Interest rate value [using RatePrecsion]
Arguments
Calculates an average interest rate between after and before mint/redeem
function btcxInrateAvg(bytes32 bucket, uint256 btcAmount, bool onMinting) public view
returns(uint256)
Returns
Interest rate value [using mocPrecision]
Arguments
Name | Type | Description |
---|---|---|
bucket | bytes32 | Name of the bucket involved in the operation |
btcAmount | uint256 | Value of the operation from which calculates the inrate [using reservePrecision] |
onMinting | bool | Value that represents if the calculation is based on mint or on redeem |
returns the amount of BTC to pay in concept of interest to bucket C0
function dailyInrate() public view
returns(uint256)
Arguments
⤾ overrides IMoCInrate.calcMintInterestValues
Extract the inrate from the passed RBTC value for Bprox minting operation
⚠ 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 calcMintInterestValues(bytes32 bucket, uint256 rbtcAmount) public view
returns(uint256)
Returns
RBTC to pay in concept of interests [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
bucket | bytes32 | Bucket to use to calculate interés |
rbtcAmount | uint256 | Total value from which extract the interest rate [using reservePrecision] |
⤾ overrides IMoCInrate.calcDocRedInterestValues
Extract the inrate from the passed RBTC value for the Doc Redeem operation
function calcDocRedInterestValues(uint256 docAmount, uint256 rbtcAmount) public view
returns(uint256)
Returns
RBTC to pay in concept of interests [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
docAmount | uint256 | Doc amount of the redemption [using mocPrecision] |
rbtcAmount | uint256 | Total value from which extract the interest rate [using reservePrecision] |
⤾ overrides IMoCInrate.calcFinalRedeemInterestValue
This function calculates the interest to return to the user in a BPRox redemption. It uses a mechanism to counteract the effect of free docs redemption. It will be replaced with FreeDoC redemption interests in the future
⚠ 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 calcFinalRedeemInterestValue(bytes32 bucket, uint256 rbtcToRedeem) public view
returns(uint256)
Returns
RBTC to recover in concept of interests [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
bucket | bytes32 | Bucket to use to calculate interest |
rbtcToRedeem | uint256 | Total value from which calculate interest [using reservePrecision] |
⤾ overrides IMoCInrate.calcCommissionValue
calculates the Commission rate from the passed RBTC amount and the transaction type for mint/redeem operations
function calcCommissionValue(uint256 rbtcAmount, uint8 txType) public view
returns(uint256)
Returns
finalCommissionAmount [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
rbtcAmount | uint256 | Total value from which apply the Commission rate [using reservePrecision] |
txType | uint8 | Transaction type according to constant values defined in this contract |
DEPRECATED calculates the Commission rate from the passed RBTC amount for mint/redeem operations
function calcCommissionValue(uint256 rbtcAmount) external view
returns(uint256)
Returns
finalCommissionAmount [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
rbtcAmount | uint256 | Total value from which apply the Commission rate [using reservePrecision] |
⤾ overrides IMoCInrate.calculateVendorMarkup
calculates the vendor markup rate from the passed vendor account and amount
function calculateVendorMarkup(address vendorAccount, uint256 amount) public view
returns(markup uint256)
Returns
finalCommissionAmount [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
vendorAccount | address | Vendor address |
amount | uint256 | Total value from which apply the vendor markup rate [using reservePrecision] |
Calculates RBTC value to return to the user in concept of interests
function calcRedeemInterestValue(bytes32 bucket, uint256 rbtcToRedeem) public view
returns(uint256)
Returns
RBTC to recover in concept of interests [using reservePrecision]
Arguments
Name | Type | Description |
---|---|---|
bucket | bytes32 | Bucket to use to calculate interest |
rbtcToRedeem | uint256 | Total value from which calculate interest [using reservePrecision] |
⤾ overrides IMoCInrate.dailyInratePayment
Moves the daily amount of interest rate to C0 bucket
function dailyInratePayment() public nonpayable onlyWhitelisted onlyOnceADay
returns(uint256)
Arguments
⤾ overrides IMoCInrate.isDailyEnabled
function isDailyEnabled() public view
returns(bool)
Arguments
⤾ overrides IMoCInrate.isBitProInterestEnabled
function isBitProInterestEnabled() public view
returns(bool)
Arguments
⤾ overrides IMoCInrate.calculateBitProHoldersInterest
Calculates BitPro Holders interest rates
function calculateBitProHoldersInterest() public view
returns(uint256, uint256)
Returns
toPay interest in RBTC [using RBTCPrecsion]