Skip to content

Deploy network arc testnet#1645

Draft
0xDEnYO wants to merge 7 commits intomainfrom
deploy-network-arc-testnet
Draft

Deploy network arc testnet#1645
0xDEnYO wants to merge 7 commits intomainfrom
deploy-network-arc-testnet

Conversation

@0xDEnYO
Copy link
Contributor

@0xDEnYO 0xDEnYO commented Mar 5, 2026

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!!!)

  • I have checked that any arbitrary calls to external contracts are validated and or restricted
  • I have checked that any privileged calls (i.e. storage modifications) are validated and or restricted
  • I have ensured that any new contracts have had AT A MINIMUM 1 preliminary audit conducted on by <company/auditor>

@lifi-action-bot lifi-action-bot marked this pull request as draft March 5, 2026 10:15
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 5, 2026

Walkthrough

Adds support for a new testnet network (arctestnet) across configuration, deployment manifests, and deployment scripts. Includes network RPC endpoints, contract addresses, periphery configurations, deployment state, and async casting support in deployment utilities.

Changes

Cohort / File(s) Summary
Network Configuration
config/networks.json, config/permit2Proxy.json, foundry.toml, script/common/types.ts
Added arctestnet network entry with RPC endpoints, explorer details, contract addresses; added optional castSendAsync boolean property to INetwork interface.
Whitelist Configuration
config/whitelist.json
Added arctestnet periphery section with FeeCollector, FeeForwarder, and LiFiDEXAggregator contract entries including selectors and signatures.
Deployment Manifests
deployments/arctestnet.json, deployments/arctestnet.diamond.json, script/deploy/_targetState.json
Added new deployment files for arctestnet with facet-to-address mappings and production LiFiDiamond configuration with versioned facets.
Deployment Script Enhancements
script/helperFunctions.sh, script/universalCast.sh, deployAllContracts.sh
Added getCastSendAsync() function to determine async sending mode per network; integrated async/confirmation flag handling in universalSendRaw with 3-second delay for async sends.
Facet & Periphery Updates
script/deploy/facets/UpdateDiamondLoupeFacet.s.sol, script/tasks/diamondUpdatePeriphery.sh
Moved cutData encoding/logging to earlier phase in UpdateDiamondLoupeFacet; redacted private key in commented example in diamondUpdatePeriphery.sh.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • #1438: Adds new network (botanix) across the same configuration and deployment files using identical patterns.
  • #1225: Adds new network across same configuration and deployment files (networks.json, permit2Proxy.json, whitelist.json, deployments/*, foundry.toml, etc.).
  • #1497: Adds LiFiIntentEscrowFacet deployment entry which also appears in this PR's target state.

Suggested labels

NewNetwork

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 57.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The description follows the template structure with Jira task link provided, but the 'Why did I implement it this way?' section is empty and all checklist items remain unchecked. Fill in the implementation rationale section and explicitly check off completed checklist items to clarify the PR's readiness status.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the primary change: deploying the arc testnet network across configuration and deployment files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch deploy-network-arc-testnet

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@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: 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 arctestnet entry is placed at the end (after jovay), but it should come after arbitrum (around line 95-147).

Additionally, note that DexManagerFacet and WhitelistManagerFacet are 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 arctestnet block to appear after arbitrum and before avalanche to 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

📥 Commits

Reviewing files that changed from the base of the PR and between c00e856 and 64dd968.

📒 Files selected for processing (12)
  • config/networks.json
  • config/permit2Proxy.json
  • config/whitelist.json
  • deployments/arctestnet.json
  • foundry.toml
  • script/common/types.ts
  • script/deploy/_targetState.json
  • script/deploy/deployAllContracts.sh
  • script/deploy/facets/UpdateDiamondLoupeFacet.s.sol
  • script/helperFunctions.sh
  • script/tasks/updateERC20Proxy.sh
  • script/universalCast.sh

Copy link
Contributor

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
script/deploy/deployAllContracts.sh (1)

187-198: ⚠️ Potential issue | 🟡 Minor

Missing error check for DiamondLoupeFacet update.

The first diamondUpdateFacet call for UpdateDiamondLoupeFacet (line 192) lacks error checking. If this step fails, the script proceeds to update core facets anyway, potentially leaving the diamond in an inconsistent state.

Consider adding a checkFailure call after line 192:

Proposed fix
     echo "[info] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> now adding DiamondLoupeFacet to diamond contract"
     diamondUpdateFacet "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME" "UpdateDiamondLoupeFacet" false
+    checkFailure $? "update DiamondLoupeFacet in $DIAMOND_CONTRACT_NAME on network $NETWORK"

     # update diamond with core facets
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@script/deploy/deployAllContracts.sh` around lines 187 - 198, The script calls
diamondUpdateFacet "$NETWORK" "$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME"
"UpdateDiamondLoupeFacet" without checking for failure, so if that step fails
the script continues and may leave the diamond inconsistent; after the
diamondUpdateFacet call for "UpdateDiamondLoupeFacet" add a call to checkFailure
(or the existing failure handler used elsewhere) to abort or handle errors
before proceeding to the next diamondUpdateFacet for "UpdateCoreFacets",
ensuring the check references the same DIAMOND_CONTRACT_NAME/NETWORK/ENVIRONMENT
context.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@script/deploy/deployAllContracts.sh`:
- Around line 187-198: The script calls diamondUpdateFacet "$NETWORK"
"$ENVIRONMENT" "$DIAMOND_CONTRACT_NAME" "UpdateDiamondLoupeFacet" without
checking for failure, so if that step fails the script continues and may leave
the diamond inconsistent; after the diamondUpdateFacet call for
"UpdateDiamondLoupeFacet" add a call to checkFailure (or the existing failure
handler used elsewhere) to abort or handle errors before proceeding to the next
diamondUpdateFacet for "UpdateCoreFacets", ensuring the check references the
same DIAMOND_CONTRACT_NAME/NETWORK/ENVIRONMENT context.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1c99b6fd-0bc3-403b-9b56-f57b571d166a

📥 Commits

Reviewing files that changed from the base of the PR and between 64dd968 and e956e5d.

📒 Files selected for processing (10)
  • config/networks.json
  • config/permit2Proxy.json
  • config/whitelist.json
  • deployments/arctestnet.diamond.json
  • deployments/arctestnet.json
  • foundry.toml
  • script/deploy/_targetState.json
  • script/deploy/deployAllContracts.sh
  • script/helperFunctions.sh
  • script/tasks/diamondUpdatePeriphery.sh
✅ Files skipped from review due to trivial changes (1)
  • script/tasks/diamondUpdatePeriphery.sh
🚧 Files skipped from review as they are similar to previous changes (4)
  • config/permit2Proxy.json
  • foundry.toml
  • config/networks.json
  • script/helperFunctions.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants