Skip to content

feat: add legacy OFT DVN upgrade scripts (3/3 Frax+Horizen+L0)#133

Open
dhruvinparikh wants to merge 1 commit into
FraxFinance:masterfrom
dhruvinparikh:ops/fix-legacy-dvns
Open

feat: add legacy OFT DVN upgrade scripts (3/3 Frax+Horizen+L0)#133
dhruvinparikh wants to merge 1 commit into
FraxFinance:masterfrom
dhruvinparikh:ops/fix-legacy-dvns

Conversation

@dhruvinparikh
Copy link
Copy Markdown
Contributor

  • Step 1: Block send lib for all 6 legacy OFTs across 4 chains
  • Step 2+3: Set 3/3 DVN config and restore send lib (batched)
  • Metis excluded from Frax DVN (stays 2/2)
  • Fix Metis RPC in L0Config.json
  • Generated Safe TX batch JSONs (24 per step, per-OFT)

- Step 1: Block send lib for all 6 legacy OFTs across 4 chains
- Step 2+3: Set 3/3 DVN config and restore send lib (batched)
- Metis excluded from Frax DVN (stays 2/2)
- Fix Metis RPC in L0Config.json
- Generated Safe TX batch JSONs (24 per step, per-OFT)
Copilot AI review requested due to automatic review settings April 20, 2026 15:42
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds operational scripts and pre-generated Safe Transaction Builder batches to upgrade DVN configuration for legacy OFTs across Ethereum, Metis, Blast, and Base, including a Metis RPC correction in the shared LayerZero config.

Changes:

  • Added Step 1 script to block legacy OFT send libraries across legacy pathways.
  • Added Step 2+3 script to apply DVN configuration (3/3 where applicable) and restore send libraries, plus a shared inherited base contract.
  • Updated scripts/L0Config.json Metis RPC endpoint and added generated Safe batch JSONs for Steps 1 and 2+3.

Reviewed changes

