feat: add legacy OFT DVN upgrade scripts (3/3 Frax+Horizen+L0)#133
feat: add legacy OFT DVN upgrade scripts (3/3 Frax+Horizen+L0)#133dhruvinparikh wants to merge 1 commit into
Conversation
dhruvinparikh
commented
Apr 20, 2026
- 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)
There was a problem hiding this comment.
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.jsonMetis 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.
| function hasPeer(address _oft, uint32 _eid) internal view returns (bool) { | ||
| bytes32 peer = IOAppCore(_oft).peers(_eid); | ||
| return peer != bytes32(0); | ||
| } |
There was a problem hiding this comment.
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.