ExocoreNetwork / exocore-contracts

5 stars 5 forks source link

feat(generate): native restaking genesis #123

Open MaxMustermann2 opened 3 days ago

MaxMustermann2 commented 3 days ago

This PR fixes a potentially major (yet unnoticed) bug that the same constants (such as the ETH1_DEPOSIT_ADDRESS and GENESIS_TIME) were used across all networks.

Summary by CodeRabbit

Release Notes

coderabbitai[bot] commented 3 days ago

Walkthrough

The pull request introduces multiple changes across various files, primarily focusing on enhancing the environment configuration for Ethereum Proof of Stake (PoS) integration testing. Key modifications include the addition of new environment variables in .env.example, updates to the .gitignore file, and enhancements to the foundry.toml configuration. Several Solidity scripts have been modified to accommodate new parameters and improve the handling of contracts related to validator operations, including the introduction of new contracts like BeaconOracle and NetworkConfig. Additionally, various test files have been updated to reflect these changes.

Changes

File Change Summary
.env.example Added new environment variables for integration testing, including BEACON_CHAIN_ENDPOINT, INTEGRATION_* variables, and updated ETHERSCAN_API_KEY.
.gitignore Added entry to ignore JSON files in script/integration/.
foundry.toml Added chain_id = 1 under [profile.default].
package.json Added dependency @lodestar/api and property "type": "module".
script/12_RedeployClientChainGateway.s.sol Updated ImmutableConfig struct to include networkConfig.
script/13_DepositValidator.s.sol Changed GENESIS_BLOCK_TIMESTAMP to an immutable variable from a constant, added import for NetworkConstants.
script/14_CorrectBootstrapErrors.s.sol Updated ImmutableConfig struct to include networkConfig.
script/16_UpgradeExoCapsule.s.sol Changed ExoCapsule instantiation to pass address 0.
script/17_WithdrawalValidator.s.sol Changed GENESIS_BLOCK_TIMESTAMP to an immutable variable and added import for NetworkConstants.
script/2_DeployBoth.s.sol Added import for NetworkConstants, updated beaconOracle instantiation, and modified ImmutableConfig.
script/7_DeployBootstrap.s.sol Updated capsuleImplementation instantiation and added networkConfig to ImmutableConfig.
script/BaseScript.sol Removed _deployBeaconOracle function.
script/generate.js Restructured token metadata, added new constants, and updated environment variable loading.
script/integration/1_DeployBootstrap.s.sol Introduced NetworkConfig structure and updated deployment logic.
script/integration/2_VerifyDepositNST.s.sol Added new contract for verifying deposits.
script/integration/BeaconOracle.sol Introduced BeaconOracle contract for managing beacon chain data.
script/integration/NetworkConfig.sol Introduced NetworkConfig contract for integration testing.
script/integration/deposit.sh New script for fetching genesis details from a beacon chain node.
script/integration/prove.sh New script for generating validator proofs.
src/core/Bootstrap.sol Updated to include ValidatorContainer library and modified getWhitelistedTokenAtIndex.
src/core/ExoCapsule.sol Updated constructor and several functions for improved withdrawal logic.
src/interfaces/INetworkConfig.sol Introduced interface and struct for network parameters.
src/libraries/BeaconChainProofs.sol Updated functions to accept new parameters for enhanced flexibility.
src/libraries/NetworkConstants.sol Introduced library with constants and utility functions for PoS networks.
src/storage/BootstrapStorage.sol Added new mapping for staker public keys and updated constructor logic.
src/storage/ExoCapsuleStorage.sol Added immutable variable for network configuration and updated functions for retrieving values.
test/foundry/BootstrapDepositNST.t.sol Updated test setup to reflect changes in capsuleImplementation and ImmutableConfig.
test/foundry/ExocoreDeployer.t.sol Updated beacon oracle instantiation and removed _deployBeaconOracle function.
test/foundry/Governance.t.sol Updated to reflect changes in beacon oracle instantiation and capsule implementation.
test/foundry/unit/Bootstrap.t.sol Enhanced test suite with additional checks for networkConfig.
test/foundry/unit/ClientChainGateway.t.sol Updated to reflect changes in beacon oracle instantiation and capsule implementation.
test/foundry/unit/ExoCapsule.t.sol Updated ExoCapsule instantiation and added field to validatorProof struct.
test/foundry/unit/NetworkConfig.t.sol Introduced unit tests for NetworkConfig contract with various assertions and error checks.

Possibly related PRs

Suggested reviewers

🐰 In the meadow where the code does flow,
New variables sprout, as the developers know.
With constants and scripts, they dance in delight,
Enhancing the tests, making futures bright.
For Ethereum's chains, we hop and we play,
Celebrating changes, hip-hip-hooray! 🐇✨


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` or `@coderabbitai title` 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://docs.coderabbit.ai) 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.