From a3ee92815d8310ef1b3953cfbd1ef0db9a314b8a Mon Sep 17 00:00:00 2001 From: Leopold Joy Date: Wed, 29 Oct 2025 14:19:31 +0000 Subject: [PATCH 1/5] complete initial setup for the gas limit and elasticity increase on 2025-10-28 --- Makefile | 2 +- .../.env | 18 ++ .../FACILITATOR.md | 26 +++ .../Makefile | 68 +++++++ .../README.md | 178 ++++++++++++++++++ .../foundry.toml | 20 ++ ...Eip1559ElasticityAndIncreaseGasLimit.s.sol | 75 ++++++++ .../validations/base-signer.json | 67 +++++++ 8 files changed, 453 insertions(+), 1 deletion(-) create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/FACILITATOR.md create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/foundry.toml create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/script/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json diff --git a/Makefile b/Makefile index 0deb3e0e..daf4637d 100644 --- a/Makefile +++ b/Makefile @@ -112,7 +112,7 @@ checkout-base-contracts-commit: ## # Task Signer Tool ## -SIGNER_TOOL_COMMIT=dc9dcd57e66cc71d8e8f40afc2d0bad454cba998 +SIGNER_TOOL_COMMIT=92a4b600252cd7ffe255a876a880c2540802b99c SIGNER_TOOL_PATH=signer-tool .PHONY: checkout-signer-tool diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env new file mode 100644 index 00000000..1ad283ca --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env @@ -0,0 +1,18 @@ +OP_COMMIT=8d89359da4c5635044d0b130b3cdee800c8106c7 # Recommend using the version of https://github.com/ethereum-optimism/optimism that the current SystemConfig contract is on +BASE_CONTRACTS_COMMIT=98ec680a67c173d38aa52588c5dc0fbaa1c0561c # Recommend using the latest version of https://github.com/base-org/contracts + +# TODO: ensure `SYSTEM_CONFIG` is correct on the given network +SYSTEM_CONFIG=0x73a79Fab69143498Ed3712e519A88a918e1f4072 +# TODO: ensure `OWNER_SAFE` is correct on the given network +OWNER_SAFE=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 + +FROM_GAS_LIMIT=150000000 +TO_GAS_LIMIT=200000000 + +FROM_ELASTICITY=3 +TO_ELASTICITY=4 + +# TODO: ensure `SENDER` is a signer for `OWNER_SAFE` on the given network +SENDER=0x1841CB3C2ce6870D0417844C817849da64E6e937 + +RECORD_STATE_DIFF=true diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/FACILITATOR.md b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/FACILITATOR.md new file mode 100644 index 00000000..9320c233 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/FACILITATOR.md @@ -0,0 +1,26 @@ +# Facilitator Guide + +Guide for facilitators after collecting signatures from signers. + +### 1. Update repo: + +```bash +cd contract-deployments +git pull +cd mainnet/2025-10-28-increase-gas-and-elasticity-limit +make deps +``` + +### 2. Execute upgrade + +```bash +SIGNATURES=AAABBBCCC make execute +``` + +### 3. (**ONLY** if needed) Execute upgrade rollback + +> [!IMPORTANT] THIS SHOULD ONLY BE PERFORMED IN THE EVENT THAT WE NEED TO ROLLBACK + +```bash +SIGNATURES=AAABBBCCC make execute-rollback +``` diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile new file mode 100644 index 00000000..ed5b2a7d --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile @@ -0,0 +1,68 @@ +include ../../Makefile +include ../../Multisig.mk + +include ../.env +include .env + +ifndef LEDGER_ACCOUNT +override LEDGER_ACCOUNT = 0 +endif + +ifndef ROLLBACK_NONCE_OFFSET +override ROLLBACK_NONCE_OFFSET = 1 +endif + +SCRIPT_NAME = IncreaseEip1559ElasticityAndIncreaseGasLimitScript + +# # Map .env values and export them for child processes +# export FROM_GAS_LIMIT=$(OLD_GAS_LIMIT) +# export TO_GAS_LIMIT=$(NEW_GAS_LIMIT) +# export FROM_ELASTICITY=$(OLD_ELASTICITY) +# export TO_ELASTICITY=$(NEW_ELASTICITY) + +.PHONY: deps +deps: new-forge-deps + +.PHONY: new-forge-deps +new-forge-deps: + forge install --no-git safe-global/safe-smart-account@186a21a74b327f17fc41217a927dea7064f74604 + +.PHONY: gen-validation +gen-validation: checkout-signer-tool run-script + +.PHONY: run-script +run-script: + cd $(SIGNER_TOOL_PATH); \ + npm ci; \ + bun run scripts/genValidationFile.ts --rpc-url $(L1_RPC_URL) \ + --workdir .. --forge-cmd 'forge script --rpc-url $(L1_RPC_URL) \ + $(SCRIPT_NAME) --sig "sign(address[])" [] --sender $(SENDER)' --out ../validations/base-signer.json; + +.PHONY: execute +execute: + FROM_GAS_LIMIT=$(FROM_GAS_LIMIT) \ + TO_GAS_LIMIT=$(TO_GAS_LIMIT) \ + FROM_ELASTICITY=$(FROM_ELASTICITY) \ + TO_ELASTICITY=$(TO_ELASTICITY) \ + $(call MULTISIG_EXECUTE,$(SIGNATURES)) + +.PHONY: sign-rollback +sign-rollback: + FROM_GAS_LIMIT=$(TO_GAS_LIMIT) \ + TO_GAS_LIMIT=$(FROM_GAS_LIMIT) \ + FROM_ELASTICITY=$(TO_ELASTICITY) \ + TO_ELASTICITY=$(FROM_ELASTICITY) \ + SAFE_NONCE=$(shell expr $$(cast call $(OWNER_SAFE) "nonce()" --rpc-url $(L1_RPC_URL) | cast to-dec) + $(ROLLBACK_NONCE_OFFSET)) \ + $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ + forge script --rpc-url $(L1_RPC_URL) $(SCRIPT_NAME) \ + --sig "sign(address[])" [] --sender $(SENDER) + +.PHONY: execute-rollback +execute-rollback: + FROM_GAS_LIMIT=$(TO_GAS_LIMIT) \ + TO_GAS_LIMIT=$(FROM_GAS_LIMIT) \ + FROM_ELASTICITY=$(TO_ELASTICITY) \ + TO_ELASTICITY=$(FROM_ELASTICITY) \ + SAFE_NONCE=$(shell expr $$(cast call $(OWNER_SAFE) "nonce()" --rpc-url $(L1_RPC_URL) | cast to-dec) + $(ROLLBACK_NONCE_OFFSET)) \ + forge script --rpc-url $(L1_RPC_URL) $(SCRIPT_NAME) \ + --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md new file mode 100644 index 00000000..34b858d6 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md @@ -0,0 +1,178 @@ +# Update Gas Limit & Elasticity in L1 `SystemConfig` + +Status: READY TO SIGN + +## Description + +We are updating the gas limit and elasticity to improve TPS and reduce gas fees. + +This runbook invokes the following script which allows our signers to sign the same call with two different sets of parameters for our Incident Multisig, defined in the [base-org/contracts](https://github.com/base/contracts) repository: + +`IncreaseEip1559ElasticityAndIncreaseGasLimitScript` -- This script will update the gas limit to our new limit of 200M gas and 4 elasticity if invoked as part of the "upgrade" process, or revert to the old limit of 150M gas and 3 elasticity if invoked as part of the "rollback" process. + +The values we are sending are statically defined in the `.env` file. + +> [!IMPORTANT] We have two transactions to sign. Please follow +> the flow for both "Approving the Update transaction" and +> "Approving the Rollback transaction". Hopefully we only need +> the former, but will have the latter available if needed. + +## 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 (**not** the "rollback" user). + +### 4. Send signature to facilitator + +## Approving the Rollback transaction + +Complete the above steps for `Approving the Update transaction` before continuing below. + +### 1. Simulate and validate the transaction + +Make sure your ledger is still unlocked and run the following. + +```shell +make sign-rollback +``` + +Once you run the make sign command successfully, you will see a "Simulation link" from the output. Once again paste this URL in your browser and click "Simulate Transaction". + +We will be performing 3 validations and then we'll extract the domain hash and +message hash to approve on your Ledger then verify completion: + +1. Validate integrity of the simulation and that it completed successfully. +2. Validate correctness of the state diff. +3. Validate and extract domain hash and message hash to approve. + +#### 2. Validate integrity of the simulation and that it completed successfully. + +Make sure you are on the "Overview" tab of the tenderly simulation, to +validate integrity of the simulation, we need to check the following: + +1. "Network": Check the network is Ethereum Mainnet. +2. "Timestamp": Check the simulation is performed on a block with a + recent timestamp (i.e. close to when you run the script). +3. "Sender": Check the address shown is your signer account or a valid signer address (from the Safe multi-sig). +4. "Success" with a green check mark + +#### 3. Validate correctness of the state diff. + +Now click on the "State" tab. Verify that: + +1. Verify that the nonce is incremented for the Incident Multisig under the "GnosisSafeProxy" at address `0x14536667Cd30e52C0b458BaACcB9faDA7046E056`: + +``` +Key: 0x0000000000000000000000000000000000000000000000000000000000000005 +Before: 0x000000000000000000000000000000000000000000000000000000000000005d +After: 0x000000000000000000000000000000000000000000000000000000000000005e +``` + +2. Verify that **NO** gas limit value or elasticity value is updated and thus no changes are shown for a "Proxy" address at `0x73a79fab69143498ed3712e519a88a918e1f4072`. This is because the values would change back to the exact same values that are currently set, therefore no state changes should be displayed for this. + +#### 4. Validate and extract domain hash and message hash to approve. + +Now that we have verified the transaction performs the right +operation, we need to extract the domain hash and the message hash to +approve. + +Go back to the "Overview" tab, and find the +`GnosisSafe.checkSignatures` call. This call's `data` parameter +contains both the domain hash and the message hash that will show up +in your Ledger. + +Here is an example screenshot. Note that the value will be +different for each signer: + +![Screenshot 2024-03-07 at 5 49 32 PM](https://github.com/base-org/contract-deployments/assets/84420280/b6b5817f-0d05-4862-b16a-4f7f5f18f036) + +It will be a concatenation of `0x1901`, the domain hash, and the +message hash: `0x1901[domain hash][message hash]`. + +Note down this value. You will need to compare it with the ones +displayed on the Ledger screen at signing. Also, ensure that it matches the following: + +``` +Domain hash: 0xf3474c66ee08325b410c3f442c878d01ec97dd55a415a307e9d7d2ea24336289 +Message hash: 0x5d50efea16ce96c189a49bcb87e208506bb4c612a5ef66c81dd5790f01ef7089 +``` + +### 5. Approve the signature on your ledger + +Once the validations are done, it's time to actually sign the +transaction. Make sure your ledger is still unlocked and run the +following: + +```shell +make sign-rollback +``` + +> [!IMPORTANT] This is the most security critical part of the +> playbook: make sure the domain hash and message hash in the +> following two places match: + +1. On your Ledger screen. +2. In the Tenderly simulation. You should use the same Tenderly + simulation as the one you used to verify the state diffs, instead + of opening the new one printed in the console. + +There is no need to verify anything printed in the console. There is +no need to open the new Tenderly simulation link either. + +After verification, sign the transaction. You will see the `Data`, +`Signer` and `Signature` printed in the console. Format should be +something like this: + +``` +Data: +Signer:
+Signature: +``` + +Double check the signer address is the right one. + +### 6. Send the output to Facilitator(s) + +Nothing has occurred onchain - these are offchain signatures which +will be collected by Facilitators for execution. Execution can occur +by anyone once a threshold of signatures are collected, so a +Facilitator will do the final execution for convenience. + +Share the `Data`, `Signer` and `Signature` with the Facilitator, and +congrats, you are done! diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/foundry.toml b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/foundry.toml new file mode 100644 index 00000000..1f932186 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/foundry.toml @@ -0,0 +1,20 @@ +[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/' +] + +# See more config options https://github.com/foundry-rs/foundry/tree/master/config \ No newline at end of file diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/script/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/script/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol new file mode 100644 index 00000000..e99d4d34 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/script/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Vm} from "forge-std/Vm.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 eip1559Elasticity() external view returns (uint32); + function eip1559Denominator() external view returns (uint32); + function setEIP1559Params(uint32 _denominator, uint32 _elasticity) external; + function gasLimit() external view returns (uint64); + function setGasLimit(uint64 _gasLimit) external; +} + +contract IncreaseEip1559ElasticityAndIncreaseGasLimitScript is MultisigScript { + address internal immutable OWNER_SAFE; + address internal immutable SYSTEM_CONFIG; + + uint32 internal immutable ELASTICITY; + uint32 internal immutable NEW_ELASTICITY; + uint64 internal immutable GAS_LIMIT; + uint64 internal immutable NEW_GAS_LIMIT; + + uint32 internal constant DENOMINATOR = 50; + + constructor() { + OWNER_SAFE = vm.envAddress("OWNER_SAFE"); + SYSTEM_CONFIG = vm.envAddress("SYSTEM_CONFIG"); + + GAS_LIMIT = uint64(vm.envUint("FROM_GAS_LIMIT")); + NEW_GAS_LIMIT = uint64(vm.envUint("TO_GAS_LIMIT")); + + ELASTICITY = uint32(vm.envUint("FROM_ELASTICITY")); + NEW_ELASTICITY = uint32(vm.envUint("TO_ELASTICITY")); + } + + function setUp() external view { + // vm.assertEq(ISystemConfig(SYSTEM_CONFIG).eip1559Denominator(), DENOMINATOR, "Denominator mismatch"); + // vm.assertEq(ISystemConfig(SYSTEM_CONFIG).eip1559Elasticity(), ELASTICITY, "Elasticity mismatch"); + // vm.assertEq(ISystemConfig(SYSTEM_CONFIG).gasLimit(), GAS_LIMIT, "Gas Limit mismatch"); + } + + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal view override { + vm.assertEq(ISystemConfig(SYSTEM_CONFIG).eip1559Denominator(), DENOMINATOR, "Denominator mismatch"); + vm.assertEq(ISystemConfig(SYSTEM_CONFIG).eip1559Elasticity(), NEW_ELASTICITY, "Elasticity mismatch"); + vm.assertEq(ISystemConfig(SYSTEM_CONFIG).gasLimit(), NEW_GAS_LIMIT, "Gas Limit 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.setEIP1559Params, (DENOMINATOR, NEW_ELASTICITY)), + value: 0 + }); + + calls[1] = IMulticall3.Call3Value({ + target: SYSTEM_CONFIG, + allowFailure: false, + callData: abi.encodeCall(ISystemConfig.setGasLimit, (NEW_GAS_LIMIT)), + value: 0 + }); + + return calls; + } + + function _ownerSafe() internal view override returns (address) { + return OWNER_SAFE; + } +} diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json new file mode 100644 index 00000000..9a89aa3f --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json @@ -0,0 +1,67 @@ +{ + "taskName": "Increase EIP-1559 Elasticity and Gas Limit", + "scriptName": "IncreaseEip1559ElasticityAndIncreaseGasLimitScript", + "signature": "sign(address[])", + "sender": "0x1841CB3C2ce6870D0417844C817849da64E6e937", + "args": "[]", + "ledgerId": 0, + "rpcUrl": "https://eth-mainnet.public.blastapi.io", + "expectedDomainAndMessageHashes": { + "address": "0x14536667Cd30e52C0b458BaACcB9faDA7046E056", + "domainHash": "0xf3474c66ee08325b410c3f442c878d01ec97dd55a415a307e9d7d2ea24336289", + "messageHash": "0x0cb6e713a2269e0a8511ad20124a20098af5f6386c910b1d9abc8f44b85493ae" + }, + "stateOverrides": [ + { + "name": "Incident Safe - Mainnet", + "address": "0x14536667cd30e52c0b458baaccb9fada7046e056", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur." + }, + { + "key": "0xeb8f6f520dafe4d80435058e29df30db0a9746fcf085933f338bf88dacc608b2", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed." + } + ] + } + ], + "stateChanges": [ + { + "name": "Incident Safe - Mainnet", + "address": "0x14536667cd30e52c0b458baaccb9fada7046e056", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000005c", + "after": "0x000000000000000000000000000000000000000000000000000000000000005d", + "description": "Increments the nonce", + "allowDifference": false + } + ] + }, + { + "name": "System Config - Mainnet", + "address": "0x73a79fab69143498ed3712e519a88a918e1f4072", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000068", + "before": "0x0000000000000000000000000000000000101c12000008dd0000000008f0d180", + "after": "0x0000000000000000000000000000000000101c12000008dd000000000bebc200", + "description": "<>", + "allowDifference": false + }, + { + "key": "0x000000000000000000000000000000000000000000000000000000000000006a", + "before": "0x0000000000000000000000000000000000000000000000000000000300000032", + "after": "0x0000000000000000000000000000000000000000000000000000000400000032", + "description": "Updates EIP 1559 params for the chain", + "allowDifference": false + } + ] + } + ] +} From e772663f792cb599d921b08cf7ac44a6e276eda4 Mon Sep 17 00:00:00 2001 From: Leopold Joy Date: Wed, 29 Oct 2025 14:24:34 +0000 Subject: [PATCH 2/5] remove unused lines in Makefile --- .../2025-10-28-increase-gas-and-elasticity-limit/Makefile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile index ed5b2a7d..de0bf353 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile @@ -14,12 +14,6 @@ endif SCRIPT_NAME = IncreaseEip1559ElasticityAndIncreaseGasLimitScript -# # Map .env values and export them for child processes -# export FROM_GAS_LIMIT=$(OLD_GAS_LIMIT) -# export TO_GAS_LIMIT=$(NEW_GAS_LIMIT) -# export FROM_ELASTICITY=$(OLD_ELASTICITY) -# export TO_ELASTICITY=$(NEW_ELASTICITY) - .PHONY: deps deps: new-forge-deps From daf0b8fa2f4218e6c8ae61ad7931f837d6ac94fd Mon Sep 17 00:00:00 2001 From: Leopold Joy Date: Wed, 29 Oct 2025 15:28:55 +0000 Subject: [PATCH 3/5] make fixes from PR review --- mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env | 7 ++----- .../2025-10-28-increase-gas-and-elasticity-limit/Makefile | 7 ------- .../2025-10-28-increase-gas-and-elasticity-limit/README.md | 1 + .../validations/base-signer.json | 4 ++-- 4 files changed, 5 insertions(+), 14 deletions(-) diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env index 1ad283ca..c5ecfad9 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env @@ -1,9 +1,7 @@ -OP_COMMIT=8d89359da4c5635044d0b130b3cdee800c8106c7 # Recommend using the version of https://github.com/ethereum-optimism/optimism that the current SystemConfig contract is on -BASE_CONTRACTS_COMMIT=98ec680a67c173d38aa52588c5dc0fbaa1c0561c # Recommend using the latest version of https://github.com/base-org/contracts +OP_COMMIT=594bc933a38425f745b46399a3619bcdeb74965d +BASE_CONTRACTS_COMMIT=dcd8c98aa881e0ae4ebf872e0d91692a7bf94000 -# TODO: ensure `SYSTEM_CONFIG` is correct on the given network SYSTEM_CONFIG=0x73a79Fab69143498Ed3712e519A88a918e1f4072 -# TODO: ensure `OWNER_SAFE` is correct on the given network OWNER_SAFE=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 FROM_GAS_LIMIT=150000000 @@ -12,7 +10,6 @@ TO_GAS_LIMIT=200000000 FROM_ELASTICITY=3 TO_ELASTICITY=4 -# TODO: ensure `SENDER` is a signer for `OWNER_SAFE` on the given network SENDER=0x1841CB3C2ce6870D0417844C817849da64E6e937 RECORD_STATE_DIFF=true diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile index de0bf353..fff3eed5 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile @@ -14,13 +14,6 @@ endif SCRIPT_NAME = IncreaseEip1559ElasticityAndIncreaseGasLimitScript -.PHONY: deps -deps: new-forge-deps - -.PHONY: new-forge-deps -new-forge-deps: - forge install --no-git safe-global/safe-smart-account@186a21a74b327f17fc41217a927dea7064f74604 - .PHONY: gen-validation gen-validation: checkout-signer-tool run-script diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md index 34b858d6..d8612831 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md @@ -69,6 +69,7 @@ Complete the above steps for `Approving the Update transaction` before continuin Make sure your ledger is still unlocked and run the following. ```shell +cd mainnet/2025-10-28-increase-gas-and-elasticity-limit make sign-rollback ``` diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json index 9a89aa3f..c1340713 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/validations/base-signer.json @@ -51,14 +51,14 @@ "key": "0x0000000000000000000000000000000000000000000000000000000000000068", "before": "0x0000000000000000000000000000000000101c12000008dd0000000008f0d180", "after": "0x0000000000000000000000000000000000101c12000008dd000000000bebc200", - "description": "<>", + "description": "Updates gas limit from 150M to 200M for the chain", "allowDifference": false }, { "key": "0x000000000000000000000000000000000000000000000000000000000000006a", "before": "0x0000000000000000000000000000000000000000000000000000000300000032", "after": "0x0000000000000000000000000000000000000000000000000000000400000032", - "description": "Updates EIP 1559 params for the chain", + "description": "Updates elasticity from 3 to 4 for the chain", "allowDifference": false } ] From 8ba890d92a51d14c659f137b621812e303514a48 Mon Sep 17 00:00:00 2001 From: Leopold Joy Date: Wed, 29 Oct 2025 19:16:10 +0000 Subject: [PATCH 4/5] update executed status and add execution artifact --- .../README.md | 2 +- .../1/run-1761755774673.json | 105 ++++++++++++++++++ 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 mainnet/2025-10-28-increase-gas-and-elasticity-limit/records/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol/1/run-1761755774673.json diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md index d8612831..c922173a 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md @@ -1,6 +1,6 @@ # Update Gas Limit & Elasticity in L1 `SystemConfig` -Status: READY TO SIGN +Status: [EXECUTED](https://etherscan.io/tx/0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad) (See the [artifact here](./records/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol/1/run-1761755774673.json)) ## Description diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/records/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol/1/run-1761755774673.json b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/records/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol/1/run-1761755774673.json new file mode 100644 index 00000000..2c7fd810 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/records/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol/1/run-1761755774673.json @@ -0,0 +1,105 @@ +{ + "transactions": [ + { + "hash": "0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x14536667cd30e52c0b458baaccb9fada7046e056", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xcA11bde05977b3631167028862bE2a173976CA11", + "0", + "0x174dea71000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000014000000000000000000000000073a79fab69143498ed3712e519a88a918e1f40720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000044c0fd4b41000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000073a79fab69143498ed3712e519a88a918e1f40720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000024b40a817c000000000000000000000000000000000000000000000000000000000bebc20000000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0xf9772f5957636bc03604a20bf61033ebfc94cec45f35bc93ac9b0d6f6a3884b36fefa89fb180a436027db86cdd0faba358b4b24a445b512e8641bbb2bdd60dd21c59005d045ece16fd7d370710023d8ea187630da0e5ebdb5d92db633b6e6033cf573c16cd80a479330dc769d07b32c45ba0ca47986507534eb489093b5571825f1cceb9364f54fc62b38d92218d0b31330ab49a3a3715ae31e2d45e1cfec5ca4ae258047d51509abb7a2e842f65041739e8b8ccddd3526e83cedbb1e92fdf26c05a1b" + ], + "transaction": { + "from": "0x1841cb3c2ce6870d0417844c817849da64e6e937", + "to": "0x14536667cd30e52c0b458baaccb9fada7046e056", + "gas": "0x2296f", + "value": "0x0", + "input": "0x6a761202000000000000000000000000ca11bde05977b3631167028862be2a173976ca110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000000000000000000000000000000000000000000264174dea71000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000014000000000000000000000000073a79fab69143498ed3712e519a88a918e1f40720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000044c0fd4b41000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000073a79fab69143498ed3712e519a88a918e1f40720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000024b40a817c000000000000000000000000000000000000000000000000000000000bebc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3f9772f5957636bc03604a20bf61033ebfc94cec45f35bc93ac9b0d6f6a3884b36fefa89fb180a436027db86cdd0faba358b4b24a445b512e8641bbb2bdd60dd21c59005d045ece16fd7d370710023d8ea187630da0e5ebdb5d92db633b6e6033cf573c16cd80a479330dc769d07b32c45ba0ca47986507534eb489093b5571825f1cceb9364f54fc62b38d92218d0b31330ab49a3a3715ae31e2d45e1cfec5ca4ae258047d51509abb7a2e842f65041739e8b8ccddd3526e83cedbb1e92fdf26c05a1b0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x22be2ff", + "logs": [ + { + "address": "0x73a79fab69143498ed3712e519a88a918e1f4072", + "topics": [ + "0x1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000003200000004", + "blockHash": "0x5e65ac96e1de198137239130608a61f1ced19ea710b4d2f6c65c37d623a57b25", + "blockNumber": "0x16964b9", + "blockTimestamp": "0x6902427b", + "transactionHash": "0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad", + "transactionIndex": "0x189", + "logIndex": "0x364", + "removed": false + }, + { + "address": "0x73a79fab69143498ed3712e519a88a918e1f4072", + "topics": [ + "0x1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000bebc200", + "blockHash": "0x5e65ac96e1de198137239130608a61f1ced19ea710b4d2f6c65c37d623a57b25", + "blockNumber": "0x16964b9", + "blockTimestamp": "0x6902427b", + "transactionHash": "0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad", + "transactionIndex": "0x189", + "logIndex": "0x365", + "removed": false + }, + { + "address": "0x14536667cd30e52c0b458baaccb9fada7046e056", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e" + ], + "data": "0x7fa5368e189d160163bf708fd22cd73e1968995f242aa5434742fda12c7dfaf10000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5e65ac96e1de198137239130608a61f1ced19ea710b4d2f6c65c37d623a57b25", + "blockNumber": "0x16964b9", + "blockTimestamp": "0x6902427b", + "transactionHash": "0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad", + "transactionIndex": "0x189", + "logIndex": "0x366", + "removed": false + } + ], + "logsBloom": "0x0400000040000000000000000000000000000000000000000000000004000000000000a000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000001000000000000000000000000000008000000420000000000000000000800000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000100000004000000000000000000002000000000008000000000000000000000000000000000000000008000000000000000000020000000000000000040000000000000000000000000008000000000008000000000", + "type": "0x2", + "transactionHash": "0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad", + "transactionIndex": "0x189", + "blockHash": "0x5e65ac96e1de198137239130608a61f1ced19ea710b4d2f6c65c37d623a57b25", + "blockNumber": "0x16964b9", + "gasUsed": "0x190ae", + "effectiveGasPrice": "0x2dde21d4", + "from": "0x1841cb3c2ce6870d0417844c817849da64e6e937", + "to": "0x14536667cd30e52c0b458baaccb9fada7046e056", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1761755774673, + "chain": 1, + "commit": "daf0b8f" +} \ No newline at end of file From fe2f125cf09f27279d1a0fc60596b5f6b278e057 Mon Sep 17 00:00:00 2001 From: Leopold Joy Date: Wed, 29 Oct 2025 20:51:19 +0000 Subject: [PATCH 5/5] add missing RPC_URL definition in Makefile --- mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile index fff3eed5..9533da19 100644 --- a/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile @@ -14,6 +14,8 @@ endif SCRIPT_NAME = IncreaseEip1559ElasticityAndIncreaseGasLimitScript +RPC_URL = $(L1_RPC_URL) + .PHONY: gen-validation gen-validation: checkout-signer-tool run-script