Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: improve error logging of voluntary-exit command #5756

Merged
merged 2 commits into from
Jul 13, 2023

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Jul 13, 2023

Motivation

Closes #4540 and addresses error logging UX issues mentioned in #4540 (comment).

Description

  • Better logging for exit-validator if key is not yet activated on beacon chain
  • Throw error (exit early) with detailed message if there are no imported keys
  • Stop printing out progress indicator if there are no keystores

This should address most of the confusion around why voluntary-exit does not work

Error logging

No local keystores

> ./lodestar validator voluntary-exit
 ✖ 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.

Unknown pubkey (not found in local signers)

> ./lodestar validator voluntary-exit --importKeystores /path/to/validator_keys --pubkeys aa8bcc77b45f58769c29671547294ea49cd505519aa2be0be8dc46df0c14e35e07689f732ca06723b6fcd5cc03b83d9e
? Enter the keystore(s) password [hidden]
100% of keystores imported. current=1 total=1 rate=387.10keys/m
Loaded keystores via keystore cache
 ✖ Unknown pubkey 0xaa8bcc77b45f58769c29671547294ea49cd505519aa2be0be8dc46df0c14e35e07689f732ca06723b6fcd5cc03b83d9e

Validator with pubkey is unknown (not found in beacon state)

> ./lodestar validator voluntary-exit --importKeystores /path/to/validator_keys
? Enter the keystore(s) password [hidden]
100% of keystores imported. current=1 total=1 rate=19.07keys/m
Written keystores to keystore cache
 ✖ Validator with pubkey 0xb7387f7bb5fe95e5b976bbb877972926df099f092438aa2e2d57278b25dee66d1c3c96212540f0f4b5db7643e236cdcd is unknown.
   Re-check the pubkey submitted or wait until the validator activated on the beacon chain to voluntary exit.

