-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Questions about get_justification_and_finalization_deltas #882
Comments
There was an explicit intention that validators that are inactive but have been slashed are "eligible" to receive penalties. I suppose the idea is that we can remove that condition because we've replaced the withdrawal queue with an exit queue? If so, I would disagree, because being slashed also means you are put into a waiting period for 36 days, during which the intent is that you suffer offline penalties and additionally in the middle of this period suffer a penalty proportional to the number of other validators that have been slashed within 18 days of yourself in either direction. |
The goal here is that if a majority coalition is censoring more than 1/3, its chance to earn any validator profits is taken away in order to penalize it.
Doing it based on previous epoch does seem correct; can change.
Now that I think about it this may be worth removing; we can just adjust the inactivity penalty quotient as needed later.
This seems weird; I think +0 is fine.
Let's rethink the reward coefficients after we nail down the beacon slot / shard slot / min attestation inclusion relationship? We also need to think about crosslink rewards. |
To recap, there are the slashing-specific penalties:
My gut feel is that 1), 2), 3) combined is sufficiently harsh. (And as you say, 4) is partially covered by 3).) For simplicity, removing 4) also allows us to replace the following 7 lines of code with just 1. (It also removes the mismatch between
What about
👍 |
The goal is to prevent self-slashing from being a way to escape if you are being censored. If you do that, and you do that before everyone else, then (2) is tiny and (3) is tiny, so we need (4). In the normal case, 36 days of inactivity penalty is only ~0.5% of your balance; it's not a very large penalty. |
The problem with that approach is that it takes away the incentive to perform well. The effect of the current code is that your net reward is exactly 0 if you do everything perfectly, and goes negative otherwise. If we just do |
Although these numbers are the same, I don't think the numbers actually should be coupled. You can tune the |
The idea here is that during an inactivity penalty leak, if you are performing optimally, you do not make or lose any money. |
Closing in favour of #949 :) |
// 2
quotient inINACTIVITY_PENALTY_QUOTIENT // 2
(as part ofget_inactivity_penalty
)?adjusted_quotient // 5
beadjusted_quotient // 4
?MAX_BASE_REWARDS_PER_EPOCH
constant?epochs_since_finality > 4
corresponds to the maximum age of a source epoch that can be used for finality? (Specifically, the finality condition being "The 2nd/3rd/4th most recent epochs are all justified, the 2nd using the 4th as source".) Should we create aMAX_SOURCE_EPOCH_AGE_FOR_FINALITY
(or better named) constant?eligible_validators
? Specifically, can we remove thevalidator.slashed and current_epoch < validator.withdrawable_epoch
condition and useget_active_validator_indices
instead? (See also Question about eligible validators in rewards/penalties processing #857.)get_justification_and_finalization_deltas
are relative to the previous epoch. (This includesboundary_attestations
,boundary_attesting_balance
,total_balance
,total_attesting_balance
,matching_head_attestations
, etc.) The only exception iseligible_validators
which is defined relative tocurrent_epoch
. Is this mismatch necessary?get_inactivity_penalty
not sufficient?+ 1
(as opposed to+ 0
or- 1
) inepochs_since_finality
?The text was updated successfully, but these errors were encountered: