From 313c44f863286996a2ea79511c79e42ddf722dcb Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:16:47 -0700 Subject: [PATCH 1/6] verifiable proposal generation --- .../DeployActivateDvpQuorumUpgrade.s.sol | 45 +++++++++++++++++++ scripts/proposals/ActivateDvpQuorum/README.md | 11 +++++ scripts/proposals/ActivateDvpQuorum/data.json | 4 +- .../proposals/ActivateDvpQuorum/generate.bash | 9 ++++ 4 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol create mode 100644 scripts/proposals/ActivateDvpQuorum/README.md create mode 100755 scripts/proposals/ActivateDvpQuorum/generate.bash diff --git a/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol b/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol new file mode 100644 index 00000000..e96c7ee7 --- /dev/null +++ b/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; + +import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; + +import {L2ArbitrumGovernor} from "src/L2ArbitrumGovernor.sol"; +import {L2ArbitrumToken} from "src/L2ArbitrumToken.sol"; +import {ActivateDvpQuorumAction} from "src/gov-action-contracts/AIPs/ActivateDvpQuorumAction.sol"; + +/// @notice Deploys the ActivateDvpQuorumAction contract with the appropriate parameters. +/// Uses CREATE2 with a salt of 0 for deterministic address and easy verification. +contract DeployActivateDvpQuorumUpgrade is Script{ + function run() external { + vm.startBroadcast(); + + bytes32 salt = bytes32(0); + + address l2GovernorImpl = address(new L2ArbitrumGovernor{salt: salt}()); + address l2TokenImpl = address(new L2ArbitrumToken{salt: salt}()); + + ActivateDvpQuorumAction action = new ActivateDvpQuorumAction{salt: salt}({ + _l2AddressRegistry: 0x56C4E9Eb6c63aCDD19AeC2b1a00e4f0d7aBda9d3, + _arbTokenProxy: 0x912CE59144191C1204E64559FE8253a0e49E6548, + _govProxyAdmin: ProxyAdmin(0xdb216562328215E010F819B5aBe947bad4ca961e), + _newGovernorImpl: l2GovernorImpl, + _newTokenImpl: l2TokenImpl, + _newCoreQuorumNumerator: 5000, // denominator is 10_000, so this is 50% + _coreMinimumQuorum: 150_000_000 ether, + _coreMaximumQuorum: 450_000_000 ether, + _newTreasuryQuorumNumerator: 4000, // 40% + _treasuryMinimumQuorum: 100_000_000 ether, + _treasuryMaximumQuorum: 300_000_000 ether, + + // TODO: Update this value before proposal submission + _initialTotalDelegationEstimate: 5_500_500_000 ether // include EXCLUDED tokens + }); + + console.log("ActivateDvpQuorumAction deployed at:", address(action)); + + vm.stopBroadcast(); + } +} \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/README.md b/scripts/proposals/ActivateDvpQuorum/README.md new file mode 100644 index 00000000..87e569cc --- /dev/null +++ b/scripts/proposals/ActivateDvpQuorum/README.md @@ -0,0 +1,11 @@ +# Activate DVP Quorum Proposal Payload + +NOTE THAT THE ACTION HAS NOT BEEN DEPLOYED, THIS IS BECAUSE WE WILL RESET TOTAL DELEGATION ESTIMATE SHORTLY BEFORE PROPOSAL SUBMISSION. +THIS REQUIRES A REDEPLOYMENT OF THE ACTION. + +How to verify: + +1. Read `DeployActivateDvpQuorumUpgrade.s.sol` +1. Run `DeployActivateDvpQuorumUpgrade.s.sol` with no rpc. Ensure the printed action address has code on arb1. +1. Ensure that the printed action is contained in `generate.bash` +1. Run `generate.bash` to regenerate `data.json` \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/data.json b/scripts/proposals/ActivateDvpQuorum/data.json index 643879eb..f34b113b 100644 --- a/scripts/proposals/ActivateDvpQuorum/data.json +++ b/scripts/proposals/ActivateDvpQuorum/data.json @@ -3,10 +3,10 @@ 42161 ], "actionAddresses": [ - "0x19C8Ea5F8288abF138D72a13344E699a7A71400c" + "0x4a3126bfAaF7B657C591988963EB32d8bd398c04" ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000b7c5875f8d6dac043d4278efb5a58e9834260314ac17df813eaf54545f5a149f000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd00000000000000000000000019c8ea5f8288abf138d72a13344e699a7a71400c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000948d17d7655fe3c28d0c162ef2e5655015a133038b23bad37cb9c2aae036ec33000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/generate.bash b/scripts/proposals/ActivateDvpQuorum/generate.bash new file mode 100755 index 00000000..3932aa76 --- /dev/null +++ b/scripts/proposals/ActivateDvpQuorum/generate.bash @@ -0,0 +1,9 @@ +#!/bin/bash + +yarn gen:proposalData \ + --govChainProviderRPC https://arb1.arbitrum.io/rpc \ + --actionChainIds \ + 42161 \ + --actionAddresses \ + 0x4a3126bfAaF7B657C591988963EB32d8bd398c04 \ + --writeToJsonPath ./scripts/proposals/ActivateDvpQuorum/data.json \ No newline at end of file From fde0caaa3581f5fc591a37ebb3f276361450a53d Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:45:37 -0700 Subject: [PATCH 2/6] set constitution hash --- scripts/proposals/ActivateDvpQuorum/README.md | 2 +- scripts/proposals/ActivateDvpQuorum/data.json | 6 ++++-- .../proposals/ActivateDvpQuorum/generate.bash | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/scripts/proposals/ActivateDvpQuorum/README.md b/scripts/proposals/ActivateDvpQuorum/README.md index 87e569cc..611a9692 100644 --- a/scripts/proposals/ActivateDvpQuorum/README.md +++ b/scripts/proposals/ActivateDvpQuorum/README.md @@ -7,5 +7,5 @@ How to verify: 1. Read `DeployActivateDvpQuorumUpgrade.s.sol` 1. Run `DeployActivateDvpQuorumUpgrade.s.sol` with no rpc. Ensure the printed action address has code on arb1. -1. Ensure that the printed action is contained in `generate.bash` +1. Read `generate.bash` and ensure that the printed action is included 1. Run `generate.bash` to regenerate `data.json` \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/data.json b/scripts/proposals/ActivateDvpQuorum/data.json index f34b113b..5a590636 100644 --- a/scripts/proposals/ActivateDvpQuorum/data.json +++ b/scripts/proposals/ActivateDvpQuorum/data.json @@ -1,12 +1,14 @@ { "actionChainIds": [ + 42161, 42161 ], "actionAddresses": [ - "0x4a3126bfAaF7B657C591988963EB32d8bd398c04" + "0x4a3126bfAaF7B657C591988963EB32d8bd398c04", + "0x1D62fFeB72e4c360CcBbacf7c965153b00260417" ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000948d17d7655fe3c28d0c162ef2e5655015a133038b23bad37cb9c2aae036ec33000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000d1d64e18c0df526973f2bf6f689a507806403eeedd1024075b1ac0e3a7fd38e2000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/generate.bash b/scripts/proposals/ActivateDvpQuorum/generate.bash index 3932aa76..105612d0 100755 --- a/scripts/proposals/ActivateDvpQuorum/generate.bash +++ b/scripts/proposals/ActivateDvpQuorum/generate.bash @@ -1,9 +1,25 @@ #!/bin/bash +# todo: replace with actual constitution hash once available +# todo: redeploy action contract with better estimate and replace address below + yarn gen:proposalData \ --govChainProviderRPC https://arb1.arbitrum.io/rpc \ + --actionTypes \ + 0 \ + 1 \ --actionChainIds \ 42161 \ + 42161 \ --actionAddresses \ 0x4a3126bfAaF7B657C591988963EB32d8bd398c04 \ + 0x1D62fFeB72e4c360CcBbacf7c965153b00260417 \ + --upgradeValues \ + 0 \ + 0 \ + --upgradeDatas \ + "$(cast sig "perform()")" \ + "$(cast calldata "setConstitutionHash(bytes32)" 0x0000000000000000000000000000000000000000000000000000000000000000)" \ + --predecessor \ + 0x0000000000000000000000000000000000000000000000000000000000000000 \ --writeToJsonPath ./scripts/proposals/ActivateDvpQuorum/data.json \ No newline at end of file From 6810faeaa80d74daaa7dd80ddab81d58d0abd7ca Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:51:37 -0700 Subject: [PATCH 3/6] deploy --- .../ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol | 2 +- scripts/proposals/ActivateDvpQuorum/README.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol b/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol index e96c7ee7..a4ebaf92 100644 --- a/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol +++ b/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol @@ -11,7 +11,7 @@ import {L2ArbitrumToken} from "src/L2ArbitrumToken.sol"; import {ActivateDvpQuorumAction} from "src/gov-action-contracts/AIPs/ActivateDvpQuorumAction.sol"; /// @notice Deploys the ActivateDvpQuorumAction contract with the appropriate parameters. -/// Uses CREATE2 with a salt of 0 for deterministic address and easy verification. +/// Uses CREATE2 for deterministic address and easy verification. contract DeployActivateDvpQuorumUpgrade is Script{ function run() external { vm.startBroadcast(); diff --git a/scripts/proposals/ActivateDvpQuorum/README.md b/scripts/proposals/ActivateDvpQuorum/README.md index 611a9692..99d1e06f 100644 --- a/scripts/proposals/ActivateDvpQuorum/README.md +++ b/scripts/proposals/ActivateDvpQuorum/README.md @@ -1,7 +1,8 @@ # Activate DVP Quorum Proposal Payload -NOTE THAT THE ACTION HAS NOT BEEN DEPLOYED, THIS IS BECAUSE WE WILL RESET TOTAL DELEGATION ESTIMATE SHORTLY BEFORE PROPOSAL SUBMISSION. -THIS REQUIRES A REDEPLOYMENT OF THE ACTION. +NOTE THAT THE CURRENTLY DEPLOYED ACTION LIKELY HAS A STALE TOTAL DELEGATION ESTIMATE. + +MAKE SURE TO SET A REAL CONSTITUTION HASH IN `generate.bash` How to verify: From c1d33b4cc9b41d9e96c84ccc1b80545703512203 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:44:21 -0700 Subject: [PATCH 4/6] more recognizable hash --- scripts/proposals/ActivateDvpQuorum/data.json | 2 +- scripts/proposals/ActivateDvpQuorum/generate.bash | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/proposals/ActivateDvpQuorum/data.json b/scripts/proposals/ActivateDvpQuorum/data.json index 5a590636..65af54fa 100644 --- a/scripts/proposals/ActivateDvpQuorum/data.json +++ b/scripts/proposals/ActivateDvpQuorum/data.json @@ -9,6 +9,6 @@ ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000d1d64e18c0df526973f2bf6f689a507806403eeedd1024075b1ac0e3a7fd38e2000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000d1d64e18c0df526973f2bf6f689a507806403eeedd1024075b1ac0e3a7fd38e2000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa700000000000000000000000000000000000000000000000000000000001122330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/generate.bash b/scripts/proposals/ActivateDvpQuorum/generate.bash index 105612d0..6399fbff 100755 --- a/scripts/proposals/ActivateDvpQuorum/generate.bash +++ b/scripts/proposals/ActivateDvpQuorum/generate.bash @@ -19,7 +19,7 @@ yarn gen:proposalData \ 0 \ --upgradeDatas \ "$(cast sig "perform()")" \ - "$(cast calldata "setConstitutionHash(bytes32)" 0x0000000000000000000000000000000000000000000000000000000000000000)" \ + "$(cast calldata "setConstitutionHash(bytes32)" 0x0000000000000000000000000000000000000000000000000000000000112233)" \ --predecessor \ 0x0000000000000000000000000000000000000000000000000000000000000000 \ --writeToJsonPath ./scripts/proposals/ActivateDvpQuorum/data.json \ No newline at end of file From 9d662c43eba89df803b0a7e356dda2ec12dd1136 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 17 Feb 2026 08:39:03 -0700 Subject: [PATCH 5/6] update constitution hash --- scripts/proposals/ActivateDvpQuorum/README.md | 2 -- scripts/proposals/ActivateDvpQuorum/data.json | 2 +- scripts/proposals/ActivateDvpQuorum/generate.bash | 5 +++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/proposals/ActivateDvpQuorum/README.md b/scripts/proposals/ActivateDvpQuorum/README.md index 99d1e06f..2940a93f 100644 --- a/scripts/proposals/ActivateDvpQuorum/README.md +++ b/scripts/proposals/ActivateDvpQuorum/README.md @@ -2,8 +2,6 @@ NOTE THAT THE CURRENTLY DEPLOYED ACTION LIKELY HAS A STALE TOTAL DELEGATION ESTIMATE. -MAKE SURE TO SET A REAL CONSTITUTION HASH IN `generate.bash` - How to verify: 1. Read `DeployActivateDvpQuorumUpgrade.s.sol` diff --git a/scripts/proposals/ActivateDvpQuorum/data.json b/scripts/proposals/ActivateDvpQuorum/data.json index 65af54fa..b6ceb3b5 100644 --- a/scripts/proposals/ActivateDvpQuorum/data.json +++ b/scripts/proposals/ActivateDvpQuorum/data.json @@ -9,6 +9,6 @@ ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000d1d64e18c0df526973f2bf6f689a507806403eeedd1024075b1ac0e3a7fd38e2000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa700000000000000000000000000000000000000000000000000000000001122330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000d1d64e18c0df526973f2bf6f689a507806403eeedd1024075b1ac0e3a7fd38e2000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa7263080bed3962d0476fa84fbb32ab81dfff1244e2b145f9864da24353b2f3b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/generate.bash b/scripts/proposals/ActivateDvpQuorum/generate.bash index 6399fbff..c353cb88 100755 --- a/scripts/proposals/ActivateDvpQuorum/generate.bash +++ b/scripts/proposals/ActivateDvpQuorum/generate.bash @@ -1,8 +1,9 @@ #!/bin/bash -# todo: replace with actual constitution hash once available # todo: redeploy action contract with better estimate and replace address below +# constitution hash comes from: https://github.com/ArbitrumFoundation/docs/pull/1164/changes/001d57cfc17a2fd6c7f23a01ff99c351480c3e69 + yarn gen:proposalData \ --govChainProviderRPC https://arb1.arbitrum.io/rpc \ --actionTypes \ @@ -19,7 +20,7 @@ yarn gen:proposalData \ 0 \ --upgradeDatas \ "$(cast sig "perform()")" \ - "$(cast calldata "setConstitutionHash(bytes32)" 0x0000000000000000000000000000000000000000000000000000000000112233)" \ + "$(cast calldata "setConstitutionHash(bytes32)" 0x263080bed3962d0476fa84fbb32ab81dfff1244e2b145f9864da24353b2f3b05)" \ --predecessor \ 0x0000000000000000000000000000000000000000000000000000000000000000 \ --writeToJsonPath ./scripts/proposals/ActivateDvpQuorum/data.json \ No newline at end of file From 69cd418c1f34f955abbc1cec3c5a01dde220d7f5 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 17 Feb 2026 09:52:42 -0700 Subject: [PATCH 6/6] update initial DVP estimate --- .../ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol | 6 ++---- scripts/proposals/ActivateDvpQuorum/README.md | 2 +- scripts/proposals/ActivateDvpQuorum/data.json | 4 ++-- scripts/proposals/ActivateDvpQuorum/generate.bash | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol b/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol index a4ebaf92..2925eeab 100644 --- a/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol +++ b/scripts/proposals/ActivateDvpQuorum/DeployActivateDvpQuorumUpgrade.s.sol @@ -16,7 +16,7 @@ contract DeployActivateDvpQuorumUpgrade is Script{ function run() external { vm.startBroadcast(); - bytes32 salt = bytes32(0); + bytes32 salt = bytes32(uint256(1)); address l2GovernorImpl = address(new L2ArbitrumGovernor{salt: salt}()); address l2TokenImpl = address(new L2ArbitrumToken{salt: salt}()); @@ -33,9 +33,7 @@ contract DeployActivateDvpQuorumUpgrade is Script{ _newTreasuryQuorumNumerator: 4000, // 40% _treasuryMinimumQuorum: 100_000_000 ether, _treasuryMaximumQuorum: 300_000_000 ether, - - // TODO: Update this value before proposal submission - _initialTotalDelegationEstimate: 5_500_500_000 ether // include EXCLUDED tokens + _initialTotalDelegationEstimate: 5477825566840547165171692750 // include EXCLUDED tokens }); console.log("ActivateDvpQuorumAction deployed at:", address(action)); diff --git a/scripts/proposals/ActivateDvpQuorum/README.md b/scripts/proposals/ActivateDvpQuorum/README.md index 2940a93f..2600200f 100644 --- a/scripts/proposals/ActivateDvpQuorum/README.md +++ b/scripts/proposals/ActivateDvpQuorum/README.md @@ -1,6 +1,6 @@ # Activate DVP Quorum Proposal Payload -NOTE THAT THE CURRENTLY DEPLOYED ACTION LIKELY HAS A STALE TOTAL DELEGATION ESTIMATE. +Total DVP is calculated using this Dune Query: https://dune.com/queries/6707930 How to verify: diff --git a/scripts/proposals/ActivateDvpQuorum/data.json b/scripts/proposals/ActivateDvpQuorum/data.json index b6ceb3b5..23d912eb 100644 --- a/scripts/proposals/ActivateDvpQuorum/data.json +++ b/scripts/proposals/ActivateDvpQuorum/data.json @@ -4,11 +4,11 @@ 42161 ], "actionAddresses": [ - "0x4a3126bfAaF7B657C591988963EB32d8bd398c04", + "0xbeA14C43EE8324B764D699B4E1B5dD9d1f1825c9", "0x1D62fFeB72e4c360CcBbacf7c965153b00260417" ], "arbSysSendTxToL1Args": { "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", - "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000d1d64e18c0df526973f2bf6f689a507806403eeedd1024075b1ac0e3a7fd38e2000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000004a3126bfaaf7b657c591988963eb32d8bd398c0400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa7263080bed3962d0476fa84fbb32ab81dfff1244e2b145f9864da24353b2f3b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000005575a1202bdeb87fb924e3fd1901a3212c7fd42a35c39915ed94cec7697d6716000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd000000000000000000000000bea14c43ee8324b764d699b4e1b5dd9d1f1825c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000a4bca8c7b50000000000000000000000001d62ffeb72e4c360ccbbacf7c965153b002604170000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002437f66aa7263080bed3962d0476fa84fbb32ab81dfff1244e2b145f9864da24353b2f3b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/scripts/proposals/ActivateDvpQuorum/generate.bash b/scripts/proposals/ActivateDvpQuorum/generate.bash index c353cb88..4f1c91de 100755 --- a/scripts/proposals/ActivateDvpQuorum/generate.bash +++ b/scripts/proposals/ActivateDvpQuorum/generate.bash @@ -13,7 +13,7 @@ yarn gen:proposalData \ 42161 \ 42161 \ --actionAddresses \ - 0x4a3126bfAaF7B657C591988963EB32d8bd398c04 \ + 0xbeA14C43EE8324B764D699B4E1B5dD9d1f1825c9 \ 0x1D62fFeB72e4c360CcBbacf7c965153b00260417 \ --upgradeValues \ 0 \