Multivault
- Updated the
OperatorConfig
class to support multivault setup. Removedvault_dir
and replaced it withdata_dir
. Movedkeystores_dir
andkeystores_password_file
properties toOperatorConfig
. OperatorConfig
is now loaded via the newload_operator_config
function.
No More Deposit Data File
- Removed
deposit_data_file
from settings. Removedwait_for_deposit_data_file
from startup checks. - Added the
get_deposit_data
method to theBaseKeystore
class. Keystores should now return a signed deposit data dictionary. - Vault contract functions now can only be called by an address with the
validatorsManager
role or by providing a validvalidators_manager_signature
Start Command Refactoring
- Split the
start
command into multiple commands based on keystore type:start_local
,start_hashi_vault
,start_remote_signer
, andstart_relayer
. - Removed
start_api
; usestart_relayer
instead. - Moved the common start functionality to the
commands/start/base.py
module. This includes bootstrapping the operator and starting main periodic tasks:ValidatorTask
,ExitSignatureTask
,MetricsTask
,WalletTask
,HarvestTask
, andSplitRewardTask
.
ValidatorTask Refactoring
- Refactored
ValidatorTask
to runscan_validators_events
and two subtasks:ValidatorRegistrationSubtask
(formerlyValidatorTask
) andValidatorWithdrawalSubtask
.
Updated Startup Checks
- Added
check_vault_version
to ensure the operator supports only vaults with the Pectra version. - Updated
check_validators_manager
to verify the operator wallet in all modes.
Database Update
- Added new tables to store vault-registered validator public keys:
<network_name>_vaults
:
vault_address VARCHAR(42) UNIQUE NOT NULL
checkpoint_validators INTEGER NOT NULL
checkpoint_v2_validators INTEGER NOT NULL
<network_name>_vault_validators
:
vault_address VARCHAR(42) NOT NULL
public_key VARCHAR(98) UNIQUE NOT NULL
block_number INTEGER NOT NULL
Pectra Upgrade Support
ValidatorRegistrationSubtask
- Added the
validator-type
option to specify the type of validators to register. By default, the operator registers new 0x02 validators. - Funds compounding validators if possible; otherwise, registers new validators up to the maximum balance via
register_new_validators
. - Transactions are sent via
fund_validators
andregister_validators
functions.
Withdrawals
- Added the
ValidatorWithdrawalSubtask
class, which calculates the amount of ETH/GNO in the queue usingget_queued_assets
and creates withdrawal transactions. Withdrawal amounts are calculated in_get_withdrawals
. First, all available ETH/GNO for partial withdrawals is withdrawn, followed by full validator withdrawals. - Transactions are submitted via
submit_withdraw_validators
. Transaction fees (tx_fee
) are estimated using theValidatorsCheckerContract
.
Commands Update
- Added the new
consolidate
command to consolidate current 0x01 validators. - Updated the
exit-validators
command to support validator exits via the withdrawal queue. Exits are now triggered viasubmit_withdraw_validators
. - Removed
get_validators_root
,import_genesis_keys
, andmerge_deposit_data
. - Renamed
rated_self_report
tosubmit_rated_network
andvalidators_exit
toexit_validators
.
Oracles
- Moved all oracle-related functions to the
oracles.py
file. - Added
poll_consolidation_signature
to fetch consolidation oracle signatures from the oracle. - Added a new endpoint,
consolidate-validators/
, to support consolidation.