[ARM] Unpause Ethena ARM via governance (035)#279
Open
clement-ux wants to merge 1 commit into
Open
Conversation
8b84bba to
d3647fe
Compare
The Ethena ARM was left paused after the 031 multi-base upgrade, and its ownership has since moved from the Guardian Safe to the mainnet Timelock. Add 035_UnpauseEthenaARMScript: a governance-only proposal that calls unpause() on the ARM through GOVERNOR_SIX -> Timelock (the same path used for LidoARM/EtherFiARM). The propose() calldata and proposal id are produced by `make simulate`, which runs DeployManager against the latest mainnet state where the ARM is Timelock-owned. Because the script runs through DeployManager (skip = false), the smoke/fork suite must fork a post-transfer block (the default latest, per .env.example); at an earlier block the ARM is still multisig-owned and the proposal simulation reverts. Record the proposal id in build/deployments-1.json with tsGovernance = 0 (governance pending): DeployManager re-simulates it on fork until it is executed on-chain.
d3647fe to
cfc118f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The Ethena ARM is currently paused on-chain: it was left paused after the 031 multi-base upgrade and never unpaused. Since then, ownership of the ARM has moved from the 5/8 Guardian Safe to the mainnet Timelock, so unpausing can no longer be done by a direct multisig call — it must go through a
GOVERNOR_SIXgovernance proposal.This PR adds a governance-only deployment script that submits a single
unpause()action on the Ethena ARM. No contracts are deployed.Deployment
Script
script/deploy/mainnet/035_UnpauseEthenaARMScript.s.solThe
propose()calldata and proposal id below are produced by:make simulateruns DeployManager against the latest mainnet state (where the ARM is Timelock-owned), simulates the proposal end-to-end, and logs the GOVERNOR_SIXpropose()calldata to submit.Governance
The Ethena ARM is owned by the Timelock (
0x35918cDE7233F2dD33fA41ae3Cb6aE0e42E0e69F), which is the executor of the OZ GovernorGOVERNOR_SIX(0x1D3Fbd4d129Ddd2372EA85c5Fa00b2682081c9EC). When the proposal executes, GovernorSix routes the call through the Timelock, which holds both theownerand proxy-admin roles on the ARM.Verified on-chain:
owner()0x35918cDE…E0e69F0x35918cDE…E0e69FGovernorSix.timelock()0x35918cDE…E0e69Fpaused()trueThe proposal performs 1 action on the EthenaARM proxy
0xCEDa2d856238aA0D12f6329de20B9115f07C366d(value0), as built in_buildGovernanceProposal():unpause()0x3f4ba83aDescription:
Unpause the Ethena ARMProposal id:
105952564920326880829480980653921695351704517467605619581569766325476268429476propose()calldataCalldata for
propose(address[],uint256[],string[],bytes[],string)to submit to GOVERNOR_SIX (0x1D3Fbd4d129Ddd2372EA85c5Fa00b2682081c9EC):Tests
This script deploys nothing — it only builds the proposal. It runs through DeployManager (
skip = false), so the smoke suite simulates it duringsetUp()and the ARM ends up unpaused for the swap/deposit tests.Because the proposal executes through the Timelock, the smoke/fork suite must fork a post-transfer block (the default
latest, per.env.example); at an earlier block the ARM is still multisig-owned and the simulation reverts withTimelockController: underlying transaction reverted.make test-smoke@ block25379366(post-transfer) — 49/49 passing, includingFork_EthenaARM_Smoke_Test12/12 (swaps run against the now-unpaused ARM).