Skip to content

Migrate vault & cross-chain operators to the new Talos signer (+ unpause rebases)#2911

Open
sparrowDom wants to merge 10 commits into
masterfrom
sparrow/talosMigration
Open

Migrate vault & cross-chain operators to the new Talos signer (+ unpause rebases)#2911
sparrowDom wants to merge 10 commits into
masterfrom
sparrow/talosMigration

Conversation

@sparrowDom

@sparrowDom sparrowDom commented Jun 1, 2026

Copy link
Copy Markdown
Member

Overview

Contains migration files to migrate the signer to 0x739212d5bAfE6AAC8Be49a60B7d003bD41DBf38b which is the new Talos Relayer. The migration includes

  • 196 migration. Sets the operator on OETH, OUSD Vaults, unpauses rebases and cross chain master strategy. Executed by OGN governance
  • 197 migration sets the operator on XOGNRewardsModule6. Directly executed by the 5/8
  • 198 migration sets the oprator on 4 modules. Directly executed by the 2/8
  • 051 migration (Base). Sets the operator on the Base CrossChainRemoteStrategy and the OETHBaseVault (operatorAddr), and unpauses OETHb rebases. Executed via the Base Timelock (schedule + execute by the 5/8).
  • 052 migration (Base). Grants OPERATOR_ROLE on the Base MerklPoolBoosterBribesModule. Directly executed by the 2/8.
  • 053 migration (Base). Grants OPERATOR_ROLE on ClaimBribesSafeModule1. Directly executed by the ClaimBribes 2/8 (0xb6D85Ce798660076152d6FD3a484129668839c95).
  • 054 migration (Base). Grants OPERATOR_ROLE on ClaimBribesSafeModule3. Directly executed by the base.strategist 1/2 (0x28bce2eE5775B652D92bB7c2891A89F036619703).
  • 030 migration (Sonic). Sets the operator on the OSonicVault (operatorAddr), unpauses rebases, and sets the registrator on the SonicStakingStrategy. Executed via the Sonic Timelock (schedule + execute by the 5/8). The Sonic OriginARM operator is migrated separately in the arm-oeth repo.
  • 003 migration (HyperEVM). Sets the operator on the HyperEVM CrossChainRemoteStrategy. Executed via the HyperEVM Timelock (schedule + execute by the 5/8).
  • Supporting changes. The directly-executed Safe migrations (197, 198, 052–054) share a new deploymentWithGnosisSafe helper (utils/deploy.js) that writes a Gnosis Safe Transaction Builder JSON and impersonates the Safe on fork; the timelock migrations (051, 030, 003) use deployOnBase/deployOnSonic/deployOnHyperEVM (schedule + execute JSON). Cross-chain fork fixtures now read the operator from the strategy instead of hardcoding the relayer.
  • Collect XOGN Rewards Module (below) — each of the 5 external 3/5 Safes manually executes a grant + revoke on its module

Collect XOGN Rewards Module:
Grants OPERATOR_ROLE on CollectXOGNRewardsModule15 to the new Talos signer (so it can call collectRewards / ogn_claimAndForwardRewards), and revokes it from the old relayer 0x4b91827516f79d6F6a1F292eD99671663b09169agrantRole is additive, so the old operator must be explicitly removed.

Each module is admined by its own external 3/5 XOGN Safe, so this is 5 separate Safe submissions; each Safe executes two calls on its module (grant then revoke), ideally as a single Transaction Builder batch.

Shared calls (identical across all 5 modules — only the executing Safe + target to module differ)

role = OPERATOR_ROLE = 0x97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929; ETH value 0; both sent to the module.

Call Function account Raw calldata (data)
1. grant grantRole(bytes32,address) new Talos 0x739212d5bAfE6AAC8Be49a60B7d003bD41DBf38b 0x2f2ff15d97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929000000000000000000000000739212d5bafe6aac8be49a60b7d003bd41dbf38b
2. revoke revokeRole(bytes32,address) old relayer 0x4b91827516f79d6F6a1F292eD99671663b09169a 0xd547741f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9290000000000000000000000004b91827516f79d6f6a1f292ed99671663b09169a

The 5 transactions

# Execute from Safe (3/5) To — target CollectXOGNRewardsModuleN
1 eth:0x5c8228e709D7F91209DE898F6a7B8c6035A7B78f 0x15228dAE3B228175fBD9639d049265eFb08e60b6
2 eth:0x69497A2A170c138876F05Df01bFfDd5C4b651CF2 0x8e32A930CcFE108DC560eC9e630BA6b5f7E179c9
3 eth:0x684b38997afbBBC055e0BEB6d536686Ebd171bdB 0x460e4a0B14bD3F1e12f0c2194830c0204E5Bb147
4 eth:0xe555EFA16d38747F9e496926b576FD1ebD31DeCa 0xFbBb82c4F3B6f479DE1451C04A76ea80da4ff010
5 eth:0x6E75645EeDCCCAA0f472323Afce8f82B875C8CB9 0xAE67b612bD859378b7d0f6314E7Ee39ad4c6aBE6
6 base:0x28bce2eE5775B652D92bB7c2891A89F036619703 0x26179ada0f7cb714c11a8190e1f517988c28e759

@codecov

codecov Bot commented Jun 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.57%. Comparing base (2efa2a3) to head (98ecdaa).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2911      +/-   ##
==========================================
- Coverage   50.83%   44.57%   -6.26%     
==========================================
  Files         110      110              
  Lines        4873     4873              
  Branches     1353     1353              
==========================================
- Hits         2477     2172     -305     
- Misses       2392     2698     +306     
+ Partials        4        3       -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@clement-ux clement-ux left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM 👍

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.

3 participants