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
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ checkout-base-contracts-commit:
##
# Task Signer Tool
##
SIGNER_TOOL_COMMIT=dbe7f9e358bf99e367441e95d8f6ce28716c4cc9
SIGNER_TOOL_COMMIT=abbfa09210582eca32ad4873d862994a5957fbc2
SIGNER_TOOL_PATH=signer-tool

.PHONY: checkout-signer-tool
Expand Down
19 changes: 19 additions & 0 deletions sepolia/2025-11-18-set-jovian-parameters/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Base Contracts commit
BASE_CONTRACTS_COMMIT=51788f920e368e72c63cef24a5e1ea0f6562d9a5
Copy link
Contributor

Choose a reason for hiding this comment

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

Confirmed this is the latest Base contracts commit hash


# Optimism commit (op-contracts/v5.0.0)
OP_COMMIT=d09c836f818c73ae139f60b717654c4e53712743
Copy link
Contributor

Choose a reason for hiding this comment

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

Confirmed this is the correct OP commit hash


# Contract addresses
SYSTEM_CONFIG=0xf272670eb55e895584501d564AfEB048bEd26194
OWNER_SAFE=0x0fe884546476dDd290eC46318785046ef68a0BA9
CB_SIGNER_SAFE_ADDR=0x646132A1667ca7aD00d36616AFBA1A28116C770A
CB_NESTED_SAFE_ADDR=0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f
CB_SC_SAFE_ADDR=0x6AF0674791925f767060Dd52f7fB20984E8639d8
OP_SIGNER_SAFE_ADDR=0x6AF0674791925f767060Dd52f7fB20984E8639d8

# Jovian parameters
DA_FOOTPRINT_GAS_SCALAR=312
MIN_BASE_FEE=200000

RECORD_STATE_DIFF=true
47 changes: 47 additions & 0 deletions sepolia/2025-11-18-set-jovian-parameters/FACILITATORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#### Execute the transaction

1. Collect outputs from all participating signers.
1. Concatenate all signatures and export it as the `SIGNATURES`
environment variable, i.e. `export
SIGNATURES="[SIGNATURE1][SIGNATURE2]..."`.
1. Run the `make execute` or `make approve` command as described below to execute the transaction.

For example, if the quorum is 3 and you get the following outputs:

```shell
Data: 0xDEADBEEF
Signer: 0xC0FFEE01
Signature: AAAA
```

```shell
Data: 0xDEADBEEF
Signer: 0xC0FFEE02
Signature: BBBB
```

```shell
Data: 0xDEADBEEF
Signer: 0xC0FFEE03
Signature: CCCC
```

Coinbase facilitator:

```bash
SIGNATURES=AAAABBBBCCCC make approve-cb
```

```bash
SIGNATURES=AAAABBBBCCCC make approve-cb-sc
```

```bash
SIGNATURES=AAAABBBBCCCC make approve-op
```

Once the signatures have been submitted approving the transaction for all nested Safes run:

```bash
make execute
```
83 changes: 83 additions & 0 deletions sepolia/2025-11-18-set-jovian-parameters/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
include ../../Makefile
include ../../Multisig.mk

include ../.env
include .env

ifndef LEDGER_ACCOUNT
override LEDGER_ACCOUNT = 1
endif

# Sepolia Commands

# OWNER_SAFE/
# ├── CB_SIGNER_SAFE_ADDR/
# │ ├── CB_NESTED_SAFE_ADDR/
# │ │ └── Signers
# │ └── CB_SC_SAFE_ADDR/
# │ └── Signers
# └── OP_SIGNER_SAFE_ADDR/
# └── Signers

RPC_URL = $(L1_RPC_URL)
SCRIPT_NAME = SetJovianParametersScript

.PHONY: gen-validation-cb
gen-validation-cb: checkout-signer-tool run-script-cb

.PHONY: run-script-cb
run-script-cb:
cd $(SIGNER_TOOL_PATH); \
npm ci; \
bun run scripts/genValidationFile.ts --rpc-url $(RPC_URL) \
--ledger-id $(LEDGER_ACCOUNT) \
--workdir .. --forge-cmd 'forge script --rpc-url $(RPC_URL) \
$(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_NESTED_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-signer.json;


.PHONY: gen-validation-cb-sc
gen-validation-cb-sc: checkout-signer-tool run-script-cb-sc

.PHONY: run-script-cb-sc
run-script-cb-sc:
cd $(SIGNER_TOOL_PATH); \
npm ci; \
bun run scripts/genValidationFile.ts --rpc-url $(RPC_URL) \
--ledger-id $(LEDGER_ACCOUNT) \
--workdir .. --forge-cmd 'forge script --rpc-url $(RPC_URL) \
$(SCRIPT_NAME) --sig "sign(address[])" "[$(CB_SC_SAFE_ADDR), $(CB_SIGNER_SAFE_ADDR)]" --sender 0x7f10098bd53519c739ca8a404afe127647d94774' --out ../validations/cb-sc-signer.json;

.PHONY: gen-validation-op
gen-validation-op: checkout-signer-tool run-script-op

.PHONY: run-script-op
run-script-op:
cd $(SIGNER_TOOL_PATH); \
npm ci; \
bun run scripts/genValidationFile.ts --rpc-url $(RPC_URL) \
--ledger-id $(LEDGER_ACCOUNT) \
--workdir .. --forge-cmd 'forge script --rpc-url $(RPC_URL) \
$(SCRIPT_NAME) --sig "sign(address[])" "[$(OP_SIGNER_SAFE_ADDR)]" --sender 0x0CF2F86C3338993ce10F74d6f4B095712c7efe26' --out ../validations/op-signer.json;


