ExocoreNetwork / exocore-contracts

5 stars 5 forks source link

add testnet v5 deployment addresses #95

Closed MaxMustermann2 closed 2 months ago

MaxMustermann2 commented 2 months ago

All of these are verified on their respective block explorers.

Summary by CodeRabbit

coderabbitai[bot] commented 2 months ago

Walkthrough

The pull request introduces significant updates to the deployedContracts.json configuration file, altering Ethereum contract addresses in the clientChain and exocore sections. New contract entries have been added, and existing addresses have been modified, indicating potential upgrades or redeployments. Additionally, changes in the SetPeersAndUpgrade and PrerequisitiesScript contracts reflect adjustments in functionality, while the BaseScript contract enhancements improve testing capabilities.

Changes

File Change Summary
script/deployedContracts.json Added new entries: capsuleImplementation, clientGateway, clientGatewayLogic, exocoreGatewayLogic. Modified existing entries: beaconOracle, beaconProxyBytecode, capsuleBeacon, exocoreGateway, lzEndpoint, proxyAdmin.
script/11_SetPeers.s.sol Removed a comment block regarding the isRegisteredClientChain function issue; no functional code changes.
script/1_Prerequisities.s.sol Modified AssetsMock initialization to include clientChainId as an argument in the constructor.
script/BaseScript.sol Enhanced functionality by integrating StdCheats, modifying _bindPrecompileMocks for better error handling and fork management.
test/mocks/AssetsMock.sol Added a constructor to initialize isRegisteredChain mapping and populate chainIds with clientChainId.

Sequence Diagram(s)

(No sequence diagrams generated as the changes do not warrant a visual representation of control flow.)

Possibly related PRs

Poem

🐇 In the meadow where contracts play,
New addresses hop, brightening the day.
With logic so keen and gateways anew,
The blockchain blooms, fresh as the dew.
Let’s cheer for the changes, let’s dance and prance,
For the world of code is a wondrous romance! 🌼


Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
Commits Files that changed from the base of the PR and between f6156a1574143896a8df3500fa156a33f530c969 and b811d7589be098d9703588583869c4db51bc42e6.
Files selected for processing (4) * script/11_SetPeers.s.sol (1 hunks) * script/1_Prerequisities.s.sol (1 hunks) * script/BaseScript.sol (2 hunks) * test/mocks/AssetsMock.sol (1 hunks)
Files skipped from review due to trivial changes (1) * script/11_SetPeers.s.sol
Additional comments not posted (5)
script/1_Prerequisities.s.sol (1)
`46-46`: **LGTM, but verify the `AssetsMock` contract.** The change to pass the `clientChainId` to the `AssetsMock` constructor is approved. However, ensure that the `AssetsMock` contract has been updated to handle the `clientChainId` parameter correctly. Verify that the contract's logic and behavior are as expected with this additional parameter. Run the following script to verify the `AssetsMock` contract:
Verification successful --- **Verification successful: `AssetsMock` contract handles `clientChainId` correctly.** The `AssetsMock` contract's constructor has been updated to accept the `clientChainId` parameter and uses it appropriately within its logic. This confirms that the changes are consistent with the intended functionality. - `test/mocks/AssetsMock.sol`: The constructor accepts `clientChainId` and initializes related mappings and arrays.
Scripts executed The following scripts were executed for the analysis: Script: ```shell #!/bin/bash # Description: Verify the `AssetsMock` contract handles the `clientChainId` parameter correctly. # Test: Search for the `AssetsMock` contract. Expect: The constructor should accept the `clientChainId` parameter. rg --type solidity -A 10 $'contract AssetsMock' ``` Length of output: 81 --- Script: ```shell #!/bin/bash # Description: Verify the `AssetsMock` contract handles the `clientChainId` parameter correctly. # Search for the `AssetsMock` contract and its constructor to verify the `clientChainId` parameter. ast-grep --lang solidity --pattern $'contract AssetsMock {\n constructor($_) {\n $$$\n }\n}' ``` Length of output: 211 --- Script: ```shell #!/bin/bash # Description: Verify the `AssetsMock` contract handles the `clientChainId` parameter correctly. # Search for the `AssetsMock` contract definition. rg 'contract AssetsMock' -A 10 # Search for the constructor within the same file to verify the `clientChainId` parameter. rg 'constructor' -A 5 ``` Length of output: 15948
test/mocks/AssetsMock.sol (1)
`15-18`: **LGTM!** The constructor addition is approved for the following reasons: 1. It correctly initializes the `isRegisteredChain` mapping and `chainIds` array with the provided `clientChainId`. 2. It ensures that the specified chain ID is marked as registered upon contract deployment. 3. The constructor is the appropriate place to initialize the contract state variables. 4. This addition aligns with the PR objective of adding testnet deployment addresses.
script/BaseScript.sol (3)
`18-18`: **LGTM!** The contract now inherits from both `Script` and `StdCheats`, which allows it to access additional testing utilities provided by the `StdCheats` library. Also applies to: 24-24 --- `125-142`: **Excellent improvements to the `_bindPrecompileMocks` function!** The changes enhance the function's robustness and adaptability: 1. The `try-catch` block allows the function to handle scenarios where no active fork is present gracefully. 2. Selecting a specific fork (`exocore`) ensures that the mock contracts are deployed in a controlled environment without affecting client chain simulations. 3. The `deployCodeTo` function simplifies the deployment of mock contracts and enhances resilience against transaction failures during simulations. 4. Restoring the previous fork ensures that the environment is reset correctly after the function execution. These improvements make the contract more adaptable to various simulation scenarios and improve its testing capabilities. --- `136-138`: **LGTM!** The `deployCodeTo` function calls deploy the necessary mock contracts (`AssetsMock`, `DelegationMock`, and `ClaimRewardMock`) to their respective precompile addresses. This setup is crucial for testing purposes and simulating the behavior of the precompiled contracts.
--- 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 .` - `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 generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@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://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.