RateLimiter
You can use this control numeric limits over a period using timestamp.
RATE_LIMIT_SETTER_ROLE​
bytes32 RATE_LIMIT_SETTER_ROLE
USED_RATE_LIMIT_RESETTER_ROLE​
bytes32 USED_RATE_LIMIT_RESETTER_ROLE
periodInSeconds​
uint256 periodInSeconds
limitInWei​
uint256 limitInWei
currentPeriodEnd​
uint256 currentPeriodEnd
The time at which the current period ends at.
Public for ease of consumption.
currentPeriodAmountInWei​
uint256 currentPeriodAmountInWei
Amounts already withdrawn this period.
Public for ease of consumption.
__RateLimiter_init​
function __RateLimiter_init(uint256 _periodInSeconds, uint256 _limitInWei) internal
Initialises the limits and period for the rate limiter.
Parameters​
Name | Type | Description |
---|---|---|
_periodInSeconds | uint256 | The length of the period in seconds. |
_limitInWei | uint256 | The limit allowed in the period in Wei. |
_addUsedAmount​
function _addUsedAmount(uint256 _usedAmount) internal
Increments the amount used in the period.
_The amount determining logic is external to this (e.g. fees are included when calling here). Ignores the calculation if usedAmount is zero. Reverts if the limit is breached.
Parameters​
Name | Type | Description |
---|---|---|
_usedAmount | uint256 | The amount used to be added. |
resetRateLimitAmount​
function resetRateLimitAmount(uint256 _amount) external
Resets the rate limit amount.
If the used amount is higher, it is set to the limit to avoid confusion/issues. Only the RATE_LIMIT_SETTER_ROLE is allowed to execute this function. Emits the LimitAmountChanged event. usedLimitAmountToSet will use the default value of zero if period has expired.
Parameters​
Name | Type | Description |
---|---|---|
_amount | uint256 | The amount to reset the limit to. |
resetAmountUsedInPeriod​
function resetAmountUsedInPeriod() external
Resets the amount used to zero.
Only the USED_RATE_LIMIT_RESETTER_ROLE is allowed to execute this function. Emits the AmountUsedInPeriodReset event.