diff --git a/docs/overview.md b/docs/overview.md index dc4e1836..c4526955 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -50,7 +50,7 @@ Once the proposal has gone through each of these delays, it is then directed to ```mermaid graph TD; D["On-chain DAO vote
(14 days, extendable by 2 days)"]; - D -->|"Passes, Constitutional AIP"| E["L2 waiting period
(3 days)"]; + D -->|"Passes, Constitutional AIP"| E["L2 waiting period
(8 days)"]; E --> F["L2-to-L1 message
(~ 1 week)"]; F --> G["L1 waiting period
(3 days)"]; G --> H["Execution target"]; diff --git a/docs/roundtrip-governance.png b/docs/roundtrip-governance.png index 51ea6b7f..014151bc 100644 Binary files a/docs/roundtrip-governance.png and b/docs/roundtrip-governance.png differ diff --git a/docs/security-council-election-flow.md b/docs/security-council-election-flow.md index 75ee56d1..38f29a1a 100644 --- a/docs/security-council-election-flow.md +++ b/docs/security-council-election-flow.md @@ -6,6 +6,6 @@ graph TD A["Nominee selection (7 days)"] --> B["Compliance check by foundation (14 days)"] B --> C["Member election (21 days)"] C --> D["Security council manager (0 days)"] - D --> E["L2 Timelock (3 days)\nWithdrawal period (~1 week)\nL1 Timelock (3 days)"] + D --> E["L2 Timelock (8 days)\nWithdrawal period (~1 week)\nL1 Timelock (3 days)"] E --> F["Individual council updates (0 days)"] ``` \ No newline at end of file diff --git a/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json new file mode 100644 index 00000000..d6548206 --- /dev/null +++ b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json @@ -0,0 +1,12 @@ +{ + "actionChainIds": [ + 42161 + ], + "actionAddresses": [ + "0x5B947D8bF197467be7ef381b7cAfEE0A7B35737A" + ], + "arbSysSendTxToL1Args": { + "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49", + "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000da537a8813f50264f91f9a2f8abcd15373495e15278e7fe7cfa90e0892f8c300000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000005b947d8bf197467be7ef381b7cafee0a7b35737a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } +} \ No newline at end of file diff --git a/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/generate.bash b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/generate.bash new file mode 100755 index 00000000..658f1e0f --- /dev/null +++ b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/generate.bash @@ -0,0 +1,9 @@ +#!/bin/bash + +# CoreGovTimelockUpdateDelayEightDayAction 0x5B947D8bF197467be7ef381b7cAfEE0A7B35737A + +yarn gen:proposalData \ + --govChainProviderRPC https://arb1.arbitrum.io/rpc \ + --actionChainIds 42161 \ + --actionAddresses 0x5B947D8bF197467be7ef381b7cAfEE0A7B35737A \ + --writeToJsonPath ./scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json \ No newline at end of file diff --git a/src/gov-action-contracts/AIPs/CoreGovTimelockUpdateDelayEightDayAction.sol b/src/gov-action-contracts/AIPs/CoreGovTimelockUpdateDelayEightDayAction.sol new file mode 100644 index 00000000..11b7c349 --- /dev/null +++ b/src/gov-action-contracts/AIPs/CoreGovTimelockUpdateDelayEightDayAction.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.16; + +import "../address-registries/L2AddressRegistryInterfaces.sol"; + +/// @notice Updates the delay of the core gov timelock to 8 days +/// and sets the new constitution hash +contract CoreGovTimelockUpdateDelayEightDayAction { + IL2AddressRegistry public constant govAddressRegistry = IL2AddressRegistry(0x56C4E9Eb6c63aCDD19AeC2b1a00e4f0d7aBda9d3); + uint256 public constant delay = 86400 * 8; + bytes32 public constant newConstitutionHash = + 0x28faf2acba9b3ff80ec484e3d5646931eeef40568b1b7c38dbe52b890bfd7938; + + function perform() external { + govAddressRegistry.coreGovTimelock().updateDelay(delay); + require( + govAddressRegistry.coreGovTimelock().getMinDelay() == delay, + "CoreGovTimelockUpdateDelayAction: Timelock delay" + ); + + IArbitrumDAOConstitution arbitrumDaoConstitution = + govAddressRegistry.arbitrumDAOConstitution(); + arbitrumDaoConstitution.setConstitutionHash(newConstitutionHash); + require( + arbitrumDaoConstitution.constitutionHash() == newConstitutionHash, + "CoreGovTimelockUpdateDelayAction: new constitution hash not set" + ); + } +}