Skip to content

Conversation

@rudewalt
Copy link
Contributor

@rudewalt rudewalt commented Apr 14, 2025

Summary by CodeRabbit

  • New Features

    • Introduced support for the “sonic” network with dedicated endpoints and custom chain settings to enable broader blockchain interactions.
    • Added new configuration files for deployment related to the “sonic” network, including settings for tokens and marginly pools.
  • Enhancements

    • Upgraded the development and testing environment to Node.js 21.1.0 for improved performance.
    • Streamlined task processing and signer credential handling for a smoother deployment workflow.
  • Chores

    • Removed outdated deployment configuration files and refined build processes.
    • Updated dependencies to enhance interactive prompt functionality during operations.

@coderabbitai
Copy link

coderabbitai bot commented Apr 14, 2025

Walkthrough

This pull request introduces a new network configuration for the "sonic" blockchain across multiple Hardhat configuration files. It updates the Etherscan settings to include a sonic-specific API key and custom chain definition (chainId 146 with dedicated API and browser URLs). Legacy deployment and state configuration files for Arbitrum, Ethereum, and Ganache have been removed, while new files for sonic deployments—along with a TimelockWhitelist entry—are added. Additionally, timelock tasks have been refactored to use a new signer utility with updated task signatures, and new dependencies and minor build script adjustments have been introduced.

Changes

