lighthouse/common
Paul Hauner 27e83b888c Retrospective invalidation of exec. payloads for opt. sync (#2837)
## Issue Addressed

NA

## Proposed Changes

Adds the functionality to allow blocks to be validated/invalidated after their import as per the [optimistic sync spec](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md#how-to-optimistically-import-blocks). This means:

- Updating `ProtoArray` to allow flipping the `execution_status` of ancestors/descendants based on payload validity updates.
- Creating separation between `execution_layer` and the `beacon_chain` by creating a `PayloadStatus` struct.
- Refactoring how the `execution_layer` selects a `PayloadStatus` from the multiple statuses returned from multiple EEs.
- Adding testing framework for optimistic imports.
- Add `ExecutionBlockHash(Hash256)` new-type struct to avoid confusion between *beacon block roots* and *execution payload hashes*.
- Add `merge` to [`FORKS`](c3a793fd73/Makefile (L17)) in the `Makefile` to ensure we test the beacon chain with merge settings.
    - Fix some tests here that were failing due to a missing execution layer.

## TODO

- [ ] Balance tests

Co-authored-by: Mark Mackey <mark@sigmaprime.io>
2022-02-28 22:07:48 +00:00
..
account_utils Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
clap_utils Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
compare_fields Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
compare_fields_derive Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
deposit_contract Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
directory Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
eth2 Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
eth2_config Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
eth2_interop_keypairs Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
eth2_network_config Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
eth2_wallet_manager Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
fallback Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
filesystem Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
hashset_delay Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
lighthouse_metrics Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
lighthouse_version Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
lockfile Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
logging Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
lru_cache Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
malloc_utils Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
monitoring_api Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
sensitive_url Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
slot_clock Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
target_check Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
task_executor Retrospective invalidation of exec. payloads for opt. sync (#2837) 2022-02-28 22:07:48 +00:00
test_random_derive Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
unused_port Engine API v1.0.0.alpha.6 + interop tests (#3024) 2022-02-17 21:47:06 +00:00
validator_dir Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
warp_utils Update to Rust 1.59 and 2021 edition (#3038) 2022-02-25 00:10:17 +00:00
README.md Directory Restructure (#1163) 2020-05-18 21:24:23 +10:00

eth2

Common crates containing eth2-specific logic.