Skip to content

[SC rotation] Remove nominee bypass and create proposal payload - #380

Merged
gzeoneth merged 17 commits into
sc-rotationfrom
sc-rotation-remove-nominee-bypass
Jul 27, 2026
Merged

[SC rotation] Remove nominee bypass and create proposal payload#380
gzeoneth merged 17 commits into
sc-rotationfrom
sc-rotation-remove-nominee-bypass

Conversation

@TucksonDev

@TucksonDev TucksonDev commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

Forum post: https://forum.arbitrum.foundation/t/constitutional-aip-ratification-of-security-council-election-process-improvements/31048

Pre-deployed contracts

  1. New SecurityCouncilManager implementation
% FOUNDRY_PROFILE=sec_council_mgmt forge create SecurityCouncilManager -r $ARBONE_RPC --verify --broadcast
Deployer: 0x083D2aC7C551cE64D580C46AE57cEefAE6F4b567
Deployed to: 0x01B370d9b1ed1591C64C9a4b0FAFF193AF5Fa928
Transaction hash: 0x21f9252a19f354d13aefe351ac40139d6813a41f6aa47648ee61dcf7e8e20087

Deployed at: https://arbiscan.io/address/0x01B370d9b1ed1591C64C9a4b0FAFF193AF5Fa928

  1. New SecurityCouncilNomineeElectionGovernor implementation
% FOUNDRY_PROFILE=sec_council_mgmt forge create SecurityCouncilNomineeElectionGovernor -r $ARBONE_RPC --verify --broadcast
Deployer: 0x083D2aC7C551cE64D580C46AE57cEefAE6F4b567
Deployed to: 0xB4Fd52807d5856B4CfF85d53D53d1Dc714C4D482
Transaction hash: 0x522c443e717885b6afe5740ad62c15faa9857c73b1020966625c8fb884931289

Deployed at: https://arbiscan.io/address/0xB4Fd52807d5856B4CfF85d53D53d1Dc714C4D482

  1. New L2AddressRegistry (to include the new addresses)

Constructor arguments:

  • _coreGov: 0xf07DeD9dC292157749B6Fd268E37DF6EA38395B9
  • _treasuryGov: 0x789fC99093B09aD01C34DC7251D0C89ce743e5a4
  • _treasuryWallet: 0xF3FC178157fb3c87548bAA86F9d24BA38E649B58
  • _arbitrumDAOConstitution: 0x1D62fFeB72e4c360CcBbacf7c965153b00260417
  • _govProxyAdmin: 0xdb216562328215E010F819B5aBe947bad4ca961e
  • _scNomineeElectionGovernor: 0x8a1cDA8dee421cD06023470608605934c16A05a0
% forge create L2AddressRegistry -r $ARBONE_RPC --verify --broadcast --constructor-args 0xf07DeD9dC292157749B6Fd268E37DF6EA38395B9 0x789fC99093B09aD01C34DC7251D0C89ce743e5a4 0xF3FC178157fb3c87548bAA86F9d24BA38E649B58 0x1D62fFeB72e4c360CcBbacf7c965153b00260417 0xdb216562328215E010F819B5aBe947bad4ca961e 0x8a1cDA8dee421cD06023470608605934c16A05a0
Deployer: 0x083D2aC7C551cE64D580C46AE57cEefAE6F4b567
Deployed to: 0x1e03Aa1E483fCe52643a801d840A22f5eeE709bA
Transaction hash: 0x5f7cae46bdffd1eac0c585c5e0d1faede9018eb88f6de2ddb946ba17347780df

Deployed at: https://arbiscan.io/address/0x1e03aa1e483fce52643a801d840a22f5eee709ba

  1. SecurityCouncilUpgradeAction

Constructor arguments:

% FOUNDRY_PROFILE=sec_council_mgmt forge create SecurityCouncilUpgradeAction -r $ARBONE_RPC --verify --
constructor-args 0x1e03Aa1E483fCe52643a801d840A22f5eeE709bA 0x01B370d9b1ed1591C64C9a4b0FAFF193AF5Fa928 0xB4Fd52807d5856B4CfF85d53D53d1Dc714C4D482 3801600 0xCF57572261c7c2BCF21ffD220ea7d1a27D40A827 12 0x310d1c0495cf8ff7b5e89c26fbca91b230ce6dd2b9b8bde8c1a8605545f25063
Deployer: 0x083D2aC7C551cE64D580C46AE57cEefAE6F4b567
Deployed to: 0xeF98Fc7A7F08De47Ed01f3F11f07319c22106445
Transaction hash: 0xa6c09e66bf9967db0d5b75a0b33d895a4e04d19ed5696102680b3f8572b191e2