# CB
.PHONY: approve-cb
approve-cb:
$(call MULTISIG_APPROVE,$(CB_NESTED_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES))

.PHONY: approve-cb-sc
approve-cb-sc:
$(call MULTISIG_APPROVE,$(CB_SC_SAFE_ADDR) $(CB_SIGNER_SAFE_ADDR),$(SIGNATURES))

.PHONY: approve-cb-coordinator
approve-cb-coordinator:
$(call MULTISIG_APPROVE,$(CB_SIGNER_SAFE_ADDR),0x)

.PHONY: approve-op
approve-op:
$(call MULTISIG_APPROVE,$(OP_SIGNER_SAFE_ADDR),$(SIGNATURES))

# Execute
.PHONY: execute
execute:
$(call MULTISIG_EXECUTE,0x)
58 changes: 58 additions & 0 deletions sepolia/2025-11-18-set-jovian-parameters/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Set Jovian Parameters on Base Sepolia

Status: READY TO SIGN

## Description

This task sets the Jovian hardfork parameters on Base Sepolia's SystemConfig contract. The parameters being set are:

- `setDAFootprintGasScalar(312)` - Sets the data availability footprint gas scalar
- `setMinBaseFee(200000)` - Sets the minimum base fee

These parameters activate with the Jovian hardfork and affect data availability fee calculations and base fee management on the L2.

## Procedure

## Install dependencies

### 1. Update foundry

```bash
foundryup
```

### 2. Install Node.js if needed

First, check if you have node installed

```bash
node --version
```

If you see a version output from the above command, you can move on. Otherwise, install node

```bash
brew install node
```

## Approving the Update transaction

### 1. Update repo:

```bash
cd contract-deployments
git pull
```

### 2. Run the signing tool (NOTE: do not enter the task directory. Run this command from the project's root).

```bash
make sign-task
```

### 3. Open the UI at [http://localhost:3000](http://localhost:3000)

Be sure to select the correct task user from the list of available users to sign.
After completion, the signer tool can be closed by using Ctrl + c

### 4. Send signature to facilitator
21 changes: 21 additions & 0 deletions sepolia/2025-11-18-set-jovian-parameters/foundry.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[profile.default]
src = 'src'
out = 'out'
libs = ['lib']
broadcast = 'records'
fs_permissions = [{ access = "read-write", path = "./" }]
optimizer = true
optimizer_runs = 999999
solc_version = "0.8.15"
via-ir = false
remappings = [
'@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/',
'@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts',
'@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts',
'@rari-capital/solmate/=lib/solmate/',
'@base-contracts/=lib/base-contracts',
'solady/=lib/solady/src/',
]
evm_version = "prague"

# See more config options https://github.com/foundry-rs/foundry/tree/master/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

import {Vm} from "forge-std/Vm.sol";
import {console} from "forge-std/console.sol";
import {Simulation} from "@base-contracts/script/universal/Simulation.sol";
import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol";

import {MultisigScript} from "@base-contracts/script/universal/MultisigScript.sol";

interface ISystemConfig {
function daFootprintGasScalar() external view returns (uint16);
function minBaseFee() external view returns (uint64);
function setDAFootprintGasScalar(uint16 _daFootprintGasScalar) external;
function setMinBaseFee(uint64 _minBaseFee) external;
}

contract SetJovianParametersScript is MultisigScript {
address internal immutable OWNER_SAFE;
address internal immutable SYSTEM_CONFIG;

uint16 internal immutable DA_FOOTPRINT_GAS_SCALAR;
uint64 internal immutable MIN_BASE_FEE;

constructor() {
OWNER_SAFE = vm.envAddress("OWNER_SAFE");
SYSTEM_CONFIG = vm.envAddress("SYSTEM_CONFIG");
DA_FOOTPRINT_GAS_SCALAR = uint16(vm.envUint("DA_FOOTPRINT_GAS_SCALAR"));
MIN_BASE_FEE = uint64(vm.envUint("MIN_BASE_FEE"));
}

function setUp() external view {
// Log current values for reference
console.log("Current DA Footprint Gas Scalar:", ISystemConfig(SYSTEM_CONFIG).daFootprintGasScalar());
console.log("Current Min Base Fee:", ISystemConfig(SYSTEM_CONFIG).minBaseFee());
console.log("New DA Footprint Gas Scalar:", DA_FOOTPRINT_GAS_SCALAR);
console.log("New Min Base Fee:", MIN_BASE_FEE);
}

function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override {
vm.assertEq(
ISystemConfig(SYSTEM_CONFIG).daFootprintGasScalar(),
DA_FOOTPRINT_GAS_SCALAR,
"DA Footprint Gas Scalar mismatch"
);
vm.assertEq(ISystemConfig(SYSTEM_CONFIG).minBaseFee(), MIN_BASE_FEE, "Min Base Fee mismatch");
}

function _buildCalls() internal view override returns (IMulticall3.Call3Value[] memory) {
IMulticall3.Call3Value[] memory calls = new IMulticall3.Call3Value[](2);

calls[0] = IMulticall3.Call3Value({
target: SYSTEM_CONFIG,
allowFailure: false,
callData: abi.encodeCall(ISystemConfig.setDAFootprintGasScalar, (DA_FOOTPRINT_GAS_SCALAR)),
value: 0
});

calls[1] = IMulticall3.Call3Value({
target: SYSTEM_CONFIG,
allowFailure: false,
callData: abi.encodeCall(ISystemConfig.setMinBaseFee, (MIN_BASE_FEE)),
value: 0
});

return calls;
}

function _ownerSafe() internal view override returns (address) {
return OWNER_SAFE;
}
}
Loading
Loading