@nflaig nflaig requested a review from a team as a code owner July 13, 2023 13:01
@@ -28,6 +28,10 @@ export async function decryptKeystoreDefinitions(
keystoreDefinitions: LocalKeystoreDefinition[],
opts: KeystoreDecryptOptions
): Promise<SignerLocal[]> {
if (keystoreDefinitions.length === 0) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This prevents printing out meaningless progress indicator

100% of local keystores imported. current=0 total=0 rate=0.00keys/m
Loaded keystores via keystore cache

@@ -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",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aligned with validator-import command and makes it more apparent that this command is network specific

@nflaig nflaig added this to the v1.10.0 milestone Jul 13, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Jul 13, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 4566aac Previous: 3921c2f Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 729.66 us/op 596.05 us/op 1.22
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 48.495 us/op 52.526 us/op 0.92
BLS verify - blst-native 1.2488 ms/op 1.2637 ms/op 0.99
BLS verifyMultipleSignatures 3 - blst-native 2.5464 ms/op 2.5600 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst-native 5.4881 ms/op 5.4010 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst-native 19.834 ms/op 19.769 ms/op 1.00
BLS aggregatePubkeys 32 - blst-native 26.737 us/op 26.316 us/op 1.02
BLS aggregatePubkeys 128 - blst-native 109.11 us/op 102.88 us/op 1.06
getAttestationsForBlock 63.985 ms/op 60.027 ms/op 1.07
isKnown best case - 1 super set check 272.00 ns/op 255.00 ns/op 1.07
isKnown normal case - 2 super set checks 268.00 ns/op 250.00 ns/op 1.07
isKnown worse case - 16 super set checks 264.00 ns/op 250.00 ns/op 1.06
CheckpointStateCache - add get delete 5.9230 us/op 5.7780 us/op 1.03
validate gossip signedAggregateAndProof - struct 2.8589 ms/op 2.8305 ms/op 1.01
validate gossip attestation - struct 1.3584 ms/op 1.3418 ms/op 1.01
pickEth1Vote - no votes 1.3736 ms/op 1.3787 ms/op 1.00
pickEth1Vote - max votes 10.382 ms/op 10.543 ms/op 0.98
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.4718 ms/op 9.3105 ms/op 1.02
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.141 ms/op 15.240 ms/op 1.06
pickEth1Vote - Eth1Data fastSerialize value x2048 787.51 us/op 773.04 us/op 1.02
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.8337 ms/op 4.9691 ms/op 0.97
bytes32 toHexString 556.00 ns/op 518.00 ns/op 1.07
bytes32 Buffer.toString(hex) 368.00 ns/op 352.00 ns/op 1.05
bytes32 Buffer.toString(hex) from Uint8Array 589.00 ns/op 561.00 ns/op 1.05
bytes32 Buffer.toString(hex) + 0x 413.00 ns/op 352.00 ns/op 1.17
Object access 1 prop 0.19300 ns/op 0.18200 ns/op 1.06
Map access 1 prop 0.17400 ns/op 0.17000 ns/op 1.02
Object get x1000 6.8330 ns/op 6.7360 ns/op 1.01
Map get x1000 0.62700 ns/op 0.62500 ns/op 1.00
Object set x1000 58.541 ns/op 54.446 ns/op 1.08
Map set x1000 48.168 ns/op 44.700 ns/op 1.08
Return object 10000 times 0.24950 ns/op 0.23650 ns/op 1.05
Throw Error 10000 times 4.3319 us/op 4.2448 us/op 1.02
fastMsgIdFn sha256 / 200 bytes 3.5860 us/op 3.5220 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 319.00 ns/op 288.00 ns/op 1.11
fastMsgIdFn h64 xxhash / 200 bytes 450.00 ns/op 420.00 ns/op 1.07
fastMsgIdFn sha256 / 1000 bytes 12.083 us/op 11.794 us/op 1.02
fastMsgIdFn h32 xxhash / 1000 bytes 448.00 ns/op 432.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 1000 bytes 531.00 ns/op 492.00 ns/op 1.08
fastMsgIdFn sha256 / 10000 bytes 107.35 us/op 104.32 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 2.0160 us/op 1.9530 us/op 1.03
fastMsgIdFn h64 xxhash / 10000 bytes 1.4480 us/op 1.3560 us/op 1.07
enrSubnets - fastDeserialize 64 bits 1.4890 us/op 1.3120 us/op 1.13
enrSubnets - ssz BitVector 64 bits 559.00 ns/op 480.00 ns/op 1.16
enrSubnets - fastDeserialize 4 bits 204.00 ns/op 177.00 ns/op 1.15
enrSubnets - ssz BitVector 4 bits 523.00 ns/op 488.00 ns/op 1.07
prioritizePeers score -10:0 att 32-0.1 sync 2-0 109.01 us/op 104.54 us/op 1.04
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 153.62 us/op 140.17 us/op 1.10
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 189.43 us/op 171.70 us/op 1.10
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 358.19 us/op 311.22 us/op 1.15
prioritizePeers score 0:0 att 64-1 sync 4-1 437.97 us/op 374.03 us/op 1.17
array of 16000 items push then shift 1.7401 us/op 1.6918 us/op 1.03
LinkedList of 16000 items push then shift 9.5950 ns/op 8.9800 ns/op 1.07
array of 16000 items push then pop 108.02 ns/op 95.626 ns/op 1.13
LinkedList of 16000 items push then pop 9.2980 ns/op 8.7790 ns/op 1.06
array of 24000 items push then shift 2.4772 us/op 2.3895 us/op 1.04
LinkedList of 24000 items push then shift 10.176 ns/op 9.0990 ns/op 1.12
array of 24000 items push then pop 90.378 ns/op 81.253 ns/op 1.11
LinkedList of 24000 items push then pop 9.0880 ns/op 8.7110 ns/op 1.04
intersect bitArray bitLen 8 14.843 ns/op 13.325 ns/op 1.11
intersect array and set length 8 103.33 ns/op 78.146 ns/op 1.32
intersect bitArray bitLen 128 47.831 ns/op 44.280 ns/op 1.08
intersect array and set length 128 1.2777 us/op 1.0741 us/op 1.19
Buffer.concat 32 items 3.0330 us/op 2.9910 us/op 1.01
Uint8Array.set 32 items 2.5410 us/op 2.4040 us/op 1.06
transfer serialized Status (84 B) 2.1520 us/op 2.1330 us/op 1.01
copy serialized Status (84 B) 1.7250 us/op 1.7900 us/op 0.96
transfer serialized SignedVoluntaryExit (112 B) 2.1900 us/op 2.3100 us/op 0.95
copy serialized SignedVoluntaryExit (112 B) 1.7500 us/op 1.8580 us/op 0.94
transfer serialized ProposerSlashing (416 B) 2.3450 us/op 2.5670 us/op 0.91
copy serialized ProposerSlashing (416 B) 2.1940 us/op 2.5570 us/op 0.86
transfer serialized Attestation (485 B) 2.4800 us/op 2.8580 us/op 0.87
copy serialized Attestation (485 B) 2.4060 us/op 3.1900 us/op 0.75
transfer serialized AttesterSlashing (33232 B) 3.1660 us/op 3.3790 us/op 0.94
copy serialized AttesterSlashing (33232 B) 6.7700 us/op 7.1820 us/op 0.94
transfer serialized Small SignedBeaconBlock (128000 B) 3.5160 us/op 3.4630 us/op 1.02
copy serialized Small SignedBeaconBlock (128000 B) 14.436 us/op 15.510 us/op 0.93
transfer serialized Avg SignedBeaconBlock (200000 B) 3.8170 us/op 3.6990 us/op 1.03
copy serialized Avg SignedBeaconBlock (200000 B) 20.524 us/op 42.316 us/op 0.49
transfer serialized BlobsSidecar (524380 B) 3.5110 us/op 3.7620 us/op 0.93
copy serialized BlobsSidecar (524380 B) 156.29 us/op 150.75 us/op 1.04
transfer serialized Big SignedBeaconBlock (1000000 B) 3.8330 us/op 3.8460 us/op 1.00
copy serialized Big SignedBeaconBlock (1000000 B) 260.12 us/op 284.29 us/op 0.91
pass gossip attestations to forkchoice per slot 2.7426 ms/op 2.7246 ms/op 1.01
forkChoice updateHead vc 100000 bc 64 eq 0 2.0817 ms/op 2.1283 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 11.869 ms/op 12.155 ms/op 0.98
forkChoice updateHead vc 1000000 bc 64 eq 0 21.323 ms/op 22.722 ms/op 0.94
forkChoice updateHead vc 600000 bc 320 eq 0 17.546 ms/op 16.480 ms/op 1.06
forkChoice updateHead vc 600000 bc 1200 eq 0 85.275 ms/op 85.527 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 1000 20.973 ms/op 21.022 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 10000 24.464 ms/op 22.570 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 300000 30.181 ms/op 28.980 ms/op 1.04
computeDeltas 3.5404 ms/op 3.3748 ms/op 1.05
computeProposerBoostScoreFromBalances 1.8527 ms/op 1.7956 ms/op 1.03
altair processAttestation - 250000 vs - 7PWei normalcase 3.6422 ms/op 2.3024 ms/op 1.58
altair processAttestation - 250000 vs - 7PWei worstcase 4.0033 ms/op 3.4486 ms/op 1.16
altair processAttestation - setStatus - 1/6 committees join 157.92 us/op 152.85 us/op 1.03
altair processAttestation - setStatus - 1/3 committees join 294.61 us/op 296.10 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 395.64 us/op 375.52 us/op 1.05
altair processAttestation - setStatus - 2/3 committees join 488.36 us/op 486.85 us/op 1.00
altair processAttestation - setStatus - 4/5 committees join 693.30 us/op 675.89 us/op 1.03
altair processAttestation - setStatus - 100% committees join 809.05 us/op 805.02 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 20.989 ms/op 18.166 ms/op 1.16
altair processBlock - 250000 vs - 7PWei normalcase hashState 28.247 ms/op 27.043 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase 59.188 ms/op 50.814 ms/op 1.16
altair processBlock - 250000 vs - 7PWei worstcase hashState 79.125 ms/op 65.905 ms/op 1.20
phase0 processBlock - 250000 vs - 7PWei normalcase 3.1304 ms/op 2.0943 ms/op 1.49
phase0 processBlock - 250000 vs - 7PWei worstcase 38.151 ms/op 29.043 ms/op 1.31
altair processEth1Data - 250000 vs - 7PWei normalcase 731.72 us/op 499.63 us/op 1.46
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 10.872 us/op 7.2960 us/op 1.49
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 33.234 us/op 23.556 us/op 1.41
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 13.833 us/op 9.2540 us/op 1.49
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 11.567 us/op 7.0390 us/op 1.64
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 117.28 us/op 87.963 us/op 1.33
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 862.00 us/op 638.44 us/op 1.35
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.1184 ms/op 892.83 us/op 1.25
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.0395 ms/op 860.20 us/op 1.21
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.4331 ms/op 2.3166 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.8931 ms/op 1.7845 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.5331 ms/op 3.9587 ms/op 1.15
Tree 40 250000 create 371.81 ms/op 325.19 ms/op 1.14
Tree 40 250000 get(125000) 202.11 ns/op 188.95 ns/op 1.07
Tree 40 250000 set(125000) 1.0808 us/op 994.61 ns/op 1.09
Tree 40 250000 toArray() 22.738 ms/op 22.488 ms/op 1.01
Tree 40 250000 iterate all - toArray() + loop 23.337 ms/op 21.821 ms/op 1.07
Tree 40 250000 iterate all - get(i) 81.764 ms/op 75.262 ms/op 1.09
MutableVector 250000 create 12.620 ms/op 10.806 ms/op 1.17
MutableVector 250000 get(125000) 6.6890 ns/op 6.4050 ns/op 1.04
MutableVector 250000 set(125000) 276.00 ns/op 275.17 ns/op 1.00
MutableVector 250000 toArray() 3.7585 ms/op 3.2814 ms/op 1.15
MutableVector 250000 iterate all - toArray() + loop 3.9243 ms/op 2.9261 ms/op 1.34
MutableVector 250000 iterate all - get(i) 1.6365 ms/op 1.5076 ms/op 1.09
Array 250000 create 3.7067 ms/op 3.0934 ms/op 1.20
Array 250000 clone - spread 1.1240 ms/op 1.3271 ms/op 0.85
Array 250000 get(125000) 0.58900 ns/op 0.65600 ns/op 0.90
Array 250000 set(125000) 0.67100 ns/op 0.73700 ns/op 0.91
Array 250000 iterate all - loop 114.28 us/op 113.03 us/op 1.01
effectiveBalanceIncrements clone Uint8Array 300000 33.513 us/op 39.763 us/op 0.84
effectiveBalanceIncrements clone MutableVector 300000 359.00 ns/op 434.00 ns/op 0.83
effectiveBalanceIncrements rw all Uint8Array 300000 181.73 us/op 169.87 us/op 1.07
effectiveBalanceIncrements rw all MutableVector 300000 90.429 ms/op 87.425 ms/op 1.03
phase0 afterProcessEpoch - 250000 vs - 7PWei 121.70 ms/op 113.35 ms/op 1.07
phase0 beforeProcessEpoch - 250000 vs - 7PWei 45.122 ms/op 33.858 ms/op 1.33
altair processEpoch - mainnet_e81889 352.22 ms/op 305.06 ms/op 1.15
mainnet_e81889 - altair beforeProcessEpoch 70.693 ms/op 67.179 ms/op 1.05
mainnet_e81889 - altair processJustificationAndFinalization 17.240 us/op 32.006 us/op 0.54
mainnet_e81889 - altair processInactivityUpdates 6.0646 ms/op 5.2188 ms/op 1.16
mainnet_e81889 - altair processRewardsAndPenalties 74.702 ms/op 52.769 ms/op 1.42
mainnet_e81889 - altair processRegistryUpdates 3.3590 us/op 7.1860 us/op 0.47
mainnet_e81889 - altair processSlashings 516.00 ns/op 844.00 ns/op 0.61
mainnet_e81889 - altair processEth1DataReset 815.00 ns/op 562.00 ns/op 1.45
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6050 ms/op 1.2260 ms/op 1.31
mainnet_e81889 - altair processSlashingsReset 6.7860 us/op 4.6070 us/op 1.47
mainnet_e81889 - altair processRandaoMixesReset 7.5350 us/op 4.4220 us/op 1.70
mainnet_e81889 - altair processHistoricalRootsUpdate 1.2480 us/op 770.00 ns/op 1.62
mainnet_e81889 - altair processParticipationFlagUpdates 5.4550 us/op 2.2860 us/op 2.39
mainnet_e81889 - altair processSyncCommitteeUpdates 979.00 ns/op 851.00 ns/op 1.15
mainnet_e81889 - altair afterProcessEpoch 132.65 ms/op 127.23 ms/op 1.04
phase0 processEpoch - mainnet_e58758 406.47 ms/op 371.56 ms/op 1.09
mainnet_e58758 - phase0 beforeProcessEpoch 158.62 ms/op 142.35 ms/op 1.11
mainnet_e58758 - phase0 processJustificationAndFinalization 18.009 us/op 17.546 us/op 1.03
mainnet_e58758 - phase0 processRewardsAndPenalties 69.904 ms/op 62.793 ms/op 1.11
mainnet_e58758 - phase0 processRegistryUpdates 11.037 us/op 9.2260 us/op 1.20
mainnet_e58758 - phase0 processSlashings 992.00 ns/op 641.00 ns/op 1.55
mainnet_e58758 - phase0 processEth1DataReset 730.00 ns/op 616.00 ns/op 1.19
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.4343 ms/op 1.0083 ms/op 1.42
mainnet_e58758 - phase0 processSlashingsReset 4.5580 us/op 4.3190 us/op 1.06
mainnet_e58758 - phase0 processRandaoMixesReset 5.2390 us/op 4.4750 us/op 1.17
mainnet_e58758 - phase0 processHistoricalRootsUpdate 972.00 ns/op 808.00 ns/op 1.20
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.5950 us/op 4.1460 us/op 1.11
mainnet_e58758 - phase0 afterProcessEpoch 100.54 ms/op 98.705 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3867 ms/op 1.2623 ms/op 1.10
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.8021 ms/op 1.5717 ms/op 1.15
altair processInactivityUpdates - 250000 normalcase 24.234 ms/op 26.619 ms/op 0.91
altair processInactivityUpdates - 250000 worstcase 26.525 ms/op 27.586 ms/op 0.96
phase0 processRegistryUpdates - 250000 normalcase 8.0320 us/op 7.7780 us/op 1.03
phase0 processRegistryUpdates - 250000 badcase_full_deposits 319.84 us/op 267.46 us/op 1.20
phase0 processRegistryUpdates - 250000 worstcase 0.5 130.17 ms/op 110.42 ms/op 1.18
altair processRewardsAndPenalties - 250000 normalcase 67.126 ms/op 73.759 ms/op 0.91
altair processRewardsAndPenalties - 250000 worstcase 69.683 ms/op 70.289 ms/op 0.99
phase0 getAttestationDeltas - 250000 normalcase 7.7062 ms/op 7.0277 ms/op 1.10
phase0 getAttestationDeltas - 250000 worstcase 8.2034 ms/op 7.1454 ms/op 1.15
phase0 processSlashings - 250000 worstcase 3.5929 ms/op 3.7047 ms/op 0.97
altair processSyncCommitteeUpdates - 250000 186.51 ms/op 187.08 ms/op 1.00
BeaconState.hashTreeRoot - No change 347.00 ns/op 330.00 ns/op 1.05
BeaconState.hashTreeRoot - 1 full validator 55.301 us/op 53.408 us/op 1.04
BeaconState.hashTreeRoot - 32 full validator 630.05 us/op 489.80 us/op 1.29
BeaconState.hashTreeRoot - 512 full validator 6.5547 ms/op 6.1766 ms/op 1.06
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 68.113 us/op 63.084 us/op 1.08
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 933.33 us/op 932.62 us/op 1.00
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.407 ms/op 13.111 ms/op 0.95
BeaconState.hashTreeRoot - 1 balances 56.249 us/op 47.054 us/op 1.20
BeaconState.hashTreeRoot - 32 balances 442.81 us/op 456.75 us/op 0.97
BeaconState.hashTreeRoot - 512 balances 4.8710 ms/op 4.4614 ms/op 1.09
BeaconState.hashTreeRoot - 250000 balances 79.911 ms/op 79.204 ms/op 1.01
aggregationBits - 2048 els - zipIndexesInBitList 18.638 us/op 17.299 us/op 1.08
regular array get 100000 times 34.179 us/op 33.306 us/op 1.03
wrappedArray get 100000 times 43.690 us/op 33.239 us/op 1.31
arrayWithProxy get 100000 times 16.485 ms/op 15.432 ms/op 1.07
ssz.Root.equals 593.00 ns/op 567.00 ns/op 1.05
byteArrayEquals 579.00 ns/op 563.00 ns/op 1.03
shuffle list - 16384 els 7.1212 ms/op 6.9167 ms/op 1.03
shuffle list - 250000 els 102.67 ms/op 101.36 ms/op 1.01
processSlot - 1 slots 8.9720 us/op 9.1000 us/op 0.99
processSlot - 32 slots 1.4209 ms/op 1.3891 ms/op 1.02
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 39.422 ms/op 36.132 ms/op 1.09
getCommitteeAssignments - req 1 vs - 250000 vc 3.0483 ms/op 3.0076 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 4.3338 ms/op 4.2556 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6552 ms/op 4.5789 ms/op 1.02
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.0800 ns/op 5.1500 ns/op 0.99
state getBlockRootAtSlot - 250000 vs - 7PWei 722.08 ns/op 922.51 ns/op 0.78
computeProposers - vc 250000 11.861 ms/op 11.099 ms/op 1.07
computeEpochShuffling - vc 250000 107.54 ms/op 110.94 ms/op 0.97
getNextSyncCommittee - vc 250000 182.87 ms/op 182.66 ms/op 1.00
computeSigningRoot for AttestationData 14.485 us/op 13.970 us/op 1.04
hash AttestationData serialized data then Buffer.toString(base64) 2.6225 us/op 2.5179 us/op 1.04
toHexString serialized data 1.1858 us/op 1.0694 us/op 1.11
Buffer.toString(base64) 378.05 ns/op 309.56 ns/op 1.22

by benchmarkbot/action

Co-authored-by: Phil Ngo <58080811+philknows@users.noreply.github.com>
@matthewkeil
Copy link
Member

This is great work! Do you think we should add a section to the docs about validator exiting?

@nflaig
Copy link
Member Author

nflaig commented Jul 13, 2023

Do you think we should add a section to the docs about validator exiting?

There is a section in the docs generated from code, see validator voluntary exit. We could document this in validator management as well but I don't see the point unless we document a lot more details there.

@wemeetagain wemeetagain merged commit fbe9beb into unstable Jul 13, 2023
11 checks passed
@wemeetagain wemeetagain deleted the nflaig/voluntary-exit-logging branch July 13, 2023 15:19
@matthewkeil
Copy link
Member

Do you think we should add a section to the docs about validator exiting?

There is a section in the docs generated from code, see validator voluntary exit. We could document this in validator management as well but I don't see the point unless we document a lot more details there.

Nice! I looked in validator management is what sparked the question @nflaig . I will read through the other section

@nflaig
Copy link
Member Author

nflaig commented Jul 13, 2023

We could go way more in-depth in our docs about different concepts and not just how to do something with Lodestar.

The Lighthouse docs are a great example, see their voluntary exit page, there is even a FAQ.

Dumping more information into current validator management does not make sense in my opinion. First step would be to split out topics into sub sections to make them easier to find and read. Afterwards, we could consider adding more pages overtime and explaining a sort of topics more in-depth. Like just from the learnings we had so far in Eth protocol discussions we could fill a few pages with good content.

@wemeetagain
Copy link
Member

🎉 This PR is included in v1.10.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Better logging for exit-validator if key is not yet activated on beacon chain
4 participants