You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Context and scope
Validators should have the option to not allow delegators, such that the only possible way to change their weight is by exiting the validator set, setting it to 0.
Discussion and alternatives
There are a handful of ways this could be done:
Put all of the delegation logic into an extension to PoSValidatorManager, called PoSValidatorManagerDelegatable. This would provide good logic separation at the source code level, but would also increase the total number of contracts in the repo that perform similar functions (e.g. NativeTokenStakingManager, NativeTokenStakingManagerDelegatable, etc.).
Keep the delegation logic in PoSValidatorManager, and enable/disable delegation with a constructor argument
Add a parameter to initializeValidatorRegistration that allows the validator to specify whether it should accept delegations
Open questions
Options 1 & 2 above allow for delegations to be disabled by the deployer. Option 3 leaves that up to the validator. These seem like they could be separate use cases, so we should decide what exactly we want to support.
The text was updated successfully, but these errors were encountered:
I definitely don't like the idea of adding another contract to the inheritance graph.
I think we should do option 2, as well as some variant of option 3. I'm still of the mind that validators should be able to change their delegation fee on the fly, with the fee the delegator pays being whatever the validator's fee was when they initially delegated. Right now a validator will have to end their entire delegation in order to change their fee, which could have bad consequences if there's some sort of race to the bottom for fees.
Delegation can be disabled currently by setting PoSValidatorManagerSettings.maximumStakeMultiplier = 0. This is obviously less clear than an explicit setting, but worth documenting.
Context and scope
Validators should have the option to not allow delegators, such that the only possible way to change their weight is by exiting the validator set, setting it to 0.
Discussion and alternatives
There are a handful of ways this could be done:
PoSValidatorManager
, calledPoSValidatorManagerDelegatable
. This would provide good logic separation at the source code level, but would also increase the total number of contracts in the repo that perform similar functions (e.g.NativeTokenStakingManager
,NativeTokenStakingManagerDelegatable
, etc.).PoSValidatorManager
, and enable/disable delegation with a constructor argumentinitializeValidatorRegistration
that allows the validator to specify whether it should accept delegationsOpen questions
Options 1 & 2 above allow for delegations to be disabled by the deployer. Option 3 leaves that up to the validator. These seem like they could be separate use cases, so we should decide what exactly we want to support.
The text was updated successfully, but these errors were encountered: