diff --git a/src/commands/start_base.py b/src/commands/start_base.py index 694c4578..ee887ef8 100644 --- a/src/commands/start_base.py +++ b/src/commands/start_base.py @@ -18,9 +18,8 @@ from src.validators.execution import NetworkValidatorsProcessor from src.validators.keystores.base import BaseKeystore from src.validators.keystores.load import load_keystore -from src.validators.relayer import BaseRelayerClient +from src.validators.relayer import BaseRelayerClient, RelayerClient from src.validators.tasks import ValidatorsTask, load_genesis_validators -from src.validators.tests.local_relayer import create_local_relayer from src.validators.typings import DepositData, ValidatorsRegistrationMode from src.validators.utils import load_deposit_data @@ -51,9 +50,7 @@ async def start_base() -> None: deposit_data = load_deposit_data(settings.vault, settings.deposit_data_file) logger.info('Loaded deposit data file %s', settings.deposit_data_file) else: - # todo: replace with actual RelayerClient once Relayer service is ready - settings.pool_size = 2 - relayer = await create_local_relayer() + relayer = RelayerClient() # start operator tasks diff --git a/src/validators/signing/validators_manager.py b/src/validators/signing/validators_manager.py deleted file mode 100644 index 9e4f71a4..00000000 --- a/src/validators/signing/validators_manager.py +++ /dev/null @@ -1,51 +0,0 @@ -from typing import Sequence - -from eth_account.messages import encode_typed_data -from eth_typing import HexStr -from web3 import Web3 - -from src.common.contracts import validators_registry_contract -from src.common.wallet import hot_wallet -from src.config.settings import settings -from src.validators.typings import DepositDataValidator - - -async def get_validators_manager_signature(validators: Sequence[DepositDataValidator]) -> HexStr: - validators_registry_root = await validators_registry_contract.get_registry_root() - - encoded_validators = [_encode_validator(v) for v in validators] - - full_message = { - 'primaryType': 'VaultValidators', - 'types': { - 'VaultValidators': [ - {'name': 'validatorsRegistryRoot', 'type': 'bytes32'}, - {'name': 'validators', 'type': 'bytes'}, - ], - }, - 'domain': { - 'name': 'VaultValidators', - 'version': '1', - 'chainId': settings.network_config.CHAIN_ID, - 'verifyingContract': settings.vault, - }, - 'message': { - 'validatorsRegistryRoot': validators_registry_root, - 'validators': b''.join(encoded_validators), - }, - } - - encoded_message = encode_typed_data(full_message=full_message) - signed_msg = hot_wallet.sign_message(encoded_message) - - return HexStr(signed_msg.signature.hex()) - - -def _encode_validator(v: DepositDataValidator) -> bytes: - return b''.join( - [ - Web3.to_bytes(hexstr=v.public_key), - Web3.to_bytes(hexstr=v.signature), - Web3.to_bytes(hexstr=v.deposit_data_root), - ] - ) diff --git a/src/validators/tests/local_relayer.py b/src/validators/tests/local_relayer.py deleted file mode 100644 index f4607f0f..00000000 --- a/src/validators/tests/local_relayer.py +++ /dev/null @@ -1,61 +0,0 @@ -from src.config.settings import settings -from src.validators.database import NetworkValidatorCrud -from src.validators.keystores.local import LocalKeystore -from src.validators.relayer import BaseRelayerClient -from src.validators.signing.validators_manager import get_validators_manager_signature -from src.validators.typings import ( - DepositData, - DepositDataValidator, - RelayerValidator, - RelayerValidatorsResponse, -) -from src.validators.utils import load_deposit_data - - -class LocalRelayerClient(BaseRelayerClient): - def __init__(self, keystore: LocalKeystore, deposit_data: DepositData): - super().__init__() - self._keystore = keystore - self._deposit_data = deposit_data - - async def get_validators(self, start_index: int, count: int) -> RelayerValidatorsResponse: - deposit_data_validators: list[DepositDataValidator] = [] - - for dv in self._deposit_data.validators: - if len(deposit_data_validators) == count: - break - if not NetworkValidatorCrud().is_validator_registered(dv.public_key): - deposit_data_validators.append(dv) - - fork = settings.network_config.SHAPELLA_FORK - - relayer_validators = [] - validator_indexes = range(start_index, start_index + count) - for validator_index, validator in zip(validator_indexes, deposit_data_validators): - exit_signature = await self._keystore.get_exit_signature( - validator_index=validator_index, - public_key=validator.public_key, - fork=fork, - ) - relayer_validators.append( - RelayerValidator( - public_key=validator.public_key, - signature=validator.signature, - amount_gwei=validator.amount_gwei, - exit_signature=exit_signature, - ) - ) - - validators_manager_signature = await get_validators_manager_signature( - deposit_data_validators - ) - return RelayerValidatorsResponse( - validators=relayer_validators, - validators_manager_signature=validators_manager_signature, - ) - - -async def create_local_relayer() -> LocalRelayerClient: - keystore = await LocalKeystore.load() - deposit_data = load_deposit_data(settings.vault, settings.deposit_data_file) - return LocalRelayerClient(keystore, deposit_data)