berachain / beacon-kit

A modular framework for building EVM consensus clients ⛵️✨
https://berachain.com
Other
170 stars 122 forks source link

fix(state-transition): skip execution payload timestamp validation on Bartio #2147

Closed abi87 closed 4 days ago

abi87 commented 5 days ago

on Bartio execution payload is only require to be monotonic increasing, while following https://github.com/berachain/beacon-kit/pull/2095 we do pose a cap on how much a timestamp can run ahead. This is a breaking change that would cause nodes running main to halt in a network with a majority of nodes running alpha.8.

This PR does a few things:

Summary by CodeRabbit

Release Notes

coderabbitai[bot] commented 5 days ago

Walkthrough

The pull request introduces several modifications across multiple files, primarily focusing on enhancing logging capabilities and improving the handling of constants related to the Bartio blockchain. Key changes include updating the ProvideStateProcessor function signature to incorporate a logger parameter, creating a new special_cases.go file for Bartio-specific constants, and refactoring various methods to utilize these constants. Additionally, logging functionality is integrated into state processing methods, improving the overall structure and maintainability of the code.

Changes

File Path Change Summary
beacond/cmd/defaults.go Updated ProvideStateProcessor signature to include *Logger as the first parameter.
mod/config/pkg/spec/special_cases.go Added constants BartioChainID and BArtioValRoot for Bartio chain identification.
mod/consensus-types/pkg/types/payload.go Replaced hardcoded chain ID check with spec.BartioChainID in ToHeader method.
mod/node-core/pkg/components/state_processor.go Added LoggerT type parameter and Logger field to StateProcessorInput struct and updated ProvideStateProcessor function.
mod/state-transition/pkg/core/helpers_test.go Integrated noop logger into createStateProcessor function.
mod/state-transition/pkg/core/state_processor.go Added logger field to StateProcessor struct and updated NewStateProcessor constructor.
mod/state-transition/pkg/core/state_processor_genesis.go Removed hardcoded constants and replaced them with spec.BArtioValRoot and spec.BartioChainID.
mod/state-transition/pkg/core/state_processor_payload.go Added logging for payload height and timestamp in validateStatelessPayload method.
mod/state-transition/pkg/core/state_processor_staking.go Updated methods to utilize spec.BartioChainID for chain ID checks and improved deposit handling logic.
mod/beacon/blockchain/types.go Added method GetConsensusBlockHeight() to ConsensusBlock interface for logging purposes.
mod/consensus/pkg/types/common.go Enhanced commonConsensusData struct with new fields and method for consensus block height.
mod/node-core/pkg/components/interfaces.go Added method GetConsensusBlockHeight() to ConsensusBlock interface.
mod/primitives/pkg/transition/context.go Introduced ConsensusBlockHeight field and corresponding method in Context struct.
mod/state-transition/pkg/core/types.go Added method GetConsensusBlockHeight() to Context interface for consensus block height retrieval.
mod/beacon/blockchain/process.go Updated executeStateTransition method to include ConsensusBlockHeight parameter.
mod/beacon/blockchain/receive.go Modified verifyStateRoot method to include ConsensusBlockHeight in context.
mod/beacon/validator/block_builder.go Enhanced block building methods to include consensusBlockHeight for state root calculations.
mod/beacon/validator/types.go Added method GetConsensusBlockHeight() to SlotData interface for logging purposes.

Suggested labels

Merge me daddy

Suggested reviewers

🐰 In the code we hop and play,
With logging bright to light our way.
Constants for Bartio now in sight,
Making our state process just right!
So let’s code on, with joy and cheer,
For every change brings us near! 🌟


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
codecov[bot] commented 5 days ago

Codecov Report

Attention: Patch coverage is 22.00000% with 39 lines in your changes missing coverage. Please review.

