-
Notifications
You must be signed in to change notification settings - Fork 359
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
feat: operator set centric rewards #998
Conversation
OperatorSet calldata operatorSet, | ||
uint16 split | ||
) external onlyWhenNotPaused(PAUSED_OPERATOR_SET_OPERATOR_SPLIT) checkCanCall(operator) { | ||
require(allocationManager.isOperatorSet(operatorSet), InvalidOperatorSet()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So something to think about here. Does it make sense to check if an operatorSet is valid here. Can it change for future durations or even retroactive durations? What if an operator wants to change their split for some existing reward that has a future payment but the operator set is not longer valid.
cc: @ypatil12
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There isn't a way to delete operatorSets & the opSet reward is (currently) retroactive, so this would come down to setting a split before the opSet exists. If we were to add the prospective opSet rewards then I think this would make sense to revisit
|
||
emit OperatorPISplitBipsSet(msg.sender, operator, activatedAt, oldSplit, split); | ||
} | ||
|
||
/// @inheritdoc IRewardsCoordinator | ||
function setOperatorDirectedOperatorSetSplit( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to clarify, in the sidecar is the level of prescedence:
- operatorSet split
if not set, then - avs split
if not set, then - default
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
^ this is the case of calculating the split for an operator receiving a directed submission
7cfa2d2
to
c24ffde
Compare
need to update gap |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor comments
OperatorSet calldata operatorSet, | ||
uint16 split | ||
) external onlyWhenNotPaused(PAUSED_OPERATOR_SET_OPERATOR_SPLIT) checkCanCall(operator) { | ||
require(allocationManager.isOperatorSet(operatorSet), InvalidOperatorSet()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There isn't a way to delete operatorSets & the opSet reward is (currently) retroactive, so this would come down to setting a split before the opSet exists. If we were to add the prospective opSet rewards then I think this would make sense to revisit
d7be43c
to
951d422
Compare
722b3d8
to
97ff835
Compare
feat: operator centric rewards feat: add new interfaces feat(wip): implement `createOperatorSetPerformanceRewardsSubmission` chore: forge fmt fix: compile feat(wip): implement `setOperatorSetOperatorSplit` fix: review changes fix: add missing `onlyWhenPaused` + `checkCanCall` feat(wip): add missing `getOperatorSetPerformanceSplit` + rename internals test(wip): `setOperatorSetPerformanceSplit` test(wip): `createOperatorSetPerformanceRewardsSubmission` - some failing chore: forge fmt refactor: renaming chore: storage report refactor: review changes refactor: review changes fix: gap refactor: review changes
97ff835
to
4d83695
Compare
Slashing Rewards Updates - notion