Skip to content
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

Delegation: allow validators to disable delegation #522

Open
cam-schultz opened this issue Sep 4, 2024 · 2 comments
Open

Delegation: allow validators to disable delegation #522

cam-schultz opened this issue Sep 4, 2024 · 2 comments
Labels

Comments

@cam-schultz
Copy link
Contributor

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:

  1. 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.).
  2. Keep the delegation logic in PoSValidatorManager, and enable/disable delegation with a constructor argument
  3. 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.

@geoff-vball
Copy link
Contributor

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.

@minghinmatthewlam minghinmatthewlam added audit scope Issues required as part of an upcoming audit scope and removed audit scope Issues required as part of an upcoming audit scope labels Sep 5, 2024
@cam-schultz
Copy link
Contributor Author

Delegation can be disabled currently by setting PoSValidatorManagerSettings.maximumStakeMultiplier = 0. This is obviously less clear than an explicit setting, but worth documenting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Backlog 🗄️
Development

No branches or pull requests

3 participants