From fbe9beb18d5bb43f0508fe3df97962acf2504f87 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Thu, 13 Jul 2023 17:19:42 +0200 Subject: [PATCH] fix: improve error logging of voluntary-exit command (#5756) * fix: improve error logging of voluntary-exit command * Update packages/cli/src/cmds/validator/voluntaryExit.ts Co-authored-by: Phil Ngo <58080811+philknows@users.noreply.github.com> --------- Co-authored-by: Phil Ngo <58080811+philknows@users.noreply.github.com> --- .../validator/keymanager/decryptKeystoreDefinitions.ts | 4 ++++ packages/cli/src/cmds/validator/voluntaryExit.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/cmds/validator/keymanager/decryptKeystoreDefinitions.ts b/packages/cli/src/cmds/validator/keymanager/decryptKeystoreDefinitions.ts index e712459bf695..2901fd6cdfb5 100644 --- a/packages/cli/src/cmds/validator/keymanager/decryptKeystoreDefinitions.ts +++ b/packages/cli/src/cmds/validator/keymanager/decryptKeystoreDefinitions.ts @@ -28,6 +28,10 @@ export async function decryptKeystoreDefinitions( keystoreDefinitions: LocalKeystoreDefinition[], opts: KeystoreDecryptOptions ): Promise { + if (keystoreDefinitions.length === 0) { + return []; + } + if (opts.cacheFilePath) { try { const signers = await loadKeystoreCache(opts.cacheFilePath, keystoreDefinitions); diff --git a/packages/cli/src/cmds/validator/voluntaryExit.ts b/packages/cli/src/cmds/validator/voluntaryExit.ts index 666003604576..4eb4c5b9a019 100644 --- a/packages/cli/src/cmds/validator/voluntaryExit.ts +++ b/packages/cli/src/cmds/validator/voluntaryExit.ts @@ -33,7 +33,7 @@ If no `pubkeys` are provided, it will exit all validators that have been importe examples: [ { - command: "validator voluntary-exit --pubkeys 0xF00", + command: "validator voluntary-exit --network goerli --pubkeys 0xF00", description: "Perform a voluntary exit for the validator who has a public key 0xF00", }, ], @@ -78,6 +78,11 @@ If no `pubkeys` are provided, it will exit all validators that have been importe // Select signers to exit const signers = await getSignersFromArgs(args, network, {logger: console, signal: new AbortController().signal}); + if (signers.length === 0) { + throw new YargsError(`No local keystores found with current args. + Ensure --dataDir and --network match values used when importing keys via validator import + or alternatively, import keys by providing --importKeystores arg to voluntary-exit command.`); + } const signersToExit = selectSignersToExit(args, signers); const validatorsToExit = await resolveValidatorIndexes(client, signersToExit); @@ -153,7 +158,8 @@ async function resolveValidatorIndexes(client: Api, signersToExit: SignerLocalPu return signersToExit.map(({signer, pubkey}) => { const item = dataByPubkey.get(pubkey); if (!item) { - throw Error(`beacon node did not return status for pubkey ${pubkey}`); + throw new YargsError(`Validator with pubkey ${pubkey} is unknown. + Re-check the pubkey submitted or wait until the validator is activated on the beacon chain to voluntary exit.`); } return {