lighthouse/consensus/types/src
Michael Sproul ca9dc8e094 Optimise HTTP validator lookups (#3559)
## Issue Addressed

While digging around in some logs I noticed that queries for validators by pubkey were taking 10ms+, which seemed too long. This was due to a loop through the entire validator registry for each lookup.

## Proposed Changes

Rather than using a loop through the register, this PR utilises the pubkey cache which is usually initialised at the head*. In case the cache isn't built, we fall back to the previous loop logic. In the vast majority of cases I expect the cache will be built, as the validator client queries at the `head` where all caches should be built.

## Additional Info

*I had to modify the cache build that runs after fork choice to build the pubkey cache. I think it had been optimised out, perhaps accidentally. I think it's preferable to have the exit cache and the pubkey cache built on the head state, as they are required for verifying deposits and exits respectively, and we may as well build them off the hot path of block processing. Previously they'd get built the first time a deposit or exit needed to be verified.

I've deleted the unused `map_state` function which was obsoleted by `map_state_and_execution_optimistic`.
2022-10-15 22:25:51 +00:00
..
beacon_state Add mainnet merge values 🐼 (#3462) 2022-08-17 02:36:38 +00:00
test_utils Realized unrealized experimentation (#3322) 2022-07-25 23:53:26 +00:00
aggregate_and_proof.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
application_domain.rs Register validator api (#3194) 2022-06-30 00:49:21 +00:00
attestation_data.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
attestation_duty.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
attestation.rs Use SmallVec in Bitfield (#3025) 2022-02-17 23:55:04 +00:00
attester_slashing.rs Update for clippy 1.50 (#2193) 2021-02-15 00:09:12 +00:00
beacon_block_body.rs Use async code when interacting with EL (#3244) 2022-07-03 05:36:50 +00:00
beacon_block_header.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
beacon_block.rs Implement skip_randao_verification and blinded block rewards API (#3540) 2022-09-19 07:58:48 +00:00
beacon_committee.rs Directory Restructure (#1163) 2020-05-18 21:24:23 +10:00
beacon_state.rs Optimise HTTP validator lookups (#3559) 2022-10-15 22:25:51 +00:00
builder_bid.rs Builder Specs v0.2.0 (#3134) 2022-07-30 00:22:37 +00:00
chain_spec.rs [DEV FEATURE] Deterministic long lived subnets (#3453) 2022-10-04 10:37:48 +00:00
checkpoint.rs Bump all spec tags to v0.12.1 (#1275) 2020-06-19 11:18:27 +10:00
config_and_preset.rs Serve Bellatrix preset in BN API (#3425) 2022-08-10 07:52:59 +00:00
consts.rs v1.1.6 Fork Choice changes (#2822) 2021-12-13 20:43:22 +00:00
contribution_and_proof.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
deposit_data.rs Lazy hashing for SignedBeaconBlock in sync (#2916) 2022-01-14 07:20:54 +00:00
deposit_message.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
deposit.rs Lazy hashing for SignedBeaconBlock in sync (#2916) 2022-01-14 07:20:54 +00:00
enr_fork_id.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
eth1_data.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
eth_spec.rs Native support for Gnosis Beacon Chain network (#2931) 2022-01-27 22:58:33 +00:00
execution_block_hash.rs Use SmallVec for TreeHash packed encoding (#3581) 2022-09-16 08:54:06 +00:00
execution_payload_header.rs Kiln mev boost (#3062) 2022-03-31 07:52:23 +00:00
execution_payload.rs Kiln mev boost (#3062) 2022-03-31 07:52:23 +00:00
fork_context.rs Update to spec v1.1.8 (#2893) 2022-01-19 00:24:19 +00:00
fork_data.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
fork_name.rs Serve Bellatrix preset in BN API (#3425) 2022-08-10 07:52:59 +00:00
fork.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
free_attestation.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
graffiti.rs Use SmallVec for TreeHash packed encoding (#3581) 2022-09-16 08:54:06 +00:00
historical_batch.rs Bump all spec tags to v0.12.1 (#1275) 2020-06-19 11:18:27 +10:00
indexed_attestation.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
lib.rs Implement skip_randao_verification and blinded block rewards API (#3540) 2022-09-19 07:58:48 +00:00
participation_flags.rs Use SmallVec for TreeHash packed encoding (#3581) 2022-09-16 08:54:06 +00:00
participation_list.rs Rust 1.54.0 lints (#2483) 2021-07-30 01:11:47 +00:00
payload.rs Use SmallVec for TreeHash packed encoding (#3581) 2022-09-16 08:54:06 +00:00
pending_attestation.rs Get arbitrary check passing (2.0) (#2710) 2021-10-14 02:58:11 +00:00
preset.rs Native support for Gnosis Beacon Chain network (#2931) 2022-01-27 22:58:33 +00:00
proposer_preparation_data.rs Proposer preparation data quoted validator index in API (#3080) 2022-03-13 21:57:05 +00:00
proposer_slashing.rs Refactor op pool for speed and correctness (#3312) 2022-08-29 09:10:26 +00:00
relative_epoch.rs Remove saturating arith from state_processing (#1644) 2020-09-25 05:18:21 +00:00
selection_proof.rs Altair consensus changes and refactors (#2279) 2021-07-09 06:15:32 +00:00
shuffling_id.rs Optimize validator duties (#2243) 2021-03-17 05:09:57 +00:00
signed_aggregate_and_proof.rs [Altair] Sync committee pools (#2321) 2021-07-15 00:52:02 +00:00
signed_beacon_block_header.rs Lazy hashing for SignedBeaconBlock in sync (#2916) 2022-01-14 07:20:54 +00:00
signed_beacon_block.rs Use async code when interacting with EL (#3244) 2022-07-03 05:36:50 +00:00
signed_contribution_and_proof.rs [Altair] Sync committee pools (#2321) 2021-07-15 00:52:02 +00:00
signed_voluntary_exit.rs Lazy hashing for SignedBeaconBlock in sync (#2916) 2022-01-14 07:20:54 +00:00
signing_data.rs Consensus updates for v0.12 (#1228) 2020-06-03 14:56:54 +10:00
slot_data.rs [Altair] Sync committee pools (#2321) 2021-07-15 00:52:02 +00:00
slot_epoch_macros.rs Use SmallVec for TreeHash packed encoding (#3581) 2022-09-16 08:54:06 +00:00
slot_epoch.rs Use SmallVec for TreeHash packed encoding (#3581) 2022-09-16 08:54:06 +00:00
sqlite.rs Directory Restructure (#1163) 2020-05-18 21:24:23 +10:00
subnet_id.rs [DEV FEATURE] Deterministic long lived subnets (#3453) 2022-10-04 10:37:48 +00:00
sync_aggregate.rs Lazy hashing for SignedBeaconBlock in sync (#2916) 2022-01-14 07:20:54 +00:00
sync_aggregator_selection_data.rs Web3Signer support for VC (#2522) 2021-09-16 03:26:33 +00:00
sync_committee_contribution.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
sync_committee_message.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
sync_committee_subscription.rs Add quoted u64/u64_vec to SyncCommitteeSubscription (#2589) 2021-09-11 23:56:16 +00:00
sync_committee.rs Validator monitor support for sync committees (#2476) 2021-08-31 23:31:36 +00:00
sync_duty.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
sync_selection_proof.rs [Altair] Sync committee pools (#2321) 2021-07-15 00:52:02 +00:00
sync_subnet_id.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
tree_hash_impls.rs Rust 1.54.0 lints (#2483) 2021-07-30 01:11:47 +00:00
validator_registration_data.rs Register validator api (#3194) 2022-06-30 00:49:21 +00:00
validator_subscription.rs Implement standard eth2.0 API (#1569) 2020-10-01 11:12:36 +10:00
validator.rs Updates to make crates publishable (#2472) 2021-09-03 01:10:25 +00:00
voluntary_exit.rs Lazy hashing for SignedBeaconBlock in sync (#2916) 2022-01-14 07:20:54 +00:00