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

Starting from a weak subjectivity point / arbitrary finalized epoch #1891

Closed
AgeManning opened this issue Nov 12, 2020 · 0 comments
Closed
Labels
A1 consensus An issue/PR that touches consensus code, such as state_processing or block verification. Networking

Comments

@AgeManning
Copy link
Member

Description

It is desirable to avoid long syncs by simply supplying a trusted finalised state and starting lighthouse from this point.

Some of the issues needed to support this are:

  1. Handling block history - A LH node that starts at an arbitrary point does not have the block history and cannot respond correctly to it's peers requests who wish to sync from points before that arbitrary start. The spec indicates that we must maintain blocks from the most recent weak subjectivity point or in the case of long periods of non finality min(finalized_epoch, weak_subjectivity_point).
    One solution is to attempt to download blocks backwards, however this runs into issues with block verification (in its current form) as we cannot verify blocks in a "backwards fashion". A somewhat cleaner solution would be to only allow LH to start from weak subjectivity points which allows us to maintain our sync logic and sync forward to the current head. The drawback here is if the weak subjectivity period is the order of months, we must spend the time to sync and verify all the blocks to the current head.

  2. Handling peers in sync that only partially support the full history - We need to enhance a peer handling in sync to support peers with only partial views of the chain. I'll make a separate issue for this once we have decided on how peers will identify themselves as having a partial view of the block history.

bors bot pushed a commit that referenced this issue Dec 13, 2020
## Issue Addressed

Related to #1891, The error is not in the spec yet (see ethereum/consensus-specs#2131)

## Proposed Changes

Implement the proposed error, banning peers that send it

## Additional Info

NA
bors bot pushed a commit that referenced this issue Dec 14, 2020
## Issue Addressed

Related to #1891, The error is not in the spec yet (see ethereum/consensus-specs#2131)

## Proposed Changes

Implement the proposed error, banning peers that send it

## Additional Info

NA
bors bot pushed a commit that referenced this issue Dec 15, 2020
## Issue Addressed

Related to #1891, The error is not in the spec yet (see ethereum/consensus-specs#2131)

## Proposed Changes

Implement the proposed error, banning peers that send it

## Additional Info

NA
bors bot pushed a commit that referenced this issue Sep 22, 2021
## Issue Addressed

Closes #1891
Closes #1784

## Proposed Changes

Implement checkpoint sync for Lighthouse, enabling it to start from a weak subjectivity checkpoint.

## Additional Info

- [x] Return unavailable status for out-of-range blocks requested by peers (#2561)
- [x] Implement sync daemon for fetching historical blocks (#2561)
- [x] Verify chain hashes (either in `historical_blocks.rs` or the calling module)
- [x] Consistency check for initial block + state
- [x] Fetch the initial state and block from a beacon node HTTP endpoint
- [x] Don't crash fetching beacon states by slot from the API
- [x] Background service for state reconstruction, triggered by CLI flag or API call.

Considered out of scope for this PR:

- Drop the requirement to provide the `--checkpoint-block` (this would require some pretty heavy refactoring of block verification)


Co-authored-by: Diva M <divma@protonmail.com>
@michaelsproul michaelsproul added the consensus An issue/PR that touches consensus code, such as state_processing or block verification. label Nov 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A1 consensus An issue/PR that touches consensus code, such as state_processing or block verification. Networking
Projects
None yet
Development

No branches or pull requests

2 participants