MoCInrate
View Source: contracts/MoCInrate.sol
↗ Extends: MoCInrateEvents, MoCInrateStructs, MoCBase, MoCLibConnection, Governed, IMoCInrate
MoCInrate - version: 0.1.12
Structs
InrateParams
struct InrateParams {
uint256 tMax,
uint256 tMin,
uint256 power
}
InitializeParams
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
}
Contract Members
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;
InrateDailyPay
Parameters
amount
uint256
daysToSettlement
uint256
nReserveBucketC0
uint256
RiskProHoldersInterestPay
Parameters
amount
uint256
nReserveBucketC0BeforePay
uint256
Modifiers
onlyOnceADay
modifier onlyOnceADay() internal
Arguments
onlyWhenBitProInterestsIsEnabled
modifier onlyWhenBitProInterestsIsEnabled() internal
Arguments
Functions
setDoCTmin
function setDoCTmin(uint256 _docTmin) public nonpayable onlyAuthorizedChanger
Arguments
_docTmin
uint256
setDoCTmax
function setDoCTmax(uint256 _docTmax) public nonpayable onlyAuthorizedChanger
Arguments
_docTmax
uint256
setDoCPower
function setDoCPower(uint256 _docPower) public nonpayable onlyAuthorizedChanger
Arguments
_docPower
uint256
getDoCTmin
function getDoCTmin() public view
returns(uint256)
Arguments
getDoCTmax
function getDoCTmax() public view
returns(uint256)
Arguments
getDoCPower
function getDoCPower() public view
returns(uint256)
Arguments
docInrateAvg
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
docRedeem
uint256
Docs to redeem [using mocPrecision]
initialize
Initializes the contract
function initialize(struct MoCInrateStructs.InitializeParams params) public nonpayable initializer
Arguments
params
struct MoCInrateStructs.InitializeParams
Params defined in InitializeParams struct
getBtcxTmin
gets tMin param of BTCX tokens
function getBtcxTmin() public view
returns(uint256)
Returns
returns tMin of BTCX
Arguments
getBtcxTmax
gets tMax param of BTCX tokens
function getBtcxTmax() public view
returns(uint256)
Returns
returns tMax of BTCX
Arguments
getBtcxPower
gets power param of BTCX tokens
function getBtcxPower() public view
returns(uint256)
Returns
returns power of BTCX
Arguments
getBitProInterestBlockSpan
⤾ 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
setBtcxTmin
sets tMin param of BTCX tokens
function setBtcxTmin(uint256 _btxcTmin) public nonpayable onlyAuthorizedChanger
Arguments
_btxcTmin
uint256
tMin of BTCX
setBtcxTmax
sets tMax param of BTCX tokens
function setBtcxTmax(uint256 _btxcTax) public nonpayable onlyAuthorizedChanger
Arguments
_btxcTax
uint256
tMax of BTCX
setBtcxPower
sets power param of BTCX tokens
function setBtcxPower(uint256 _btxcPower) public nonpayable onlyAuthorizedChanger
Arguments
_btxcPower
uint256
power of BTCX
getBitProRate
⤾ overrides IMoCInrate.getBitProRate
Gets the rate for BitPro Holders
function getBitProRate() public view
returns(uint256)
Returns
BitPro Rate
Arguments
setBitProRate
Sets BitPro Holders rate
function setBitProRate(uint256 newBitProRate) public nonpayable onlyAuthorizedChanger
Arguments
newBitProRate
uint256
New BitPro rate
setBitProInterestBlockSpan
⤾ overrides IMoCInrate.setBitProInterestBlockSpan
Sets the blockspan BitPro Intereset rate payment is enable to be executed
function setBitProInterestBlockSpan(uint256 newBitProBlockSpan) public nonpayable onlyAuthorizedChanger
Arguments
newBitProBlockSpan
uint256
New BitPro Block span
getBitProInterestAddress
⤾ 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
setBitProInterestAddress
Sets the target address to transfer BitPro Holders rate
function setBitProInterestAddress(address payable newBitProInterestAddress) public nonpayable onlyAuthorizedChanger
Arguments
newBitProInterestAddress
address payable
New BitPro rate
setCommissionsAddress
Sets the target address to transfer commissions of Mint/Redeem transactions
function setCommissionsAddress(address payable newCommissionsAddress) public nonpayable onlyAuthorizedChanger
Arguments
newCommissionsAddress
address payable
New commisions address
spotInrate
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
btcxInrateAvg
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
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
dailyInrate
returns the amount of BTC to pay in concept of interest to bucket C0
function dailyInrate() public view
returns(uint256)
Arguments
calcMintInterestValues
⤾ 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
bucket
bytes32
Bucket to use to calculate interés
rbtcAmount
uint256
Total value from which extract the interest rate [using reservePrecision]
calcDocRedInterestValues
⤾ 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
docAmount
uint256
Doc amount of the redemption [using mocPrecision]
rbtcAmount
uint256
Total value from which extract the interest rate [using reservePrecision]
calcFinalRedeemInterestValue
⤾ 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
bucket
bytes32
Bucket to use to calculate interest
rbtcToRedeem
uint256
Total value from which calculate interest [using reservePrecision]
calcCommissionValue
⤾ 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
rbtcAmount
uint256
Total value from which apply the Commission rate [using reservePrecision]
txType
uint8
Transaction type according to constant values defined in this contract
calcCommissionValue
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
rbtcAmount
uint256
Total value from which apply the Commission rate [using reservePrecision]
calculateVendorMarkup
⤾ 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
vendorAccount
address
Vendor address
amount
uint256
Total value from which apply the vendor markup rate [using reservePrecision]
calcRedeemInterestValue
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
bucket
bytes32
Bucket to use to calculate interest
rbtcToRedeem
uint256
Total value from which calculate interest [using reservePrecision]
dailyInratePayment
⤾ overrides IMoCInrate.dailyInratePayment
Moves the daily amount of interest rate to C0 bucket
function dailyInratePayment() public nonpayable onlyWhitelisted onlyOnceADay
returns(uint256)
Arguments
isDailyEnabled
⤾ overrides IMoCInrate.isDailyEnabled
function isDailyEnabled() public view
returns(bool)
Arguments
isBitProInterestEnabled
⤾ overrides IMoCInrate.isBitProInterestEnabled
function isBitProInterestEnabled() public view
returns(bool)
Arguments
calculateBitProHoldersInterest
⤾ overrides IMoCInrate.calculateBitProHoldersInterest
Calculates BitPro Holders interest rates
function calculateBitProHoldersInterest() public view
returns(uint256, uint256)
Returns
toPay interest in RBTC [using RBTCPrecsion]
Arguments
payBitProHoldersInterestPayment
⤾ overrides IMoCInrate.payBitProHoldersInterestPayment
Pays the BitPro Holders interest rates
function payBitProHoldersInterestPayment() public nonpayable onlyWhitelisted onlyWhenBitProInterestsIsEnabled
returns(uint256)
Returns
interest payed in RBTC [using RBTCPrecsion]
Arguments
setCommissionRateByTxType
Sets the commission rate to a particular transaction type
function setCommissionRateByTxType(uint8 txType, uint256 value) public nonpayable onlyAuthorizedChanger
Arguments
txType
uint8
Transaction type according to constant values defined in this contract
value
uint256
Commission rate
inrateToSettlement
Calculates the interest rate to pay until the settlement day
function inrateToSettlement(uint256 inrate, bool countAllDays) internal view
returns(uint256)
Returns
Interest rate value [using RatePrecsion]
Arguments
inrate
uint256
Spot interest rate
countAllDays
bool
Value that represents if the calculation will use all days or one day less
calcProportionalInterestValue
This function calculates the interest to return to a user redeeming BTCx as a proportion of the amount in the interestBag.
function calcProportionalInterestValue(bytes32 bucket, uint256 redeemInterest) internal view
returns(uint256)
Returns
InterestsInBag * (RedeemInterests / FullRedeemInterest) [using reservePrecision]
Arguments
bucket
bytes32
Bucket to use to calculate interest
redeemInterest
uint256
Total value from which calculate interest [using reservePrecision]
calcFullRedeemInterestValue
This function calculates the interest to return if a user redeem all Btcx in existance
function calcFullRedeemInterestValue(bytes32 bucket) internal view
returns(uint256)
Returns
Interests [using reservePrecision]
Arguments
bucket
bytes32
Bucket to use to calculate interest
simulateDocMovement
Calculates the final amount of Bucket 0 DoCs on BProx mint/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 simulateDocMovement(bytes32 bucket, uint256 btcAmount, bool onMinting) internal view
returns(uint256)
Returns
Final bucket 0 Doc amount
Arguments
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
inrateDayCount
Returns the days to use for interests calculation
function inrateDayCount(bool countAllDays) internal view
returns(uint256)
Returns
days [using dayPrecision]
Arguments
countAllDays
bool
Value that represents if the calculation is based on mint or on redeem
initializeContracts
Initialize the contracts with which it interacts
function initializeContracts() internal nonpayable
Arguments
initializeValues
Initialize the parameters of the contract
function initializeValues(address _governor, uint256 btcxMin, uint256 btcxPower, uint256 btcxMax, uint256 _bitProRate, address payable commissionsAddressTarget, uint256 blockSpanBitPro, address payable bitProInterestsTarget, uint256 _docTmin, uint256 _docPower, uint256 _docTmax) internal nonpayable
Arguments
_governor
address
the address of the IGovernor contract
btcxMin
uint256
Minimum interest rate [using mocPrecision]
btcxPower
uint256
Power is a parameter for interest rate calculation [using noPrecision]
btcxMax
uint256
Maximun interest rate [using mocPrecision]
_bitProRate
uint256
BitPro holder interest rate [using mocPrecision]
commissionsAddressTarget
address payable
blockSpanBitPro
uint256
BitPro blockspan to configure payments periods[using mocPrecision]
bitProInterestsTarget
address payable
Target address to transfer the weekly BitPro holders interest
_docTmin
uint256
_docPower
uint256
_docTmax
uint256
Last updated