Conversation
WalkthroughAdds support for a new blockchain network (arctestnet, chain ID 5042002) by introducing configuration entries across network configs, deployment manifests, and deployment scripts. Includes updates to deployment automation tooling for async transaction sending capabilities and argument packaging adjustments. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
script/deploy/_targetState.json (1)
2225-2251: Alphabetical ordering inconsistency.Per coding guidelines, network entries should be ordered with mainnet first, then all other networks alphabetically. The
arctestnetentry is placed at the end (afterjovay), but it should come afterarbitrum(around line 95-147).Additionally, note that
DexManagerFacetandWhitelistManagerFacetare not included in this configuration, unlike most other production network entries. If this is intentional for the testnet, no action needed; otherwise, consider adding them for consistency.📝 Suggested fix for ordering
Move the
arctestnetblock to appear afterarbitrumand beforeavalancheto maintain alphabetical ordering.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@script/deploy/_targetState.json` around lines 2225 - 2251, Move the "arctestnet" network block so it appears immediately after "arbitrum" (i.e., maintain mainnet first then other networks alphabetically) and ensure its production LiFiDiamond entry matches the typical facet set; if you want consistency add the missing "DexManagerFacet" and "WhitelistManagerFacet" keys to the "LiFiDiamond" object (or explicitly confirm they are intentionally omitted) so the configuration for "arctestnet" aligns with other production network entries.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@script/tasks/updateERC20Proxy.sh`:
- Line 30: The call to universalCast in updateERC20Proxy.sh hardcodes the
environment as "production" which ignores the ENVIRONMENT variable and can route
privileged transactions incorrectly; update the universalCast invocation (the
line using universalCast "send" "$NETWORK" "production" "$ERC20PROXY"
"setAuthorizedCaller(address,bool)" "$EXECUTOR true" "false") to use the
ENVIRONMENT variable (e.g. "$ENVIRONMENT") instead of the literal "production"
so the script respects the passed environment for staging/testnet runs.
---
Nitpick comments:
In `@script/deploy/_targetState.json`:
- Around line 2225-2251: Move the "arctestnet" network block so it appears
immediately after "arbitrum" (i.e., maintain mainnet first then other networks
alphabetically) and ensure its production LiFiDiamond entry matches the typical
facet set; if you want consistency add the missing "DexManagerFacet" and
"WhitelistManagerFacet" keys to the "LiFiDiamond" object (or explicitly confirm
they are intentionally omitted) so the configuration for "arctestnet" aligns
with other production network entries.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 81642ef3-fb55-465b-8880-8b1a65cff618
📒 Files selected for processing (12)
config/networks.jsonconfig/permit2Proxy.jsonconfig/whitelist.jsondeployments/arctestnet.jsonfoundry.tomlscript/common/types.tsscript/deploy/_targetState.jsonscript/deploy/deployAllContracts.shscript/deploy/facets/UpdateDiamondLoupeFacet.s.solscript/helperFunctions.shscript/tasks/updateERC20Proxy.shscript/universalCast.sh
| echo "Setting $EXECUTOR as authorized caller for $ERC20PROXY on $NETWORK..." | ||
|
|
||
| universalCast "send" "$NETWORK" "production" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR" true | ||
| universalCast "send" "$NETWORK" "production" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR true" "false" |
There was a problem hiding this comment.
Use the passed environment instead of hardcoding production.
Line 30 ignores ENVIRONMENT, which can route this privileged call through the wrong execution/governance path for staging/testnet runs.
💡 Minimal fix
- universalCast "send" "$NETWORK" "production" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR true" "false"
+ universalCast "send" "$NETWORK" "$ENVIRONMENT" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR true" "false"📝 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.
| universalCast "send" "$NETWORK" "production" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR true" "false" | |
| universalCast "send" "$NETWORK" "$ENVIRONMENT" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR true" "false" |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@script/tasks/updateERC20Proxy.sh` at line 30, The call to universalCast in
updateERC20Proxy.sh hardcodes the environment as "production" which ignores the
ENVIRONMENT variable and can route privileged transactions incorrectly; update
the universalCast invocation (the line using universalCast "send" "$NETWORK"
"production" "$ERC20PROXY" "setAuthorizedCaller(address,bool)" "$EXECUTOR true"
"false") to use the ENVIRONMENT variable (e.g. "$ENVIRONMENT") instead of the
literal "production" so the script respects the passed environment for
staging/testnet runs.
Which Jira task belongs to this PR?
https://lifi.atlassian.net/browse/EX-308
Why did I implement it this way?
Checklist before requesting a review
Checklist for reviewer (DO NOT DEPLOY and contracts BEFORE CHECKING THIS!!!)