Copilot reviewed 52 out of 52 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
scripts/ops/fix/FixLegacyDVNs/FixLegacyDVNsInherited.s.sol Shared base for legacy-chain/legacy-OFT iteration and helper utilities.
scripts/ops/fix/FixLegacyDVNs/1_SetBlockSendLibLegacy.s.sol Step 1 script to set blocked send library for legacy OFTs.
scripts/ops/fix/FixLegacyDVNs/2_FixDVNsAndRestoreSendLibLegacy.s.sol Step 2+3 script to set DVN config (where applicable) and restore send libraries.
scripts/L0Config.json Updates Metis RPC URL.
scripts/ops/fix/FixLegacyDVNs/txs/1776662165-2_FixDVNsAndRestoreSendLibLegacy-FPI-8453.json Safe batch for Step 2+3 (FPI, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776662161-2_FixDVNsAndRestoreSendLibLegacy-FPI-81457.json Safe batch for Step 2+3 (FPI, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662159-2_FixDVNsAndRestoreSendLibLegacy-FPI-1088.json Safe batch for Step 2+3 (FPI, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776662157-2_FixDVNsAndRestoreSendLibLegacy-FRAX-8453.json Safe batch for Step 2+3 (FRAX, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776662155-2_FixDVNsAndRestoreSendLibLegacy-FRAX-81457.json Safe batch for Step 2+3 (FRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662149-2_FixDVNsAndRestoreSendLibLegacy-sfrxETH-8453.json Safe batch for Step 2+3 (sfrxETH, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776662147-2_FixDVNsAndRestoreSendLibLegacy-sfrxETH-81457.json Safe batch for Step 2+3 (sfrxETH, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662147-2_FixDVNsAndRestoreSendLibLegacy-FRAX-1.json Safe batch for Step 2+3 (FRAX, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776662147-2_FixDVNsAndRestoreSendLibLegacy-FPI-1.json Safe batch for Step 2+3 (FPI, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776662143-2_FixDVNsAndRestoreSendLibLegacy-frxETH-8453.json Safe batch for Step 2+3 (frxETH, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776662139-2_FixDVNsAndRestoreSendLibLegacy-frxETH-81457.json Safe batch for Step 2+3 (frxETH, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662135-2_FixDVNsAndRestoreSendLibLegacy-sfrxETH-1.json Safe batch for Step 2+3 (sfrxETH, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776662135-2_FixDVNsAndRestoreSendLibLegacy-sFRAX-8453.json Safe batch for Step 2+3 (sFRAX, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776662135-2_FixDVNsAndRestoreSendLibLegacy-frxETH-1.json Safe batch for Step 2+3 (frxETH, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776662131-2_FixDVNsAndRestoreSendLibLegacy-sfrxETH-1088.json Safe batch for Step 2+3 (sfrxETH, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776662131-2_FixDVNsAndRestoreSendLibLegacy-sFRAX-81457.json Safe batch for Step 2+3 (sFRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662131-2_FixDVNsAndRestoreSendLibLegacy-sFRAX-1088.json Safe batch for Step 2+3 (sFRAX, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776662131-2_FixDVNsAndRestoreSendLibLegacy-frxETH-1088.json Safe batch for Step 2+3 (frxETH, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776662131-2_FixDVNsAndRestoreSendLibLegacy-FRAX-1088.json Safe batch for Step 2+3 (FRAX, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776662127-2_FixDVNsAndRestoreSendLibLegacy-LFRAX-8453.json Safe batch for Step 2+3 (LFRAX, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776662123-2_FixDVNsAndRestoreSendLibLegacy-sFRAX-1.json Safe batch for Step 2+3 (sFRAX, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776662123-2_FixDVNsAndRestoreSendLibLegacy-LFRAX-81457.json Safe batch for Step 2+3 (LFRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662123-2_FixDVNsAndRestoreSendLibLegacy-LFRAX-81457.json Safe batch for Step 2+3 (LFRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776662111-2_FixDVNsAndRestoreSendLibLegacy-LFRAX-1.json Safe batch for Step 2+3 (LFRAX, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776662101-2_FixDVNsAndRestoreSendLibLegacy-LFRAX-1088.json Safe batch for Step 2+3 (LFRAX, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776661061-1_SetBlockSendLibLegacy-FPI-8453.json Safe batch for Step 1 (FPI, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776661061-1_SetBlockSendLibLegacy-FPI-81457.json Safe batch for Step 1 (FPI, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776661059-1_SetBlockSendLibLegacy-FRAX-8453.json Safe batch for Step 1 (FRAX, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776661057-1_SetBlockSendLibLegacy-FRAX-81457.json Safe batch for Step 1 (FRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776661055-1_SetBlockSendLibLegacy-sfrxETH-8453.json Safe batch for Step 1 (sfrxETH, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776661055-1_SetBlockSendLibLegacy-sfrxETH-81457.json Safe batch for Step 1 (sfrxETH, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776661055-1_SetBlockSendLibLegacy-FRAX-1.json Safe batch for Step 1 (FRAX, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776661055-1_SetBlockSendLibLegacy-FPI-1.json Safe batch for Step 1 (FPI, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776661053-1_SetBlockSendLibLegacy-sfrxETH-1088.json Safe batch for Step 1 (sfrxETH, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776661053-1_SetBlockSendLibLegacy-FRAX-1088.json Safe batch for Step 1 (FRAX, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776661053-1_SetBlockSendLibLegacy-FPI-1088.json Safe batch for Step 1 (FPI, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776661051-1_SetBlockSendLibLegacy-frxETH-8453.json Safe batch for Step 1 (frxETH, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776661051-1_SetBlockSendLibLegacy-frxETH-81457.json Safe batch for Step 1 (frxETH, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776661049-1_SetBlockSendLibLegacy-sFRAX-8453.json Safe batch for Step 1 (sFRAX, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776661049-1_SetBlockSendLibLegacy-frxETH-1088.json Safe batch for Step 1 (frxETH, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776661047-1_SetBlockSendLibLegacy-sFRAX-81457.json Safe batch for Step 1 (sFRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776661045-1_SetBlockSendLibLegacy-LFRAX-8453.json Safe batch for Step 1 (LFRAX, Base).
scripts/ops/fix/FixLegacyDVNs/txs/1776661043-1_SetBlockSendLibLegacy-sfrxETH-1.json Safe batch for Step 1 (sfrxETH, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776661043-1_SetBlockSendLibLegacy-sFRAX-1.json Safe batch for Step 1 (sFRAX, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776661043-1_SetBlockSendLibLegacy-frxETH-1.json Safe batch for Step 1 (frxETH, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776661043-1_SetBlockSendLibLegacy-LFRAX-81457.json Safe batch for Step 1 (LFRAX, Blast).
scripts/ops/fix/FixLegacyDVNs/txs/1776661031-1_SetBlockSendLibLegacy-LFRAX-1.json Safe batch for Step 1 (LFRAX, Ethereum).
scripts/ops/fix/FixLegacyDVNs/txs/1776661025-1_SetBlockSendLibLegacy-sFRAX-1088.json Safe batch for Step 1 (sFRAX, Metis).
scripts/ops/fix/FixLegacyDVNs/txs/1776661025-1_SetBlockSendLibLegacy-LFRAX-1088.json Safe batch for Step 1 (LFRAX, Metis).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +78 to +81
function hasPeer(address _oft, uint32 _eid) internal view returns (bool) {
bytes32 peer = IOAppCore(_oft).peers(_eid);
return peer != bytes32(0);
}
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

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

FixLegacyDVNsInherited calls IOAppCore(_oft).peers(_eid) but does not import IOAppCore. This compiles only because leaf scripts import IOAppCore, and will break if another script imports FixLegacyDVNsInherited without also importing IOAppCore. Import IOAppCore in this file to make the dependency explicit and self-contained.

Copilot uses AI. Check for mistakes.
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