-
Notifications
You must be signed in to change notification settings - Fork 25
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
Lightweight checkpointing for all block types #898
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
amesgen
force-pushed
the
amesgen/checkpointing-abstract
branch
2 times, most recently
from
January 22, 2024 12:53
70d976d
to
db3c7f8
Compare
facundominguez
force-pushed
the
amesgen/checkpointing-abstract
branch
3 times, most recently
from
January 22, 2024 20:43
1fd0dbb
to
f91e093
Compare
@amesgen, this is ready for a review. |
amesgen
commented
Jan 23, 2024
...consensus-cardano/changelog.d/20240111_195320_facundo.dominguez_lightweight_checkpointing.md
Outdated
Show resolved
Hide resolved
...consensus-cardano/changelog.d/20240111_195320_facundo.dominguez_lightweight_checkpointing.md
Outdated
Show resolved
Hide resolved
ouroboros-consensus-cardano/src/unstable-cardano-testlib/Test/Consensus/Cardano/ProtocolInfo.hs
Outdated
Show resolved
Hide resolved
ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Node/Protocol/Cardano.hs
Outdated
Show resolved
Hide resolved
...boros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/DBAnalyser/Block/Cardano.hs
Outdated
Show resolved
Hide resolved
ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/HardFork/Combinator/Basics.hs
Show resolved
Hide resolved
ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/HeaderValidation.hs
Show resolved
Hide resolved
ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/HeaderValidation.hs
Outdated
Show resolved
Hide resolved
ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Ledger/Dual.hs
Show resolved
Hide resolved
ouroboros-consensus/test/consensus-test/Test/Consensus/HeaderValidation.hs
Outdated
Show resolved
Hide resolved
facundominguez
force-pushed
the
amesgen/checkpointing-abstract
branch
from
January 24, 2024 15:50
a66b9ad
to
bd7e442
Compare
nbacquey
force-pushed
the
amesgen/checkpointing-abstract
branch
from
February 29, 2024 13:01
bd7e442
to
4262f91
Compare
facundominguez
force-pushed
the
amesgen/checkpointing-abstract
branch
from
February 29, 2024 17:14
4262f91
to
fb8811d
Compare
Lightweight checkpointing is a mechanism to ensure that new nodes end up in the correct chain even when the chain is too sparse for normal operation of Praos and Genesis. The idea is to supply the new node with a list of block hashes that should be present on the chain at specific block numbers. This list is provided in the TopLevelConfig record, and it is used during validation of headers in validateIfCheckpoint called by validateEnvelope. If the hashes of checkpoints don't match the hashes of a supplied header for a given block number, then validation of the header fails. The substance of the change is modifying TopLevelConfig and validateEnvelope. Most other changes derive from these modifications. There are three new unit tests of validateIfCheckpoint added in ouroboros-consensus:test:consensus-test.
facundominguez
force-pushed
the
amesgen/checkpointing-abstract
branch
from
February 29, 2024 18:35
fb8811d
to
4673971
Compare
facundominguez
changed the title
Draft another lightweight checkpointing approach
Lightweight checkpointing for all block types
Feb 29, 2024
dnadales
approved these changes
Mar 22, 2024
This was referenced Apr 4, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Lightweight checkpointing is a mechanism to ensure that new nodes end up in the correct chain even when the chain is too sparse for normal operation of Praos and Genesis.
The idea is to supply the new node with a list of block hashes that should be present on the chain at specific block numbers. This list is provided in the TopLevelConfig record, and it is used during validation of headers in validateIfCheckpoint called by validateEnvelope.
If the hashes of checkpoints don't match the hashes of a supplied header for a given block number, then validation of the header fails.
The substance of the change is modifying TopLevelConfig and validateEnvelope. Most other changes derive from these modifications. There are three new unit tests of validateIfCheckpoint added in ouroboros-consensus:test:consensus-test.
Implements #453 (comment)