Ejector
Ejector is a supplementary contract that triggers validator exits through Lido's TriggerableWithdrawalsGateway (TWG) using EIP-7002 execution-layer withdrawal requests. It supports voluntary ejections initiated by Node Operators and forced ejections initiated by ValidatorStrikes for validators that have exceeded the strike threshold.
Upgradability​
The contract is immutable.
State Variables​
MODULE​
IBaseModule public immutable MODULE
STRIKES​
address public immutable STRIKES
stakingModuleId​
uint256 public stakingModuleId
Functions​
onlyStrikes​
modifier onlyStrikes() ;
constructor​
constructor(address module, address strikes, address admin) ;
voluntaryEject​
Request triggerable full withdrawals for Node Operator validator keys
Called by the node operator
function voluntaryEject(uint256 nodeOperatorId, uint256[] calldata keyIndices, address refundRecipient)
external
payable
whenResumed;
Parameters
| Name | Type | Description |
|---|---|---|
nodeOperatorId | uint256 | ID of the Node Operator |
keyIndices | uint256[] | Array of indices of the keys to withdraw |
refundRecipient | address | Address to send the refund to |
ejectBadPerformer​
Eject Node Operator's key as a bad performer
Called by the ValidatorStrikes contract.
See ValidatorStrikes.processBadPerformanceProof to use this method permissionless
function ejectBadPerformer(uint256 nodeOperatorId, uint256 keyIndex, address refundRecipient)
external
payable
whenResumed
onlyStrikes;
Parameters
| Name | Type | Description |
|---|---|---|
nodeOperatorId | uint256 | ID of the Node Operator |
keyIndex | uint256 | Index of deposited key to eject |
refundRecipient | address | Address to send the refund to |
triggerableWithdrawalsGateway​
TriggerableWithdrawalsGateway implementation used by the contract.
function triggerableWithdrawalsGateway() public view returns (ITriggerableWithdrawalsGateway);
_getOrCacheStakingModuleId​
function _getOrCacheStakingModuleId() internal returns (uint256 moduleId);
_msgSenderIfEmpty​
function _msgSenderIfEmpty(address input) internal view returns (address);
_onlyStrikes​
function _onlyStrikes() internal view;
_onlyNodeOperatorOwner​
Verifies that the sender is the owner of the node operator
function _onlyNodeOperatorOwner(uint256 nodeOperatorId) internal view;
_onlyRecoverer​
function _onlyRecoverer() internal view override;
__checkRole​
function __checkRole(bytes32 role) internal view override;