github stakewise/v3-operator v4.0.0.a

pre-releaseone day ago

Multivault

  • Updated the OperatorConfig class to support multivault setup. Removed vault_dir and replaced it with data_dir. Moved keystores_dir and keystores_password_file properties to OperatorConfig.
  • OperatorConfig is now loaded via the new load_operator_config function.

No More Deposit Data File

  • Removed deposit_data_file from settings. Removed wait_for_deposit_data_file from startup checks.
  • Added the get_deposit_data method to the BaseKeystore 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 valid validators_manager_signature

Start Command Refactoring

  • Split the start command into multiple commands based on keystore type: start_local, start_hashi_vault, start_remote_signer, and start_relayer.
  • Removed start_api; use start_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, and SplitRewardTask.

ValidatorTask Refactoring

  • Refactored ValidatorTask to run scan_validators_events and two subtasks: ValidatorRegistrationSubtask (formerly ValidatorTask) and ValidatorWithdrawalSubtask.

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 and register_validators functions.

Withdrawals

  • Added the ValidatorWithdrawalSubtask class, which calculates the amount of ETH/GNO in the queue using get_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 the ValidatorsCheckerContract.

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 via submit_withdraw_validators.
  • Removed get_validators_root, import_genesis_keys, and merge_deposit_data.
  • Renamed rated_self_report to submit_rated_network and validators_exit to exit_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.

Don't miss a new v3-operator release

NewReleases is sending notifications on new releases.