Files Change Summary
packages/contracts/hardhat.config.ts, packages/periphery/hardhat-configs/hardhat.config.ts, packages/router/hardhat.config.ts, packages/timelock/hardhat.config.ts, packages/timelock/hardhat.common.ts Added a new "sonic" network configuration with RPC URL (https://rpc.soniclabs.com), updated Etherscan API keys (using SONIC_API_KEY), and defined a custom chain (chainId 146 with API/browser URLs).
packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/*, packages/deploy/src/data/deploy/ethereum-v1.5-pendle/*, packages/deploy/src/data/deploy/ganache/* Deleted legacy deployment, configuration, and state files for Arbitrum, Ethereum, and Ganache networks.
packages/deploy/src/data/deploy/sonic-v1.5/*, packages/timelock/deployment/sonic/* Introduced new configuration, deployment, and state files for the sonic network, including a TimelockWhitelist deployment file.
packages/timelock/tasks/timelock.ts, packages/timelock/tasks/utils.ts Refactored timelock tasks to use taskWithSigner; added the SignerArgs interface and a new getSigner function for improved signer management.
packages/timelock/package.json Added new dependencies: @types/prompts (v^2.4.2) and prompts (v2.4.2).
scripts/build_script.sh Commented out build commands for the contest-winner-nft workspace.
.github/workflows/integration-tests.yml, .github/workflows/unit-tests-contracts.yml, .github/workflows/unit-tests-router.yml, .github/workflows/unit-tests-uniswap.yml Updated Node.js version from 18.14.2 to 21.1.0 in CI workflows.

Sequence Diagram(s)

sequenceDiagram
    participant U as User
    participant T as Timelock Task (taskWithSigner)
    participant G as getSigner
    participant W as Wallet

    U->>T: Initiate timelock task
    T->>G: Request signer using provided SignerArgs
    alt Private Key Provided
        G->>W: Create wallet from private key
    else Keystore Provided
        G->>W: Decrypt keystore & create wallet
    else
        G->>U: Prompt for private key
        U->>W: Supply private key, create wallet
    end
    W-->>T: Return signer instance
    T->>W: Sign and execute transaction
Loading

Possibly related PRs

  • deploy marginlyFactory into eth mainnet #195: The changes in the main PR, which add a new network configuration for "sonic" in the Hardhat configuration file, are related to the retrieved PR, as both involve modifications to the hardhat.config.ts file to introduce new network configurations and API keys.

Suggested reviewers

  • optifat

Poem

I'm a hopping rabbit on a coding spree,
Sonic networks now dance in our config tree.
Tasks get a boost with a signer so keen,
Old files vanish, making our slate clean.
With each new change, my ears perk with delight—
Blockchain magic by day and moonlit night!
🐇💻✨

Tip

⚡💬 Agentic Chat (Pro Plan, General Availability)
  • We're introducing multi-step agentic chat in review comments and issue comments, within and outside of PR's. This feature enhances review and issue discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments and add commits to existing pull requests.

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 712bbeb and e1dca44.

📒 Files selected for processing (1)
  • packages/int-tests/src/index.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/int-tests/src/index.ts
⏰ Context from checks skipped due to timeout of 90000ms (10)
  • GitHub Check: integration_tests (keeperUniswapV3)
  • GitHub Check: integration_tests (keeperAave)
  • GitHub Check: integration_tests (shortEmergency)
  • GitHub Check: integration_tests (longEmergency)
  • GitHub Check: integration_tests (simulation3)
  • GitHub Check: integration_tests (longIncome)
  • GitHub Check: integration_tests (shortIncome)
  • GitHub Check: integration_tests (longAndShort)
  • GitHub Check: integration_tests (long)
  • GitHub Check: integration_tests (short)

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, 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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @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 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 for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🔭 Outside diff range comments (1)
packages/timelock/tasks/timelock.ts (1)

303-303: 🛠️ Refactor suggestion

Add validation for target address

The target address is set to an empty string which will cause the transaction to fail when executed. Add validation to prevent executing with an empty target.

-    const target = ''; // target address pool
+    const target = ''; // target address pool
+    if (!target) {
+      throw new Error('Target address must be configured before running this task');
+    }
🧹 Nitpick comments (4)
scripts/build_script.sh (1)

49-53: Consider adding a comment explaining why contest-winner-nft build is disabled

The build steps for the contest-winner-nft package have been commented out. Is this intended to be a temporary or permanent change? Consider adding a brief comment explaining the reason for disabling this part of the build script to improve maintenance clarity.

packages/timelock/tasks/utils.ts (2)

71-105: Added getSigner function for secure credential handling

This comprehensive function manages signer creation from different credential sources with appropriate warnings about security practices. It includes interactive prompt support when credentials aren't provided directly.

However, there's potential for code duplication. The readSensitiveData function defined inside getSigner appears to duplicate functionality from packages/cli-common/src/sensitive.ts.

Consider importing the readSensitiveData function from the cli-common package instead of redefining it:

-  const readSensitiveData = async (label: string): Promise<string> => {
-    const response = await prompts({
-      type: 'invisible',
-      name: 'result',
-      message: label,
-    });
-
-    return response.result as string;
-  };
+  import { readSensitiveData } from '@marginly/cli-common/src/sensitive';

82-84: Consider enhancing private key security

While the code warns about using plain text private keys, it still accepts them. For production deployments, this could pose a security risk.

Consider adding options for more secure key handling, such as environment variable support or integration with hardware wallets for production deployments.

packages/timelock/tasks/timelock.ts (1)

294-294: Consistent variable declaration style

This line uses const for signer declaration while other similar lines use let. Consider using consistent variable declaration styles across tasks.

-    const signer = await getSigner(taskArgs, provider);
+    let signer = await getSigner(taskArgs, provider);
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 18b13be and 52f72ee.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (23)
  • packages/contracts/hardhat.config.ts (3 hunks)
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/config.json (0 hunks)
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/deployment.json (0 hunks)
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/states/2024-04-23.json (0 hunks)
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/states/2024-05-07.json (0 hunks)
  • packages/deploy/src/data/deploy/ethereum-v1.5-pendle/config.json (0 hunks)
  • packages/deploy/src/data/deploy/ethereum-v1.5-pendle/deployment.json (0 hunks)
  • packages/deploy/src/data/deploy/ethereum-v1.5-pendle/states/2024-05-08.json (0 hunks)
  • packages/deploy/src/data/deploy/ganache/config.json (0 hunks)
  • packages/deploy/src/data/deploy/ganache/deployment.json (0 hunks)
  • packages/deploy/src/data/deploy/ganache/states/2023-05-10.json (0 hunks)
  • packages/deploy/src/data/deploy/sonic-v1.5/config.json (1 hunks)
  • packages/deploy/src/data/deploy/sonic-v1.5/deployment.json (1 hunks)
  • packages/deploy/src/data/deploy/sonic-v1.5/states/2025-04-14.json (1 hunks)
  • packages/periphery/hardhat-configs/hardhat.config.ts (2 hunks)
  • packages/router/hardhat.config.ts (3 hunks)
  • packages/timelock/deployment/sonic/deployment-TimelockWhitelist-2025-04-14.json (1 hunks)
  • packages/timelock/hardhat.common.ts (1 hunks)
  • packages/timelock/hardhat.config.ts (1 hunks)
  • packages/timelock/package.json (1 hunks)
  • packages/timelock/tasks/timelock.ts (7 hunks)
  • packages/timelock/tasks/utils.ts (2 hunks)
  • scripts/build_script.sh (1 hunks)
💤 Files with no reviewable changes (10)
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/deployment.json
  • packages/deploy/src/data/deploy/ganache/config.json
  • packages/deploy/src/data/deploy/ethereum-v1.5-pendle/states/2024-05-08.json
  • packages/deploy/src/data/deploy/ethereum-v1.5-pendle/deployment.json
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/config.json
  • packages/deploy/src/data/deploy/ganache/deployment.json
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/states/2024-04-23.json
  • packages/deploy/src/data/deploy/ethereum-v1.5-pendle/config.json
  • packages/deploy/src/data/deploy/ganache/states/2023-05-10.json
  • packages/deploy/src/data/deploy/arbitrum-v1.5-pendle/states/2024-05-07.json
🧰 Additional context used
🧬 Code Graph Analysis (2)
packages/timelock/tasks/utils.ts (1)
packages/cli-common/src/sensitive.ts (1)
  • readSensitiveData (3-11)
packages/timelock/tasks/timelock.ts (1)
packages/timelock/tasks/utils.ts (3)
  • taskWithSigner (53-58)
  • SignerArgs (41-45)
  • getSigner (71-105)
🔇 Additional comments (23)
packages/timelock/hardhat.config.ts (1)

18-20: Network configuration added for Sonic blockchain.

The addition of the Sonic network configuration aligns with the PR objective of supporting a new blockchain. The RPC URL is correctly set to the Sonic Labs endpoint.

packages/timelock/package.json (1)

25-26: Dependencies added for improved signer utility.

The addition of prompts and its type definitions is appropriate for enhancing the user interface for signer-related tasks. The version pinning is also properly done to ensure consistency.

packages/deploy/src/data/deploy/sonic-v1.5/deployment.json (1)

1-11: New deployment configuration for Sonic network looks good.

The deployment configuration correctly defines the Marginly pool and Aave keeper addresses for the Sonic network deployment. The structure follows the project's conventions for deployment configurations.

packages/deploy/src/data/deploy/sonic-v1.5/states/2025-04-14.json (1)

1-32: Deployment state snapshot for Sonic network.

The state snapshot comprehensively captures all the necessary contract addresses and transaction hashes for the Sonic network deployment.

I notice that the date in the filename is "2025-04-14" which is in the future. Please verify if this is intentional or if the date should be updated to reflect the actual deployment date.

packages/timelock/deployment/sonic/deployment-TimelockWhitelist-2025-04-14.json (1)

1-7: Deployment record looks good

The deployment record for the TimelockControllerWhitelist contract on the sonic blockchain follows the expected JSON format with all required fields (address, transaction hash, and block number).

packages/router/hardhat.config.ts (3)

36-38: Network configuration for sonic looks good

The sonic network configuration is correctly added with the appropriate RPC URL.


47-47: API key configuration looks good

The etherscan API key for sonic is properly configured to use the SONIC_API_KEY environment variable.


66-73: Custom chain configuration for sonic looks good

The sonic custom chain is properly configured with the correct chainId and URLs for the API and browser interfaces.

packages/periphery/hardhat-configs/hardhat.config.ts (3)

41-43: Network configuration for sonic looks good

The sonic network configuration is correctly added with the appropriate RPC URL, consistent with other configuration files in the project.


50-50: API key configuration looks good

The etherscan API key for sonic is properly configured to use the SONIC_API_KEY environment variable.


61-68: Custom chain configuration for sonic looks good

The sonic custom chain is properly configured with the correct chainId and URLs for the API and browser interfaces, maintaining consistency with other configuration files.

packages/timelock/hardhat.common.ts (1)

24-38: Hardhat configuration updated to support Sonic network verification

The change restructures the Etherscan configuration to support verification on the Sonic blockchain. The API key is now organized by network, and a custom chain definition for Sonic (chainId 146) has been added with the appropriate API and browser URLs.

packages/contracts/hardhat.config.ts (3)

50-52: Added Sonic network configuration

Network configuration for Sonic blockchain has been added with the appropriate RPC URL.


64-64: Added Sonic Etherscan API key configuration

The Etherscan API key configuration now includes a reference to process.env.SONIC_API_KEY for the Sonic network.


99-106: Added Sonic custom chain definition for verification

Custom chain configuration for the Sonic network has been added with chainId 146 and appropriate API and browser URLs for contract verification.

packages/deploy/src/data/deploy/sonic-v1.5/config.json (2)

52-61: Verify pool parameters for Sonic deployment

The pool configuration uses high leverage (20x) and specific fee parameters. Ensure these values are appropriate for the Sonic network's liquidity and volatility characteristics.


1-84:

Details

✅ Verification successful

New deployment configuration for Sonic blockchain

This file provides a complete deployment configuration for the Sonic blockchain, including:

  • System context with Sonic's RPC URL
  • Chain ID verification (146)
  • Token definitions for "ws" and "usdc.e"
  • Price oracle configuration using Uniswap V3
  • Marginly factory settings with specific contract addresses
  • Marginly pool configuration for the ws-usdc.e pair
  • Adapter configuration for Uniswap V3
  • Marginly keeper configuration

However, I recommend verifying that the hardcoded addresses in this configuration are correct for the Sonic network environment:


🏁 Script executed:

#!/bin/bash
# Check if the token addresses exist on Sonic network

echo "Checking if token addresses exist on Sonic network..."
curl -s -X POST https://rpc.soniclabs.com \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0",
    "method":"eth_getCode",
    "params":["0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38", "latest"],
    "id":1
  }' | jq '.result'

echo "Checking if factory address exists on Sonic network..."
curl -s -X POST https://rpc.soniclabs.com \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0",
    "method":"eth_getCode",
    "params":["0xcb2436774C3e191c85056d248EF4260ce5f27A9D", "latest"],
    "id":1
  }' | jq '.result'

Length of output: 55057


Deployment Configuration Verified for Sonic Network

The RPC checks confirm that the “ws” token address (0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38) and the factory address (0xcb2436774C3e191c85056d248EF4260ce5f27A9D) both return substantial contract bytecode from the Sonic network—indicating that these contracts are indeed deployed as expected. The configuration file at packages/deploy/src/data/deploy/sonic-v1.5/config.json is complete and correctly sets up the network parameters and contract addresses.

• The “ws” token address shows valid deployed code.
• The factory address for the Uniswap V3 oracle is similarly validated.

If necessary, please consider verifying the remaining addresses (e.g., for the “usdc.e” token) with a similar process.

packages/timelock/tasks/utils.ts (2)

41-45: Added SignerArgs interface for credential management

New interface to standardize how signing credentials are handled across tasks.


53-58: Added taskWithSigner utility function

This helper function creates tasks with standardized options for providing signer credentials (private key or keystore file).

packages/timelock/tasks/timelock.ts (4)

14-14: Good refactoring to improve security and reusability

The change to import dedicated utilities for handling signers improves the codebase's security posture by abstracting authentication methods and encouraging safer practices than raw private keys.


21-25: Improved security through better authentication options

The task definition now offers multiple authentication methods (private key, keystore file, or interactive mode) instead of just exposing private keys directly. This is a significant security improvement.


41-44: Well-documented whitelist entries

The whitelist entries have been updated with appropriate comments explaining the purpose of each address/method pair, which improves maintainability.


22-83:

Details

❓ Verification inconclusive

Verify compatibility with existing workflow

The task parameter refactoring from direct private key to multiple authentication methods might break existing CI/CD workflows or scripts that used the old parameter style.


🏁 Script executed:

#!/bin/bash
# Check if there are any existing scripts or documentation that use the old parameter style
rg "npx hardhat --network .* --config hardhat\.config\.ts deploy-timelock-wl --signer" --type md --type sh

Length of output: 108


Please Verify CI/CD Workflow Compatibility with Refactored Signer Parameters

  • A grep search for legacy task invocations using the old --signer parameter did not return any results in our repository.
  • However, the refactoring from a direct private key approach to a multi-method authentication (via SignerArgs) may still impact external CI/CD scripts or documentation not stored in this codebase.
  • Action: Manually verify your deployment scripts and documentation (if maintained externally) to ensure that they use the updated authentication method. If any legacy usage is found, please update those workflows accordingly.

Comment on lines +167 to +170
const timelockAddress = '';

const timelock = TimelockController__factory.connect(timelockAddress, signer) as any as TimelockController;
const delay = 259_200; // 3 * 24 * 60 * 60
const timelock = TimelockController__factory.connect(timelockAddress, signer) as any as TimelockController;
const delay = 259_200; // 3 * 24 * 60 * 60
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add validation for hardcoded addresses

The timelockAddress is set to an empty string and should be populated before running this task. Consider adding validation to check for empty addresses before attempting to connect.

-  const timelockAddress = '';
+  const timelockAddress = '';
+  if (!timelockAddress) {
+    throw new Error('timelockAddress must be configured before running this task');
+  }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const timelockAddress = '';
const timelock = TimelockController__factory.connect(timelockAddress, signer) as any as TimelockController;
const delay = 259_200; // 3 * 24 * 60 * 60
const timelock = TimelockController__factory.connect(timelockAddress, signer) as any as TimelockController;
const delay = 259_200; // 3 * 24 * 60 * 60
const timelockAddress = '';
if (!timelockAddress) {
throw new Error('timelockAddress must be configured before running this task');
}
const timelock = TimelockController__factory.connect(timelockAddress, signer) as any as TimelockController;
const delay = 259_200; // 3 * 24 * 60 * 60

Comment on lines +186 to +188
const ownableContractAddress = '';
const ownableContract = Ownable2Step__factory.connect(ownableContractAddress, signer);
const timelockAddress = '';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add validation for hardcoded addresses

Both ownableContractAddress and timelockAddress are set to empty strings and should be populated before running this task. Consider adding validation to prevent runtime errors.

-  const ownableContractAddress = '';
-  const ownableContract = Ownable2Step__factory.connect(ownableContractAddress, signer);
-  const timelockAddress = '';
+  const ownableContractAddress = '';
+  const timelockAddress = '';
+  if (!ownableContractAddress || !timelockAddress) {
+    throw new Error('ownableContractAddress and timelockAddress must be configured before running this task');
+  }
+  const ownableContract = Ownable2Step__factory.connect(ownableContractAddress, signer);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const ownableContractAddress = '';
const ownableContract = Ownable2Step__factory.connect(ownableContractAddress, signer);
const timelockAddress = '';
const ownableContractAddress = '';
const timelockAddress = '';
if (!ownableContractAddress || !timelockAddress) {
throw new Error('ownableContractAddress and timelockAddress must be configured before running this task');
}
const ownableContract = Ownable2Step__factory.connect(ownableContractAddress, signer);

Comment on lines +136 to 144
//npx hardhat --network holesky --config hardhat.config.ts timelock-grant-role --keystore <private-key>
taskWithSigner('timelock-grant-role').setAction(async (taskArgs: SignerArgs, hre: HardhatRuntimeEnvironment) => {
const provider = hre.ethers.provider;

let signer = new hre.ethers.Wallet(taskArgs.signer, provider);
let signer = await getSigner(taskArgs, provider);

const cancellers = [];
const timelockAddress = '';
const cancellers = [];
const timelockAddress = '';

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

❓ Verification inconclusive

Template task needs configuration before use

This task contains empty arrays and placeholder addresses that need to be configured before use.


🏁 Script executed:

#!/bin/bash
# Check if this task is used anywhere in the codebase
rg "npx hardhat --network .* --config hardhat\.config\.ts timelock-grant-role" --type md

Length of output: 90


Attention: Configure Template Task Before Use

The timelock-grant-role task defined in packages/timelock/tasks/timelock.ts still contains placeholder configurations that must be updated before deployment. In particular:

  • The empty array (const cancellers = []) and the placeholder string for the timelock address (const timelockAddress = '') should be replaced with valid values.
  • Confirm that this task is either fully configured for production or clearly marked as a template to avoid accidental usage.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
.github/workflows/unit-tests-uniswap.yml (1)

20-23: Update the Node.js setup action version.
Actionlint indicates that using actions/setup-node@v3 may be too old for current GitHub Actions environments. Please consider upgrading to a later version (for example, actions/setup-node@v4 if available) to ensure improved compatibility and reliability.

🧰 Tools
🪛 actionlint (1.7.4)

21-21: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/unit-tests-contracts.yml (1)

16-20: Upgrade the Node.js setup action version for contracts tests.
The workflow currently uses actions/setup-node@v3 with Node.js version 21.1.0. Based on static analysis hints, it is recommended to update the action to a newer version (e.g., actions/setup-node@v4) to address potential compatibility issues.

🧰 Tools
🪛 actionlint (1.7.4)

16-16: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


18-18: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/integration-tests.yml (1)

51-54: Modernize the Node.js setup action.
While updating the Node.js version to 21.1.0 is aligned with other changes, the actions/setup-node@v3 action is flagged as outdated. An upgrade to a more recent version (such as @v4) is advisable to meet current GitHub Actions standards.

🧰 Tools
🪛 actionlint (1.7.4)

52-52: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/unit-tests-router.yml (1)

16-20: Update the Node.js setup action for router tests.
Similar to the other workflow files, this configuration uses actions/setup-node@v3, which static analysis suggests is too old. Please consider updating to a newer version (e.g., actions/setup-node@v4) to maintain consistency and ensure compatibility.

🧰 Tools
🪛 actionlint (1.7.4)

16-16: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


18-18: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 52f72ee and 712bbeb.

📒 Files selected for processing (4)
  • .github/workflows/integration-tests.yml (1 hunks)
  • .github/workflows/unit-tests-contracts.yml (1 hunks)
  • .github/workflows/unit-tests-router.yml (1 hunks)
  • .github/workflows/unit-tests-uniswap.yml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.4)
.github/workflows/unit-tests-contracts.yml

18-18: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/unit-tests-uniswap.yml

21-21: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/integration-tests.yml

52-52: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/unit-tests-router.yml

18-18: the runner of "actions/setup-node@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

@rudewalt rudewalt merged commit 7088da4 into main Apr 14, 2025
21 checks passed
@rudewalt rudewalt deleted the deploy/sonic branch April 14, 2025 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants