MaverickV2IncentiveMatcher
Inherits: IMaverickV2IncentiveMatcher, ReentrancyGuard, Multicall
IncentiveMatcher contract is deployed along with a ve token by the ve token factory. This contract allows protocols to provide matching incentives to Maverick BPs and allows ve holders to vote their token to increase the match in a BP. IncentiveMatcher has a concept of a matching epoch and the following actors:
BP incentive adder
Matching budget adder
Voter
The lifecycle of an epoch is as follows:
Anytime before or during an epoch, any party can permissionlessly add a matching and/or voting incentive budget to an epoch. These incentives will boost incentives added to any BPs during the epoch.
During the epoch any party can permissionlessly add incentives to BPs. These incentives are eligible to be boosted through matching and voting.
During the voting portion of the epoch, any ve holder can cast their ve vote for eligible BPs.
At the end of the epoch, there is a vetoing period where any user who provided matching incentive budget can choose to veto a BP from being matched by their portion of the matching budget.
At the end of the vetoing period, the matching rewards are elgible for distribution. Any user can permissionlessly call
distribute
for a given BP and epoch. This call will compute the matching boost for the BP and then send the BP reward contract the matching amount, which will in turn distribute the reward to the BP LPs.
State Variables
EPOCH_PERIOD
This function retrieves the epoch period length.
PRE_VOTE_PERIOD
This function retrieves the period length of the epoch before voting starts. After an epoch begins, there is a window of time where voting is not possible which is the value this function returns.
VETO_PERIOD
This function retrieves the vetoing period length.
NOTIFY_PERIOD
The function retrieves the notify period length, which is the amount of time in seconds during which the matching reward will be distributed through the rewards contract.
baseToken
This function retrieves the base token used by the IncentiveMatcher contract.
factory
This function retrieves the address of the MaverickV2RewardFactory contract.
veToken
This function retrieves the address of the veToken contract.
hasVoted
This function checks if a specific user has voted in a particular epoch.
hasDistributed
This function checks if incentives have been distributed for a specific reward contract in an epoch.
hasVetoed
This function checks if a specific matcher has cast a veto on a reward contract for an epoch.
checkpoints
Functions
constructor
checkEpoch
Epoch Checkers and Helpers
checkpointRewardData
This function retrieves checkpoint data for a specific reward contract within an epoch.
Parameters
Returns
checkpointData
This function retrieves checkpoint data for a specific epoch.
Parameters
Returns
isEpoch
This function checks if a given epoch is valid.
Parameters
Returns
epochIsOver
This function checks if a specific epoch has ended.
Parameters
Returns
vetoingIsActive
This function checks if the vetoing period is active for a specific epoch.
Parameters
Returns
votingIsActive
This function checks if the voting period is active for a specific epoch.
Parameters
Returns
vetoingIsOver
This function checks if the vetoing period is over for a specific epoch.
Parameters
Returns
votingStart
Returns the timestamp when voting starts. This is also the voting snapshot timestamp where the voting power for users is determined for that epoch.
Parameters
epochEnd
This function calculates the end timestamp for a specific epoch.
Parameters
Returns
vetoingEnd
This function calculates the end timestamp for the vetoing period of a specific epoch.
Parameters
Returns
currentEpoch
This function retrieves the current epoch number.
Returns
lastEpoch
This function retrieves the number of the most recently completed epoch.
Returns
rewardHasVe
This function checks if a specific reward contract has a veToken staking option.
Parameters
Returns
_addBudget
User Actions
addMatchingBudget
This function allows adding a new budget to the matcher contract.
Parameters
addIncentives
This function allows adding a new incentive to the system.
Parameters
Returns
_inVetoPeriodCheck
_inVotePeriodCheck
vote
This function allows a user to cast a vote for specific reward contracts.
Parameters
veto
This function allows casting a veto on a specific reward contract for an epoch.
Parameters
Returns
_checkVetoPeriodEnded
distribute
This function allows distributing incentives for a specific reward contract in a particular epoch.
Parameters
Returns
rolloverExcessBudget
This function allows rolling over excess budget from a previous epoch to a new epoch.
Excess vote match budget amounts that have not been distributed will not rollover and will become permanently locked. To avoid this, a matcher should call distribute on all rewards contracts before calling rollover.
Parameters
Returns
Structs
MatchPair
CheckpointData
Last updated