Skip to main content

VaultValidators

Git Source ↗

Inherits: VaultImmutables, Initializable ↗, ReentrancyGuardUpgradeable ↗, VaultAdmin, VaultState, IVaultValidators

Defines the validators functionality for the Vault

State Variables​

_depositDataRegistry​

Note: oz-upgrades-unsafe-allow: state-variable-immutable

address private immutable _depositDataRegistry

_initialChainId​

Note: oz-upgrades-unsafe-allow: state-variable-immutable

uint256 private immutable _initialChainId

_validatorsRegistry​

Note: oz-upgrades-unsafe-allow: state-variable-immutable

address internal immutable _validatorsRegistry

_validatorsWithdrawals​

Note: oz-upgrades-unsafe-allow: state-variable-immutable

address private immutable _validatorsWithdrawals

_validatorsConsolidations​

Note: oz-upgrades-unsafe-allow: state-variable-immutable

address private immutable _validatorsConsolidations

_consolidationsChecker​

Note: oz-upgrades-unsafe-allow: state-variable-immutable

address private immutable _consolidationsChecker

__deprecated__validatorsRoot​

deprecated. Deposit data management is moved to DepositDataRegistry contract

bytes32 private __deprecated__validatorsRoot

__deprecated__validatorIndex​

deprecated. Deposit data management is moved to DepositDataRegistry contract

uint256 private __deprecated__validatorIndex

validatorsManager​

The Vault validators manager address

address public override validatorsManager

_initialDomainSeparator​

bytes32 private _initialDomainSeparator

v2Validators​

mapping(bytes32 publicKeyHash => bool isRegistered) public override v2Validators

validatorsManagerNonce​

The nonce for the validators manager used for signing

uint256 public override validatorsManagerNonce

__gap​

This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps

uint256[47] private __gap

Functions​

constructor​

Constructor

Since the immutable variable value is stored in the bytecode, its value would be shared among all proxies pointing to a given contract instead of each proxy’s storage.

Note: oz-upgrades-unsafe-allow: constructor

constructor(
address depositDataRegistry,
address validatorsRegistry,
address validatorsWithdrawals,
address validatorsConsolidations,
address consolidationsChecker
) ;

Parameters

NameTypeDescription
depositDataRegistryaddressThe address of the deposit data registry contract
validatorsRegistryaddressThe contract address used for registering validators in beacon chain
validatorsWithdrawalsaddressThe contract address used for withdrawing validators in beacon chain
validatorsConsolidationsaddressThe contract address used for consolidating validators in beacon chain
consolidationsCheckeraddressThe contract address used for verifying consolidation approvals

registerValidators​

Function for registering single or multiple validators

function registerValidators(
IKeeperValidators.ApprovalParams calldata keeperParams,
bytes calldata validatorsManagerSignature
) external override;

Parameters

NameTypeDescription
keeperParamsIKeeperValidators.ApprovalParamsThe parameters for getting approval from Keeper oracles
validatorsManagerSignaturebytesThe optional signature from the validators manager

fundValidators​

Function for funding single or multiple existing validators

function fundValidators(bytes calldata validators, bytes calldata validatorsManagerSignature) external override;

Parameters

NameTypeDescription
validatorsbytesThe concatenated validators data
validatorsManagerSignaturebytesThe optional signature from the validators manager

withdrawValidators​

Function for withdrawing single or multiple validators

function withdrawValidators(bytes calldata validators, bytes calldata validatorsManagerSignature)
external
payable
override
nonReentrant;

Parameters

NameTypeDescription
validatorsbytesThe concatenated validators data
validatorsManagerSignaturebytesThe optional signature from the validators manager

consolidateValidators​

Function for consolidating single or multiple validators

function consolidateValidators(
bytes calldata validators,
bytes calldata validatorsManagerSignature,
bytes calldata oracleSignatures
) external payable override nonReentrant;

Parameters

NameTypeDescription
validatorsbytesThe concatenated validators data
validatorsManagerSignaturebytesThe optional signature from the validators manager
oracleSignaturesbytesThe optional signatures from the oracles

setValidatorsManager​

Function for updating the validators manager. Can only be called by the admin. Default is the DepositDataRegistry contract.

function setValidatorsManager(address _validatorsManager) external virtual override;

Parameters

NameTypeDescription
_validatorsManageraddressThe new validators manager address

_registerValidators​

Internal function for registering validators

function _registerValidators(ValidatorUtils.ValidatorDeposit[] memory deposits) internal virtual;

Parameters

NameTypeDescription
depositsValidatorUtils.ValidatorDeposit[]The validators registration data

_isValidatorsManager​

Internal function for checking whether the caller is the validators manager. If the valid signature is provided, update the nonce.

function _isValidatorsManager(bytes calldata validators, bytes32 nonce, bytes calldata validatorsManagerSignature)
internal
returns (bool);

Parameters

NameTypeDescription
validatorsbytesThe concatenated validators data
noncebytes32The nonce of the signature
validatorsManagerSignaturebytesThe optional signature from the validators manager

Returns

NameTypeDescription
<none>booltrue if the caller is the validators manager

_computeVaultValidatorsDomain​

Computes the hash of the EIP712 typed data

This function is used to compute the hash of the EIP712 typed data

function _computeVaultValidatorsDomain() private view returns (bytes32);

Returns

NameTypeDescription
<none>bytes32The hash of the EIP712 typed data

__VaultValidators_upgrade​

Upgrades the VaultValidators contract

function __VaultValidators_upgrade() internal onlyInitializing;

__VaultValidators_init​

Initializes the VaultValidators contract

function __VaultValidators_init() internal onlyInitializing;

__VaultValidators_init_common​

Common initialization for gas optimization

function __VaultValidators_init_common() private;