-
Notifications
You must be signed in to change notification settings - Fork 418
feat: incentives update #1214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
feat: incentives update #1214
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
needs comments, fixes, etc at the moment this just a start on several inflation + incentives related ideas
ProgrammaticIncentivesConfig now has significantly more functionality RewardAllStakersDistributor added, which programmatically distributes EIGEN incentives via minting new EIGEN tokens and calling the RewardsCoordinator.createRewardsForAllEarners(...) function top-level explanatory comments added to most contracts
- add access control hierarchy to TokenInflationNexus -- owner > streamCreator > substream edit access - define NormalizedStream struct + add related functions to StreamMath lib - it's likely possible to redefine structs to unify this library more / deduplicate functions. I suspect this will be unsustainable in its current state.
remove many of the older ideas, and begin work on interface definition updates
- absorb bulk of TokenInflationNexus into ProgrammaticIncentivesConfig - single inflationary stream with fixed rate matching current rate - associated interface changes
needs comments, fixes, etc at the moment this just a start on several inflation + incentives related ideas
ProgrammaticIncentivesConfig now has significantly more functionality RewardAllStakersDistributor added, which programmatically distributes EIGEN incentives via minting new EIGEN tokens and calling the RewardsCoordinator.createRewardsForAllEarners(...) function top-level explanatory comments added to most contracts
- add access control hierarchy to TokenInflationNexus -- owner > streamCreator > substream edit access - define NormalizedStream struct + add related functions to StreamMath lib - it's likely possible to redefine structs to unify this library more / deduplicate functions. I suspect this will be unsustainable in its current state.
remove many of the older ideas, and begin work on interface definition updates
- absorb bulk of TokenInflationNexus into ProgrammaticIncentivesConfig - single inflationary stream with fixed rate matching current rate - associated interface changes
…/eigenlayer-contracts into feat-incentives-update
rename: stream.lastUpdated => stream.lastUpdatedTimestamp change the usage to be a timestamp (i.e. measured in seconds) instead of measured in terms of TIMESCALE this should eliminate a potential source of confusion
adds a bit of complexity but deals with cases where a TIMESCALE is 'missed' also provides a route for having the initial distribution stretch into the past / start at a definite time in the future, if so desired
- reduces the validation needed in the sidecar - new IncentivesDistributed event also added - new PAUSED_INCENTIVES_DISTRIBUTION flag implemented
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
This is a draft PR outlining possible incentives-related changes for a significant incentives system revamp.
There are two main goals with the chosen direction:
The first iteration of Programmatic Incentives achieved a few goals. It is extremely simple, with essentially no governance overhead, while incentivizing staking in and acting as an Operator within EigenLayer.
However, it is maximally inflexible, necessitating action on the level of a smart contract upgrade (or at minimum, new deployment and multisig + timelock actions) to make any modifications. The next iteration of Programmatic Incentives aims to insert flexibility in the appropriate places. In particular:
This PR is somewhat of a thought exercise / for illustrative purposes, and not necessarily intended to be an end-product.
At the time of being opened (March 5, 2025) it lacks all testing and contains notable TODOs.
Modifications:
We introduce a governed and fairly flexible on-chain structure for managing changes to incentives which involve solely shifting the balance of incentives distributions, i.e. for driving additional or fewer incentives toward specific staked tokens or towards a specific substream of incentives (which is distributed according to existing programmatic logic).
Additionally, minor, flexible interface and logic changes are made to RewardsCoordinator, to enable medium-complexity changes which introduce new types of incentives distribution logic to be accomplished primarily via a minor Sidecar release, and no longer necessitate a core smart contract upgrade. As part of this update, the Sidecar will need to index and process new events emitted by the RewardsCoorindator.
The primary new contract is the ProgrammaticIncentivesConfig, which will allow the Incentives Council to:
Result:
This proposes a serious overhaul to the PI system. See above for more details :)