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;