diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/FACILITATOR.md b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/FACILITATOR.md new file mode 100644 index 000000000..68180df5b --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/FACILITATOR.md @@ -0,0 +1,51 @@ +# Bump Cobalt Activation Parameters — Facilitator Guide + +Replace `` with the rollout network, for example `zeronet`. Run every command from +`active/evm/tasks/2026-09-15-bump-cobalt-activation-parameters/`. + +## 1. Confirm the Cobalt upgrade prerequisite + +`2026-09-14-cobalt-upgrade` must execute first. For Zeronet, it has +[executed](https://hoodi.etherscan.io/tx/0xabfb3ed6b24334891957b4f0c22273b06392132288862ca8235b13af0a47d667) +and initialized the `ProtocolVersions` proxy at `0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da`. + +For Zeronet, this task must execute strictly before **September 16, 2026 at 15:00 UTC**. At that +time the existing 16:00 UTC activation enters the registry's one-hour freeze window and can no +longer be changed. + +## 2. Review the config + +Confirm `config//.env` contains: + +- the deployed `ProtocolVersions` proxy; +- Cobalt upgrade id 12 moving from `1789574400` (16:00 UTC) to `1789581600` (18:00 UTC); and +- the packed minimum protocol version moving from v1.3.2 to v1.4.0. + +The script refuses to build calls unless the live owner, current activation, current minimum +version, schedule length, and schedule commitment all match these inputs. + +## 3. Review the validation files + +The Zeronet validation files are committed under `config/zeronet/validations/`. Regenerate them +after any config, script, or relevant onchain state change: + +```bash +make TASK_NETWORK= deps +make TASK_NETWORK= gen-validation-cb +make TASK_NETWORK= gen-validation-sc +``` + +These create `config//validations/base-signer.json` and +`security-council-signer.json`. For Zeronet, remove the generated `taskOriginConfig` and add +`"skipTaskOriginValidation": true` at the JSON root before committing the files. + +## 4. Approve and execute + +```bash +SIGNATURES= make TASK_NETWORK= approve-cb +SIGNATURES= make TASK_NETWORK= approve-sc +make TASK_NETWORK= execute +``` + +After execution, confirm `getSchedule()[12]` is `1789581600` and `minimumProtocolVersion()` is +`79228162588051313888382156800`, then link the transaction from `config//README.md`. diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/Makefile b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/Makefile new file mode 100644 index 000000000..c63d14c27 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/Makefile @@ -0,0 +1,47 @@ +include ../../../../Makefile +include $(REPO_ROOT)/Multisig.mk + +ifndef TASK_NETWORK +$(error TASK_NETWORK is required, e.g. make TASK_NETWORK=zeronet $(MAKECMDGOALS)) +endif + +PROJECT_DIR := $(abspath ../..) + +include $(REPO_ROOT)/config/$(TASK_NETWORK).env +include config/$(TASK_NETWORK)/.env + +SIGNER_TOOL_PATH := $(REPO_ROOT)/signer-tool +VALIDATIONS_DIR := $(CURDIR)/config/$(TASK_NETWORK)/validations +RPC_URL := $(L1_RPC_URL) + +SCRIPT_NAME := tasks/2026-09-15-bump-cobalt-activation-parameters/script/BumpCobaltActivationParameters.s.sol:BumpCobaltActivationParameters + +CB_SENDER = $(shell $(MISE_EXEC) cast call $(CB_MULTISIG) "getOwners()(address[])" --rpc-url $(L1_RPC_URL) | tr -d '[]' | cut -d',' -f1) +SC_SENDER = $(shell $(MISE_EXEC) cast call $(BASE_SECURITY_COUNCIL) "getOwners()(address[])" --rpc-url $(L1_RPC_URL) | tr -d '[]' | cut -d',' -f1) + +UPDATE_ENV = PROXY_ADMIN_OWNER=$(PROXY_ADMIN_OWNER) \ + PROTOCOL_VERSIONS_PROXY=$(PROTOCOL_VERSIONS_PROXY) \ + CURRENT_COBALT_ACTIVATION_TIMESTAMP=$(CURRENT_COBALT_ACTIVATION_TIMESTAMP) \ + NEW_COBALT_ACTIVATION_TIMESTAMP=$(NEW_COBALT_ACTIVATION_TIMESTAMP) \ + CURRENT_MINIMUM_PROTOCOL_VERSION=$(CURRENT_MINIMUM_PROTOCOL_VERSION) \ + NEW_MINIMUM_PROTOCOL_VERSION=$(NEW_MINIMUM_PROTOCOL_VERSION) + +.PHONY: gen-validation-cb +gen-validation-cb: deps-signer-tool + $(call GEN_VALIDATION,$(SCRIPT_NAME),$(CB_MULTISIG),$(CB_SENDER),base-signer.json,$(UPDATE_ENV)) + +.PHONY: gen-validation-sc +gen-validation-sc: deps-signer-tool + $(call GEN_VALIDATION,$(SCRIPT_NAME),$(BASE_SECURITY_COUNCIL),$(SC_SENDER),security-council-signer.json,$(UPDATE_ENV)) + +.PHONY: approve-cb +approve-cb: + export $(UPDATE_ENV); $(call MULTISIG_APPROVE,$(CB_MULTISIG),$(SIGNATURES)) + +.PHONY: approve-sc +approve-sc: + export $(UPDATE_ENV); $(call MULTISIG_APPROVE,$(BASE_SECURITY_COUNCIL),$(SIGNATURES)) + +.PHONY: execute +execute: + export $(UPDATE_ENV); $(call MULTISIG_EXECUTE,0x) diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/.env b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/.env new file mode 100644 index 000000000..2c6217e92 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/.env @@ -0,0 +1,16 @@ +# https://github.com/base/contracts/commits/releases/v8.3.0/ +BASE_CONTRACTS_COMMIT=385f21a41f277d287db92fffe88dca41299162ea + +# Deployed by 2026-09-14-cobalt-upgrade. +PROTOCOL_VERSIONS_PROXY=0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da + +# Cobalt (upgrade id 12) moves from 2026-09-16 16:00:00 UTC to 18:00:00 UTC. +CURRENT_COBALT_ACTIVATION_TIMESTAMP=1789574400 +NEW_COBALT_ACTIVATION_TIMESTAMP=1789581600 + +# Packed protocol versions: v1.3.2 -> v1.4.0. +# Re-derive with: +# cast to-dec 0x00000001000000030000000200000000 +# cast to-dec 0x00000001000000040000000000000000 +CURRENT_MINIMUM_PROTOCOL_VERSION=79228162569604569823262539776 +NEW_MINIMUM_PROTOCOL_VERSION=79228162588051313888382156800 diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/README.md b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/README.md new file mode 100644 index 000000000..ee0060913 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/README.md @@ -0,0 +1,32 @@ +# Bump Cobalt Activation Parameters + +Status: [EXECUTED](https://hoodi.etherscan.io/tx/0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591) + +## Description + +Updates Zeronet's `ProtocolVersions` registry to: + +- delay Cobalt activation from September 16, 2026 at 16:00 UTC to 18:00 UTC; and +- raise the minimum protocol version from v1.3.2 to v1.4.0. + +The prerequisite [Cobalt upgrade](https://hoodi.etherscan.io/tx/0xabfb3ed6b24334891957b4f0c22273b06392132288862ca8235b13af0a47d667) +has executed and initialized the registry. + +The transaction must execute before September 16, 2026 at 15:00 UTC, when the existing activation +enters its one-hour freeze window. + +## Target + +| Contract | Address | +| -- | -- | +| `ProtocolVersions` proxy | `0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da` | + +## Sign + +From the repository root: + +```bash +make sign-task +``` + +Select this Zeronet task, sign, and send the signature to the facilitator. diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/validations/base-signer.json b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/validations/base-signer.json new file mode 100644 index 000000000..185d71486 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/validations/base-signer.json @@ -0,0 +1,106 @@ +{ + "cmd": "PROXY_ADMIN_OWNER=0x3d59999977e0896ee1f8783bb8251df16fb483e9 PROTOCOL_VERSIONS_PROXY=0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da CURRENT_COBALT_ACTIVATION_TIMESTAMP=1789574400 NEW_COBALT_ACTIVATION_TIMESTAMP=1789581600 CURRENT_MINIMUM_PROTOCOL_VERSION=79228162569604569823262539776 NEW_MINIMUM_PROTOCOL_VERSION=79228162588051313888382156800 mise exec -- forge script --rpc-url https://c3-chainproxy-eth-hoodi-full-dev.cbhq.net tasks/2026-09-15-bump-cobalt-activation-parameters/script/BumpCobaltActivationParameters.s.sol:BumpCobaltActivationParameters --sig sign(address[]) [0x856611ed7e07d83243b15e93f6321f2df6865852] --sender 0x2c1475476B586d66a85bC65A5aB396BBbAa4f3aD", + "ledgerId": 1, + "rpcUrl": "https://c3-chainproxy-eth-hoodi-full-dev.cbhq.net", + "expectedDomainAndMessageHashes": { + "address": "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "domainHash": "0xc88eae2baaa4c8513a3d87913666de9463f106158aaf8be5cd31588215ccd5c4", + "messageHash": "0x045fec7bae7e24708d2a03bf98b77d4e4ef94495ff0c24ed9f9c7a41170400af" + }, + "stateOverrides": [ + { + "name": "Proxy Admin Owner - Zeronet", + "address": "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + } + ] + }, + { + "name": "CB Signer Safe - Zeronet", + "address": "0x856611eD7E07D83243b15E93f6321f2df6865852", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + }, + { + "key": "0xef9a39a5b233f5e274924ca4d81b035a4713f559fc2b2000a0512611f9288b01", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed.", + "allowDifference": false + } + ] + } + ], + "stateChanges": [ + { + "name": "ProtocolVersions - Zeronet", + "address": "0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000003", + "before": "0x0000000000000000000000000000000000000001000000030000000200000000", + "after": "0x0000000000000000000000000000000000000001000000040000000000000000", + "description": "Raises minimumProtocolVersion from v1.3.2 to v1.4.0. The format packs the low 16 bytes as major || minor || patch || pre-release, four bytes each, so v1.4.0 is 0x00000001000000040000000000000000 (79228162588051313888382156800).", + "allowDifference": false + }, + { + "key": "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5adb", + "before": "0xf79cbe9afb777dd098279ee69b442ffa04d8f8c9d6314ff21747452be3315773", + "after": "0xb439293c10b6d5f92c84b1b73cb9b85c1df891a3c56cd10f9db6cae332ce9d83", + "description": "Updates _upgradeScheduleId[13], the hash-chain tail committing to upgrade id 12 (cobalt), after its activation timestamp moves from 1789574400 to 1789581600.", + "allowDifference": false + }, + { + "key": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf9", + "before": "0x000000000000000000000000000000000000000000000000000000006aaabd00", + "after": "0x000000000000000000000000000000000000000000000000000000006aaad920", + "description": "_timestamps[12]: delays cobalt activation from 1789574400 (2026-09-16 16:00:00 UTC) to 1789581600 (2026-09-16 18:00:00 UTC).", + "allowDifference": false + } + ] + }, + { + "name": "Proxy Admin Owner - Zeronet", + "address": "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000017", + "after": "0x0000000000000000000000000000000000000000000000000000000000000018", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x873ff0b7171ad8a9b4a5ebcb4219691bae8e196d8c064c254cb69d245aed9d9c", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Records the nested Safe approval of the Cobalt activation parameter update transaction hash from the Coinbase signer Safe.", + "allowDifference": false + } + ] + }, + { + "name": "CB Signer Safe - Zeronet", + "address": "0x856611eD7E07D83243b15E93f6321f2df6865852", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000001d", + "after": "0x000000000000000000000000000000000000000000000000000000000000001e", + "description": "Increments the nonce", + "allowDifference": false + } + ] + } + ], + "balanceChanges": [], + "skipTaskOriginValidation": true +} diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/validations/security-council-signer.json b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/validations/security-council-signer.json new file mode 100644 index 000000000..f20dfbb9f --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/config/zeronet/validations/security-council-signer.json @@ -0,0 +1,100 @@ +{ + "cmd": "PROXY_ADMIN_OWNER=0x3d59999977e0896ee1f8783bb8251df16fb483e9 PROTOCOL_VERSIONS_PROXY=0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da CURRENT_COBALT_ACTIVATION_TIMESTAMP=1789574400 NEW_COBALT_ACTIVATION_TIMESTAMP=1789581600 CURRENT_MINIMUM_PROTOCOL_VERSION=79228162569604569823262539776 NEW_MINIMUM_PROTOCOL_VERSION=79228162588051313888382156800 mise exec -- forge script --rpc-url https://c3-chainproxy-eth-hoodi-full-dev.cbhq.net tasks/2026-09-15-bump-cobalt-activation-parameters/script/BumpCobaltActivationParameters.s.sol:BumpCobaltActivationParameters --sig sign(address[]) [0xC4c0aD998B5DfA4CF4B298970F21b9015a5eE7bA] --sender 0x2c1475476B586d66a85bC65A5aB396BBbAa4f3aD", + "ledgerId": 1, + "rpcUrl": "https://c3-chainproxy-eth-hoodi-full-dev.cbhq.net", + "expectedDomainAndMessageHashes": { + "address": "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "domainHash": "0x1e2faea9157fbff31d9297595a71e2dedfeb1184207c07bb6bd64f807332a525", + "messageHash": "0xffbcdc587ab685114341c05967cc5a4518b952141d2b0085d4e5bbeb427fb2e6" + }, + "stateOverrides": [ + { + "name": "Proxy Admin Owner - Zeronet", + "address": "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + } + ] + }, + { + "name": "Security Council Safe - Zeronet", + "address": "0xC4c0aD998B5DfA4CF4B298970F21b9015a5eE7bA", + "overrides": [ + { + "key": "0x7ca8db582c9c53b8afb85b73eb8b0b3c745d881ad4e32edf587eb0ceb4fd0143", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed.", + "allowDifference": false + } + ] + } + ], + "stateChanges": [ + { + "name": "ProtocolVersions - Zeronet", + "address": "0x30e172aaC675c9fe5A64792F92C9fD4d3E7cA9Da", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000003", + "before": "0x0000000000000000000000000000000000000001000000030000000200000000", + "after": "0x0000000000000000000000000000000000000001000000040000000000000000", + "description": "Raises minimumProtocolVersion from v1.3.2 to v1.4.0. The format packs the low 16 bytes as major || minor || patch || pre-release, four bytes each, so v1.4.0 is 0x00000001000000040000000000000000 (79228162588051313888382156800).", + "allowDifference": false + }, + { + "key": "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5adb", + "before": "0xf79cbe9afb777dd098279ee69b442ffa04d8f8c9d6314ff21747452be3315773", + "after": "0xb439293c10b6d5f92c84b1b73cb9b85c1df891a3c56cd10f9db6cae332ce9d83", + "description": "Updates _upgradeScheduleId[13], the hash-chain tail committing to upgrade id 12 (cobalt), after its activation timestamp moves from 1789574400 to 1789581600.", + "allowDifference": false + }, + { + "key": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf9", + "before": "0x000000000000000000000000000000000000000000000000000000006aaabd00", + "after": "0x000000000000000000000000000000000000000000000000000000006aaad920", + "description": "_timestamps[12]: delays cobalt activation from 1789574400 (2026-09-16 16:00:00 UTC) to 1789581600 (2026-09-16 18:00:00 UTC).", + "allowDifference": false + } + ] + }, + { + "name": "Proxy Admin Owner - Zeronet", + "address": "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000017", + "after": "0x0000000000000000000000000000000000000000000000000000000000000018", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x65682bb0ad5abee83dfaf5eae548800989169935fce3231c6efb996b175e6ec2", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Records the nested Safe approval of the Cobalt activation parameter update transaction hash from the Security Council Safe.", + "allowDifference": false + } + ] + }, + { + "name": "Security Council Safe - Zeronet", + "address": "0xC4c0aD998B5DfA4CF4B298970F21b9015a5eE7bA", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000001a", + "after": "0x000000000000000000000000000000000000000000000000000000000000001b", + "description": "Increments the nonce", + "allowDifference": false + } + ] + } + ], + "balanceChanges": [], + "skipTaskOriginValidation": true +} diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566589975.json b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566589975.json new file mode 100644 index 000000000..ec1cf01e0 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566589975.json @@ -0,0 +1,90 @@ +{ + "transactions": [ + { + "hash": "0xa0f741bdda147fc444f700f07c74715a24cd082158b6067fa4c361733db7cbee", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x856611ed7e07d83243b15e93f6321f2df6865852", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "0", + "0xd4d9bdcdac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f4586", + "0", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0c2ada5e7d27adf7f4d0cf890c88c4068a96c62b4f162c8bad28563d6fba403f150e6317e58afb6f80b8069fb5ad33c7f7d853494943dd12477ef2eea9f9ee961c6c61af163c8f83248cad2ceb04e2a94e01f45a2e1420dcab7c3dc21292ea872508e68617db2d4e19e38608848ed9894f799d9036a9d9987d9e8dfad64366c5081ca06988ac47f817eceea21c27f421a64c889167641d08cd810c6f2dd1d39924f4402aed2a5de053631aa85ac8d378c3e69c545969a78020bbbcd7ff08bffc5feb1c" + ], + "transaction": { + "from": "0x2c1475476b586d66a85bc65a5ab396bbbaa4f3ad", + "to": "0x856611ed7e07d83243b15e93f6321f2df6865852", + "gas": "0x20381", + "value": "0x0", + "input": "0x6a7612020000000000000000000000003d59999977e0896ee1f8783bb8251df16fb483e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000024d4d9bdcdac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f45860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c30c2ada5e7d27adf7f4d0cf890c88c4068a96c62b4f162c8bad28563d6fba403f150e6317e58afb6f80b8069fb5ad33c7f7d853494943dd12477ef2eea9f9ee961c6c61af163c8f83248cad2ceb04e2a94e01f45a2e1420dcab7c3dc21292ea872508e68617db2d4e19e38608848ed9894f799d9036a9d9987d9e8dfad64366c5081ca06988ac47f817eceea21c27f421a64c889167641d08cd810c6f2dd1d39924f4402aed2a5de053631aa85ac8d378c3e69c545969a78020bbbcd7ff08bffc5feb1c0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x88bb0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x99bdf", + "logs": [ + { + "address": "0x3d59999977e0896ee1f8783bb8251df16fb483e9", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0xac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f4586", + "0x000000000000000000000000856611ed7e07d83243b15e93f6321f2df6865852" + ], + "data": "0x", + "blockHash": "0x3e16da53c8c554c4d03892f9683dcb2f130a12ef5a5243a186deb485b91a5c49", + "blockNumber": "0x37794d", + "blockTimestamp": "0x6aaa9e7c", + "transactionHash": "0xa0f741bdda147fc444f700f07c74715a24cd082158b6067fa4c361733db7cbee", + "transactionIndex": "0x16", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x856611ed7e07d83243b15e93f6321f2df6865852", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e", + "0x59d066ac428fa6ed48585547e75bf06eabcdf28dd1dd73a14c50ce1ceba36717" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x3e16da53c8c554c4d03892f9683dcb2f130a12ef5a5243a186deb485b91a5c49", + "blockNumber": "0x37794d", + "blockTimestamp": "0x6aaa9e7c", + "transactionHash": "0xa0f741bdda147fc444f700f07c74715a24cd082158b6067fa4c361733db7cbee", + "transactionIndex": "0x16", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000400000000000000000000200080000000000000000000000040000001001000000000000000000000000000000000000000000100000000000000000000000000000100000000000000000000000000000000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000040000000000000000200000000000008000000000000000000000000000010000010000000000000040000004000000200000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000100000000000000000", + "type": "0x2", + "transactionHash": "0xa0f741bdda147fc444f700f07c74715a24cd082158b6067fa4c361733db7cbee", + "transactionIndex": "0x16", + "blockHash": "0x3e16da53c8c554c4d03892f9683dcb2f130a12ef5a5243a186deb485b91a5c49", + "blockNumber": "0x37794d", + "gasUsed": "0x17538", + "effectiveGasPrice": "0x3ee4f572", + "from": "0x2c1475476b586d66a85bc65a5ab396bbbaa4f3ad", + "to": "0x856611ed7e07d83243b15e93f6321f2df6865852", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1789566589975, + "chain": 560048, + "commit": "445cce0" +} \ No newline at end of file diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566651192.json b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566651192.json new file mode 100644 index 000000000..71fa5e4b5 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566651192.json @@ -0,0 +1,90 @@ +{ + "transactions": [ + { + "hash": "0xb643d2b104997cfa7ec7cb1ef34d67d4533eeda6113d03882c5deddc70a23dcf", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xc4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0x3d59999977e0896ee1f8783bB8251DF16fb483E9", + "0", + "0xd4d9bdcdac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f4586", + "0", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0xd39c3fbab63a36d2959b5aa7d133ad0202637a7d823503e5272628c6e003a4c97ee4895ad751fbeef4e8b7611bfbed757cc5a9ba6f010aed3d405b1420decb661b" + ], + "transaction": { + "from": "0x2c1475476b586d66a85bc65a5ab396bbbaa4f3ad", + "to": "0xc4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba", + "gas": "0x1b742", + "value": "0x0", + "input": "0x6a7612020000000000000000000000003d59999977e0896ee1f8783bb8251df16fb483e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000024d4d9bdcdac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f4586000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041d39c3fbab63a36d2959b5aa7d133ad0202637a7d823503e5272628c6e003a4c97ee4895ad751fbeef4e8b7611bfbed757cc5a9ba6f010aed3d405b1420decb661b00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x88bb0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x37196ad", + "logs": [ + { + "address": "0x3d59999977e0896ee1f8783bb8251df16fb483e9", + "topics": [ + "0xf2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c", + "0xac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f4586", + "0x000000000000000000000000c4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba" + ], + "data": "0x", + "blockHash": "0x8a13cb11bd596ec5fe5164af3dbcff02174574a6a11e27d0a89b81aba517463d", + "blockNumber": "0x377952", + "blockTimestamp": "0x6aaa9eb8", + "transactionHash": "0xb643d2b104997cfa7ec7cb1ef34d67d4533eeda6113d03882c5deddc70a23dcf", + "transactionIndex": "0x2a", + "logIndex": "0x17", + "removed": false + }, + { + "address": "0xc4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e", + "0x040a2d68488cca0d4802033f8877cb8520ab151621be2ea052e4204432891168" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8a13cb11bd596ec5fe5164af3dbcff02174574a6a11e27d0a89b81aba517463d", + "blockNumber": "0x377952", + "blockTimestamp": "0x6aaa9eb8", + "transactionHash": "0xb643d2b104997cfa7ec7cb1ef34d67d4533eeda6113d03882c5deddc70a23dcf", + "transactionIndex": "0x2a", + "logIndex": "0x18", + "removed": false + } + ], + "logsBloom": "0x00000000400000000000000000000000000000000000000000000000040000000001000000000000000000000000000000000000000000100000000000000000010100000000100000000000000000000000000800000000000000001000000008000008400000000000000000000000800000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000004000000200000000080000000000200000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0xb643d2b104997cfa7ec7cb1ef34d67d4533eeda6113d03882c5deddc70a23dcf", + "transactionIndex": "0x2a", + "blockHash": "0x8a13cb11bd596ec5fe5164af3dbcff02174574a6a11e27d0a89b81aba517463d", + "blockNumber": "0x377952", + "gasUsed": "0x13e04", + "effectiveGasPrice": "0x37595039", + "from": "0x2c1475476b586d66a85bc65a5ab396bbbaa4f3ad", + "to": "0xc4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1789566651192, + "chain": 560048, + "commit": "445cce0" +} \ No newline at end of file diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566865817.json b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566865817.json new file mode 100644 index 000000000..8ff532f69 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/records/BumpCobaltActivationParameters.s.sol/560048/run-1789566865817.json @@ -0,0 +1,119 @@ +{ + "transactions": [ + { + "hash": "0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x3d59999977e0896ee1f8783bb8251df16fb483e9", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x858cc8320000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c580130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000022482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000012000000000000000000000000030e172aac675c9fe5a64792f92c9fd4d3e7ca9da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004484dfa893000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000006aaad9200000000000000000000000000000000000000000000000000000000000000000000000000000000030e172aac675c9fe5a64792f92c9fd4d3e7ca9da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024723d0096000000000000000000000000000000000000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x000000000000000000000000856611ed7e07d83243b15e93f6321f2df6865852000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba000000000000000000000000000000000000000000000000000000000000000001" + ], + "transaction": { + "from": "0x2c1475476b586d66a85bc65a5ab396bbbaa4f3ad", + "to": "0x3d59999977e0896ee1f8783bb8251df16fb483e9", + "gas": "0x28946", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c580130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000003c4858cc8320000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c580130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000022482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000012000000000000000000000000030e172aac675c9fe5a64792f92c9fd4d3e7ca9da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004484dfa893000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000006aaad9200000000000000000000000000000000000000000000000000000000000000000000000000000000030e172aac675c9fe5a64792f92c9fd4d3e7ca9da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024723d0096000000000000000000000000000000000000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082000000000000000000000000856611ed7e07d83243b15e93f6321f2df6865852000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c4c0ad998b5dfa4cf4b298970f21b9015a5ee7ba000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0x88bb0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x37da189", + "logs": [ + { + "address": "0x30e172aac675c9fe5a64792f92c9fd4d3e7ca9da", + "topics": [ + "0x48496c9e95bc0f6dd82bee879408724c3b1a356b8a6d9c3fbffe270b24720791", + "0x000000000000000000000000000000000000000000000000000000000000000c" + ], + "data": "0x000000000000000000000000000000000000000000000000000000006aaad920", + "blockHash": "0xf9058add606f7846ee71b387059d595dd813ac8b2c26193b0bcc2b5a389ce434", + "blockNumber": "0x377964", + "blockTimestamp": "0x6aaa9f90", + "transactionHash": "0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591", + "transactionIndex": "0x2f", + "logIndex": "0x33", + "removed": false + }, + { + "address": "0x30e172aac675c9fe5a64792f92c9fd4d3e7ca9da", + "topics": [ + "0x3ce196af7f202b9a61978967a766a54245d6588745bc8f76226360f5a87085ea", + "0xb439293c10b6d5f92c84b1b73cb9b85c1df891a3c56cd10f9db6cae332ce9d83" + ], + "data": "0x", + "blockHash": "0xf9058add606f7846ee71b387059d595dd813ac8b2c26193b0bcc2b5a389ce434", + "blockNumber": "0x377964", + "blockTimestamp": "0x6aaa9f90", + "transactionHash": "0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591", + "transactionIndex": "0x2f", + "logIndex": "0x34", + "removed": false + }, + { + "address": "0x30e172aac675c9fe5a64792f92c9fd4d3e7ca9da", + "topics": [ + "0xafb29e5c7f4fc4818c2ffe01313f20873fbb8d3ecb8c231226be562b9a11e57f", + "0x0000000000000000000000000000000000000001000000040000000000000000" + ], + "data": "0x", + "blockHash": "0xf9058add606f7846ee71b387059d595dd813ac8b2c26193b0bcc2b5a389ce434", + "blockNumber": "0x377964", + "blockTimestamp": "0x6aaa9f90", + "transactionHash": "0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591", + "transactionIndex": "0x2f", + "logIndex": "0x35", + "removed": false + }, + { + "address": "0x3d59999977e0896ee1f8783bb8251df16fb483e9", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e", + "0xac010057d6ee4a3e917103a0a36a1a12163b8cff1bf7f70b366d818b833f4586" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf9058add606f7846ee71b387059d595dd813ac8b2c26193b0bcc2b5a389ce434", + "blockNumber": "0x377964", + "blockTimestamp": "0x6aaa9f90", + "transactionHash": "0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591", + "transactionIndex": "0x2f", + "logIndex": "0x36", + "removed": false + } + ], + "logsBloom": "0x00000000400100000000000000000000000002000000000000000001040000000001000000000200400000200000002000000000020000004000000000000000000000000000100000000000000000000000000000000000000800000000000000000008000000000000000000002000000000000000000000002000000010000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000200000000080802000000000000000000000000000000000000000000000000000000000000200000000010000200000000100000000000000000000000000000000000040040000000000000000", + "type": "0x2", + "transactionHash": "0x8a66d2beda49f48113d1bcc324eb24f0ca186320b515551a12e3777f0b5d8591", + "transactionIndex": "0x2f", + "blockHash": "0xf9058add606f7846ee71b387059d595dd813ac8b2c26193b0bcc2b5a389ce434", + "blockNumber": "0x377964", + "gasUsed": "0x1d610", + "effectiveGasPrice": "0x39816899", + "from": "0x2c1475476b586d66a85bc65a5ab396bbbaa4f3ad", + "to": "0x3d59999977e0896ee1f8783bb8251df16fb483e9", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1789566865817, + "chain": 560048, + "commit": "445cce0" +} \ No newline at end of file diff --git a/archive/evm/2026-09-15-bump-cobalt-activation-parameters/script/BumpCobaltActivationParameters.s.sol b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/script/BumpCobaltActivationParameters.s.sol new file mode 100644 index 000000000..aaa4994f1 --- /dev/null +++ b/archive/evm/2026-09-15-bump-cobalt-activation-parameters/script/BumpCobaltActivationParameters.s.sol @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Vm} from "forge-std/Vm.sol"; + +import {MultisigScript, Enum} from "@base-contracts/scripts/universal/MultisigScript.sol"; +import {Simulation} from "@base-contracts/scripts/universal/Simulation.sol"; + +interface IProtocolVersions { + function FREEZE_WINDOW() external view returns (uint64); + function MIN_NOTICE() external view returns (uint64); + function getSchedule() external view returns (uint64[] memory); + function minimumProtocolVersion() external view returns (uint256); + function proxyAdminOwner() external view returns (address); + function scheduleId() external view returns (bytes32); + function scheduleId(uint256 id) external view returns (bytes32); + function setMinimumProtocolVersion(uint256 protocolVersion) external; + function setTimestamp(uint256 id, uint64 timestamp) external; +} + +/// @notice Delays Cobalt by two hours and raises the minimum protocol version on Zeronet. +contract BumpCobaltActivationParameters is MultisigScript { + uint256 internal constant COBALT_UPGRADE_ID = 12; + uint256 internal constant EXPECTED_SCHEDULE_LENGTH = 13; + + address internal immutable ownerSafe; + IProtocolVersions internal immutable protocolVersions; + uint64 internal immutable currentCobaltActivationTimestamp; + uint64 internal immutable newCobaltActivationTimestamp; + uint256 internal immutable currentMinimumProtocolVersion; + uint256 internal immutable newMinimumProtocolVersion; + bytes32 internal immutable schedulePrefix; + + constructor() { + ownerSafe = vm.envAddress("PROXY_ADMIN_OWNER"); + protocolVersions = IProtocolVersions(vm.envAddress("PROTOCOL_VERSIONS_PROXY")); + + uint256 currentTimestamp = vm.envUint("CURRENT_COBALT_ACTIVATION_TIMESTAMP"); + uint256 newTimestamp = vm.envUint("NEW_COBALT_ACTIVATION_TIMESTAMP"); + require(currentTimestamp <= type(uint64).max && newTimestamp <= type(uint64).max, "timestamp overflow"); + currentCobaltActivationTimestamp = uint64(currentTimestamp); + newCobaltActivationTimestamp = uint64(newTimestamp); + + currentMinimumProtocolVersion = vm.envUint("CURRENT_MINIMUM_PROTOCOL_VERSION"); + newMinimumProtocolVersion = vm.envUint("NEW_MINIMUM_PROTOCOL_VERSION"); + + require(address(protocolVersions).code.length != 0, "protocol versions not deployed"); + schedulePrefix = protocolVersions.scheduleId(COBALT_UPGRADE_ID - 1); + _preCheck(); + } + + function _buildCalls() internal view override returns (Call[] memory) { + Call[] memory calls = new Call[](2); + + calls[0] = Call({ + operation: Enum.Operation.Call, + target: address(protocolVersions), + data: abi.encodeCall(IProtocolVersions.setTimestamp, (COBALT_UPGRADE_ID, newCobaltActivationTimestamp)), + value: 0 + }); + calls[1] = Call({ + operation: Enum.Operation.Call, + target: address(protocolVersions), + data: abi.encodeCall(IProtocolVersions.setMinimumProtocolVersion, (newMinimumProtocolVersion)), + value: 0 + }); + + return calls; + } + + function _preCheck() internal view { + require(protocolVersions.proxyAdminOwner() == ownerSafe, "proxy admin owner mismatch"); + + uint64[] memory schedule = protocolVersions.getSchedule(); + require(schedule.length == EXPECTED_SCHEDULE_LENGTH, "unexpected schedule length"); + require(schedule[COBALT_UPGRADE_ID] == currentCobaltActivationTimestamp, "cobalt activation mismatch"); + require( + protocolVersions.minimumProtocolVersion() == currentMinimumProtocolVersion, + "minimum protocol version mismatch" + ); + require( + protocolVersions.scheduleId() + == keccak256(abi.encode(schedulePrefix, COBALT_UPGRADE_ID, currentCobaltActivationTimestamp)), + "schedule commitment mismatch" + ); + + require(newCobaltActivationTimestamp > currentCobaltActivationTimestamp, "cobalt activation not delayed"); + require( + block.timestamp + protocolVersions.FREEZE_WINDOW() < currentCobaltActivationTimestamp, + "cobalt activation is frozen" + ); + require( + newCobaltActivationTimestamp >= block.timestamp + protocolVersions.MIN_NOTICE(), + "insufficient activation notice" + ); + require( + newMinimumProtocolVersion != 0 && newMinimumProtocolVersion <= type(uint128).max, + "invalid minimum protocol version" + ); + require(newMinimumProtocolVersion > currentMinimumProtocolVersion, "minimum protocol version not increased"); + } + + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { + require(protocolVersions.proxyAdminOwner() == ownerSafe, "proxy admin owner changed"); + + uint64[] memory schedule = protocolVersions.getSchedule(); + require(schedule.length == EXPECTED_SCHEDULE_LENGTH, "schedule length changed"); + require(schedule[COBALT_UPGRADE_ID] == newCobaltActivationTimestamp, "cobalt activation not updated"); + require( + protocolVersions.minimumProtocolVersion() == newMinimumProtocolVersion, + "minimum protocol version not updated" + ); + require( + protocolVersions.scheduleId() + == keccak256(abi.encode(schedulePrefix, COBALT_UPGRADE_ID, newCobaltActivationTimestamp)), + "schedule commitment not updated" + ); + } + + function _ownerSafe() internal view override returns (address) { + return ownerSafe; + } +}