Project coverage is 26.24%. Comparing base (9cbce04) to head (7480048). Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...ate-transition/pkg/core/state_processor_payload.go 36.36% 14 Missing :warning:
mod/beacon/blockchain/execution_engine.go 0.00% 12 Missing :warning:
mod/beacon/validator/block_builder.go 0.00% 3 Missing :warning:
mod/consensus/pkg/types/common.go 0.00% 2 Missing :warning:
mod/primitives/pkg/transition/context.go 0.00% 2 Missing :warning:
beacond/cmd/defaults.go 0.00% 1 Missing :warning:
mod/beacon/blockchain/process.go 0.00% 1 Missing :warning:
mod/beacon/blockchain/receive.go 0.00% 1 Missing :warning:
mod/consensus-types/pkg/types/payload.go 0.00% 0 Missing and 1 partial :warning:
mod/node-core/pkg/components/state_processor.go 0.00% 1 Missing :warning:
... and 1 more
Additional details and impacted files [![Impacted file tree graph](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147/graphs/tree.svg?width=650&height=150&src=pr&token=0l5iJ3ZbzV&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain)](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain) ```diff @@ Coverage Diff @@ ## main #2147 +/- ## ========================================== - Coverage 26.24% 26.24% -0.01% ========================================== Files 360 360 Lines 16241 16276 +35 Branches 12 12 ========================================== + Hits 4263 4271 +8 - Misses 11709 11736 +27 Partials 269 269 ``` | [Files with missing lines](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain) | Coverage Δ | | |---|---|---| | [mod/state-transition/pkg/core/state\_processor.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fstate-transition%2Fpkg%2Fcore%2Fstate_processor.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL3N0YXRlLXRyYW5zaXRpb24vcGtnL2NvcmUvc3RhdGVfcHJvY2Vzc29yLmdv) | `26.69% <100.00%> (+0.31%)` | :arrow_up: | | [...ate-transition/pkg/core/state\_processor\_staking.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fstate-transition%2Fpkg%2Fcore%2Fstate_processor_staking.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL3N0YXRlLXRyYW5zaXRpb24vcGtnL2NvcmUvc3RhdGVfcHJvY2Vzc29yX3N0YWtpbmcuZ28=) | `54.78% <100.00%> (ø)` | | | [beacond/cmd/defaults.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=beacond%2Fcmd%2Fdefaults.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-YmVhY29uZC9jbWQvZGVmYXVsdHMuZ28=) | `0.00% <0.00%> (ø)` | | | [mod/beacon/blockchain/process.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fbeacon%2Fblockchain%2Fprocess.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL2JlYWNvbi9ibG9ja2NoYWluL3Byb2Nlc3MuZ28=) | `0.00% <0.00%> (ø)` | | | [mod/beacon/blockchain/receive.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fbeacon%2Fblockchain%2Freceive.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL2JlYWNvbi9ibG9ja2NoYWluL3JlY2VpdmUuZ28=) | `0.00% <0.00%> (ø)` | | | [mod/consensus-types/pkg/types/payload.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fconsensus-types%2Fpkg%2Ftypes%2Fpayload.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL2NvbnNlbnN1cy10eXBlcy9wa2cvdHlwZXMvcGF5bG9hZC5nbw==) | `92.15% <0.00%> (-0.02%)` | :arrow_down: | | [mod/node-core/pkg/components/state\_processor.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fnode-core%2Fpkg%2Fcomponents%2Fstate_processor.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL25vZGUtY29yZS9wa2cvY29tcG9uZW50cy9zdGF0ZV9wcm9jZXNzb3IuZ28=) | `0.00% <0.00%> (ø)` | | | [...ate-transition/pkg/core/state\_processor\_genesis.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fstate-transition%2Fpkg%2Fcore%2Fstate_processor_genesis.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL3N0YXRlLXRyYW5zaXRpb24vcGtnL2NvcmUvc3RhdGVfcHJvY2Vzc29yX2dlbmVzaXMuZ28=) | `50.00% <50.00%> (ø)` | | | [mod/consensus/pkg/types/common.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fconsensus%2Fpkg%2Ftypes%2Fcommon.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL2NvbnNlbnN1cy9wa2cvdHlwZXMvY29tbW9uLmdv) | `0.00% <0.00%> (ø)` | | | [mod/primitives/pkg/transition/context.go](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree&filepath=mod%2Fprimitives%2Fpkg%2Ftransition%2Fcontext.go&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain#diff-bW9kL3ByaW1pdGl2ZXMvcGtnL3RyYW5zaXRpb24vY29udGV4dC5nbw==) | `0.00% <0.00%> (ø)` | | | ... and [3 more](https://app.codecov.io/gh/berachain/beacon-kit/pull/2147?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=berachain) | |