Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Bump Cobalt Activation Parameters — Facilitator Guide

Replace `<network>` 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/<network>/.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=<network> deps
make TASK_NETWORK=<network> gen-validation-cb
make TASK_NETWORK=<network> gen-validation-sc
```

These create `config/<network>/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=<concatenated base signatures> make TASK_NETWORK=<network> approve-cb
SIGNATURES=<concatenated security council signatures> make TASK_NETWORK=<network> approve-sc
make TASK_NETWORK=<network> execute
```

After execution, confirm `getSchedule()[12]` is `1789581600` and `minimumProtocolVersion()` is
`79228162588051313888382156800`, then link the transaction from `config/<network>/README.md`.
47 changes: 47 additions & 0 deletions archive/evm/2026-09-15-bump-cobalt-activation-parameters/Makefile
Original file line number Diff line number Diff line change
@@ -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)
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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
}
Loading
Loading