Remove Validator
Learn how to remove validators from your Avalanche L1 blockchain.
Remove a Validator
Validator exit is initiated with a call to initializeEndValidation
on the ValidatorManager
. Only the validator owner may initiate exit. For PoSValidatorManagers
a ValidationUptimeMessage
Warp message may optionally be provided in order to calculate the staking rewards; otherwise the latest received uptime will be used (see (PoS only) Submit an Uptime Proof). This proof may be requested directly from the L1 validators, which will provide it in a ValidationUptimeMessage
Warp message. If the uptime is not sufficient to earn validation rewards, the call to initializeEndValidation
will fail. forceInitializeEndValidation
acts the same as initializeEndValidation
, but bypasses the uptime-based rewards check. Once initializeEndValidation
or forceInitializeEndValidation
is called, staking rewards cease accruing for PoSValidatorManagers
.
The ValidatorManager
constructs an L1ValidatorWeightMessage
Warp message with the weight set to 0
. This is delivered to the P-Chain as the payload of a SetL1ValidatorWeightTx
. The P-Chain acknowledges the validator exit by signing an L1ValidatorRegistrationMessage
with valid=0
, which is delivered to the ValidatorManager
by calling completeEndValidation
. The validation is removed from the contract's state, and for PoSValidatorManagers
, staking rewards are disbursed and stake is returned.
Disable a Validator Directly on the P-Chain
ACP-77 also provides a method to disable a validator without interacting with the L1 directly. The P-Chain transaction DisableL1ValidatorTx
disables the validator on the P-Chain. The disabled validator's weight will still count towards the L1's total weight.
Disabled L1 validators can re-activate at any time by increasing their balance with an IncreaseBalanceTx
. Anyone can call IncreaseBalanceTx
for any validator on the P-Chain. A disabled validator can only be completely and permanently removed from the validator set by a call to initializeEndValidation
.
(PoS only) Remove a Delegator
Delegators removal may be initiated by calling initializeEndDelegation
, as long as churn restrictions are not violated. Similar to initializeEndValidation
, an uptime proof may be provided to be used to determine delegator rewards eligibility. If no proof is provided, the latest known uptime will be used (see (PoS only) Submit an Uptime Proof). The validator's weight is updated on the P-Chain by the same mechanism used to register a delegator. The L1ValidatorWeightMessage
from the P-Chain is delivered to the PoSValidatorManager
in the call to completeEndDelegation
.
Either the delegator owner or the validator owner may initiate removing a delegator. This is to prevent the validator from being unable to remove itself due to churn limitations if it has too high a proportion of the Subnet's total weight due to delegator additions. The validator owner may only remove Delegators after the minimum stake duration has elapsed.
(PoS only) Collect Staking Rewards
Submit an Uptime Proof
The rewards calculator is a function of uptime seconds since the validator's start time. In addition to doing so in the calls to initializeEndValidation
and initializeEndDelegation
as described above, uptime proofs may also be supplied by calling submitUptimeProof
. Unlike initializeEndValidation
and initializeEndDelegation
, submitUptimeProof
may be called by anyone, decreasing the likelihood of a validation or delegation not being able to claim rewards that it deserved based on its actual uptime.
Validation Rewards
Validation rewards are distributed in the call to completeEndValidation
.
Delegation Rewards
Delegation rewards are distributed in the call to completeEndDelegation
.
Delegation Fees
Delegation fees owed to validators are not distributed when the validation ends as to bound the amount of gas consumed in the call to completeEndValidation
. Instead, claimDelegationFees
may be called after the validation is completed.
Last updated on