Deployed at: https://arbiscan.io/address/0xeF98Fc7A7F08De47Ed01f3F11f07319c22106445

The proposal payload executes the following actions:

  1. Execute SecurityCouncilUpgradeAction.perform() (Arbiscan) which will:
    • Upgrade the SecurityCouncilManager to the new implementation
    • Call SecurityCouncilManager.postUpgradeInit(), which will set the new minRotationPeriod and minRotationPeriodSetter variables
    • Upgrade the SecurityCouncilNomineeElectionGovernor to the new implementation
    • Call SecurityCouncilNomineeElectionGovernor.postUpgradeInit(), which sets the initial cadence to 6 months
    • Update the cadence to 12 months
    • Adjust the qualification threshold of the Member Election phase from 0.2% to 0.1% by calling scNomineeElectionGovernor.updateQuorumNumerator(10)
    • Update the constitution hash to reflect the text changes by calling arbitrumDaoConstitution.setConstitutionHash(newConstitutionHash)

Payload generation

yarn gen:proposalData \
  --govChainProviderRPC https://arb1.arbitrum.io/rpc \
  --actionChainIds \
    42161 \
  --actionAddresses \
    0xeF98Fc7A7F08De47Ed01f3F11f07319c22106445 \
  --writeToJsonPath \
    ./scripts/proposals/sec-council-upgrade-rotation/data.json

Simulations

https://www.tdly.co/shared/simulation/93de0e14-3a1e-4dbb-80ac-a3bec4db6d1c

Values for proposal creation (in UI)

Action 1

  • Target: 0x0000000000000000000000000000000000000064 (ArbSys precompile)
  • Value: 0 (default)
  • Calldata:
0x928c169a000000000000000000000000e6841d92b0c345144506576ec13ecf5103ac7f49000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003248f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000d078d01ffb5a3a5eac98137cbe898b2f21c1114069936d04a90b74ee9806e3f5000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000ef98fc7a7f08de47ed01f3f11f07319c2210644500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

(obtained with cast calldata "sendTxToL1(address,bytes)()" 0xE6841D92B0C345144506576eC13ECf5103aC7f49 0x8f2a0bb... , where the last value is the calldata in scripts/proposals/sec-council-upgrade-rotation/data.json)

@TucksonDev TucksonDev changed the title Sc rotation remove nominee bypass [SC rotation] Remove nominee bypass Jul 21, 2026
@gzeoneth
gzeoneth self-requested a review July 22, 2026 12:59

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

bypass removal is good, some additional change needed

need to be == 6
/// - Allowing existing sec council members to automatically progress from the Nominee Selection phase
remove
// Allowing existing sec council members to automatically progress from the Nominee Selection phase
remove

we also need the updated constitution for newConstitutionHash


SecurityCouncilNomineeElectionGovernor scNomineeElectionGovernor =
SecurityCouncilNomineeElectionGovernor(payable(address(reg.scNomineeElectionGovernor())));
vm.warp(1_757_937_601); // After the 2025 Sep election

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

No need to warp and create the election anymore


SecurityCouncilNomineeElectionGovernor scNomineeElectionGovernor =
SecurityCouncilNomineeElectionGovernor(payable(address(reg.scNomineeElectionGovernor())));
vm.warp(1_757_937_601); // After the 2025 Sep election

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

No need to warp and create the election anymore

@TucksonDev TucksonDev changed the title [SC rotation] Remove nominee bypass [SC rotation] Remove nominee bypass and create proposal payload Jul 22, 2026
@gzeoneth
gzeoneth self-requested a review July 27, 2026 07:28

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

@gzeoneth
gzeoneth merged commit add199d into sc-rotation Jul 27, 2026
7 of 8 checks passed
@gzeoneth
gzeoneth deleted the sc-rotation-remove-nominee-bypass branch July 27, 2026 07:30
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