-
Notifications
You must be signed in to change notification settings - Fork 295
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
staking: rework the unbonding delay mechanism #3738
Comments
we'll want to rely completely on block count to prevent time manipulation. |
The intuition behind "block height is harder to manipulate than BFT time" is that in one case, a (right?) |
Moved to backlog for PTO reasons |
Close #3738, this PR makes the unbonding mechanism based on block delay rather than epochs. In practice, this means that a user will wait X blocks for a validator pool to unbond (rather than Y epochs). To achieve this, this PR: - defines `StakeParamater::unbonding_delay` measured in blocks - parameterize unbonding tokens based on a `start_height` - deprecate `start_epoch_index` fields in delegate/claim actions - strip `epoch_index` from validator `RateData`s - generalize the unbonding token denom format: `2.013718unbonding_start_at_1540_penumbravalid1` (vs. `_epoch_XXX`) Important point about the mechanism: we bind tokens to the starting height of the epoch that they belong to. This let us avoid binding transactions to specific block heights.
Is your feature request related to a problem? Please describe.
Delegation pools follow an unbonding schedule determined by the chain to provide a window of opportunity for the consensus layer to propagate evidence of misbehavior (e.g., validator equivocation) back to the application so that it can be punished by the staking component ("byzantine slashing").
Currently, the unbonding schedule is defined in terms of epochs (
StakingParameters::unbonding_epochs
) that must elapse before an undelegation can be claimed or for a pool to becomeUnbonded
.However, since changes in the active validator set trigger epoch changes, it is possible for a consortium of active-set validators to expedite the unbonding period (in terms of the wall clock) by forcing early epoch changes.
Potential solution.
X blocks must have elapsed AND Y hours
)** Other solutions you have considered **
unbonding_duration
chain parameterThe text was updated successfully, but these errors were encountered: