OCE_ZVE.sol
OCE -> On-Chain Emissions ($ZVE, Exponential Decay)
Last updated
OCE -> On-Chain Emissions ($ZVE, Exponential Decay)
Last updated
Zivoe Finance - Official Documentation
This contract facilitates an exponential decay emissions schedule for $ZVE.
This contract has the following responsibilities:
Handles accounting (with governable variables) to support emissions schedule.
Forwards $ZVE to all ZivoeRewards contracts at will (stZVE, stSTT, stJTT).
Type | Name | Description |
---|---|---|
address | GBL | The ZivoeGlobals contract. |
uint256 | exponentialDecayPerSecond | The rate of decay per second. |
uint256 | lastDistribution | The block.timestamp value of last distribution. |
uint256[3] | distributionRatioBIPS | Determines distribution between rewards contract, in BIPS.
|
uint256 | BIPS | Private constant, |
uint256 | RAY | Private constant, |
canPush() - Permission for owner to call pushToLocker()
. See ZivoeLocker.sol
canPull() - Permission for owner to call pullFromLocker()
. See ZivoeLocker.sol
canPullPartial() - Permission for owner to call pullFromLockerPartial()
. See ZivoeLocker.sol
decay() - Returns the amount remaining after a decay.
rmul() - Multiplies two variables and returns value, truncated by RAY precision.
rpow() - rpow(uint256 x, uint256 n, uint256 b)
, used for exponentiation in drip
pushToLocker() - Allocates ZVE from the DAO to this locker for emissions.
forwardEmissions() - Forwards $ZVE available for distribution.
updateDistributionRatioBIPS() - Updates the distribution between rewards contract, in BIPS.
updateExponentialDecayPerSecond() - Updates the exponentialDecayPerSecond variable with provided input.
canPush()
Permission for owner to call pushToLocker()
. See ZivoeLocker.sol
canPull()
Permission for owner to call pullFromLocker()
. See ZivoeLocker.sol
canPullPartial()
Permission for owner to call pullFromLockerPartial()
. See ZivoeLocker.sol
decay()
Returns the amount remaining after a decay.
Type | Name | Description |
---|---|---|
uint256 | top | The amount decaying. |
uint256 | dur | The seconds of decay. |
Returns
Type | Name | Description |
---|---|---|
uint256 |
| The amount remaining after a decay. |
rmul()
Multiplies two variables and returns value, truncated by RAY precision.
Type | Name | Description |
---|---|---|
uint256 | x | First value to multiply. |
uint256 | y | Second value to multiply. |
Returns
Type | Name | Description |
---|---|---|
uint256 | z | Resulting value of x * y, truncated by RAY precision. |
rpow()
rpow(uint256 x, uint256 n, uint256 b)
, used for exponentiation in drip, is a fixed-point arithmetic function that raises x to the power n. It is implemented in Solidity assembly as a repeated squaring algorithm. x and the returned value are to be interpreted as fixed-point integers with scaling factor b. For example, if b == 100, this specifies two decimal digits of precision and the normal decimal value 2.1 would be represented as 210; rpow(210, 2, 100) returns 441 (the two-decimal digit fixed-point representation of 2.1^2 = 4.41). In the current implementation, 10^27 is passed for b, making x and the rpow result both of type RAY in standard MCD fixed-point terminology. rpow's formal invariants include "no overflow" as well as constraints on gas usage.
Type | Name | Description |
---|---|---|
uint256 | x | The base value. |
uint256 | n | The power to raise "x" by. |
uint256 | b | The scaling factor, a.k.a. resulting precision of "z". |
Returns
Type | Name | Description |
---|---|---|
uint256 | z | Resulting value of x^n, scaled by factor b. |
pushToLocker()
Allocates ZVE from the DAO to this locker for emissions.
Type | Name | Description |
---|---|---|
address | asset | The asset to push to this locker (in this case $ZVE). |
uint256 | amount | The amount of $ZVE to push to this locker. |
bytes | data | Accompanying transaction data. |
forwardEmissions()
Forwards $ZVE available for distribution.
Emits the EmissionsForwarded() event.
updateDistributionRatioBIPS()
Updates the distribution between rewards contract, in BIPS.
Type | Name | Description |
---|---|---|
uint256[3] | _distributionRatioBIPS | The updated values for the state variable distributionRatioBIPS. |
Emits the UpdatedDistributionRatioBIPS() event.
updateExponentialDecayPerSecond()
Updates the exponentialDecayPerSecond variable with provided input.
Type | Name | Description |
---|---|---|
uint256 | _exponentialDecayPerSecond | The updated value for exponentialDecayPerSecond state variable. |
Emits the UpdatedExponentialDecayPerSecond() event.
UpdatedDistributionRatioBIPS()
Emitted during updateDistributionRatioBIPS()
Type | Indexed | Name | Description |
---|---|---|---|
uint256[3] | False | oldRatios | The old distribution ratios. |
uint256[3] | False | newRatios | The new distribution ratios. |
EmissionsForwarded()
Emitted during forwardEmissions()
Type | Indexed | Name | Description |
---|---|---|---|
uint256 | False | stZVE | The amount of $ZVE emitted to the $ZVE rewards contract. |
uint256 | False | stJTT | The amount of $ZVE emitted to the $zJTT rewards contract. |
uint256 | False | stSTT | The amount of $ZVE emitted to the $zSTT rewards contract. |
UpdatedExponentialDecayPerSecond()
Emitted during updateExponentialDecayPerSecond()
Type | Indexed | Name | Description |
---|---|---|---|
uint256 | False | oldValue | The old value of exponentialDecayPerSecond. |
uint256 | False | newValue | The new value of exponentialDecayPerSecond. |