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..c5ecfad9 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/.env @@ -0,0 +1,15 @@ +OP_COMMIT=594bc933a38425f745b46399a3619bcdeb74965d +BASE_CONTRACTS_COMMIT=dcd8c98aa881e0ae4ebf872e0d91692a7bf94000 + +SYSTEM_CONFIG=0x73a79Fab69143498Ed3712e519A88a918e1f4072 +OWNER_SAFE=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 + +FROM_GAS_LIMIT=150000000 +TO_GAS_LIMIT=200000000 + +FROM_ELASTICITY=3 +TO_ELASTICITY=4 + +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..9533da19 --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/Makefile @@ -0,0 +1,57 @@ +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 + +RPC_URL = $(L1_RPC_URL) + +.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..c922173a --- /dev/null +++ b/mainnet/2025-10-28-increase-gas-and-elasticity-limit/README.md @@ -0,0 +1,179 @@ +# Update Gas Limit & Elasticity in L1 `SystemConfig` + +Status: [EXECUTED](https://etherscan.io/tx/0x29b2b633ebc1da25d1a90f52b812e13b3469c12cc851b0609ab7a671b38a8cad) (See the [artifact here](./records/IncreaseEip1559ElasticityAndIncreaseGasLimit.s.sol/1/run-1761755774673.json)) + +## 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 +cd mainnet/2025-10-28-increase-gas-and-elasticity-limit +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/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 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..c1340713 --- /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": "Updates gas limit from 150M to 200M for the chain", + "allowDifference": false + }, + { + "key": "0x000000000000000000000000000000000000000000000000000000000000006a", + "before": "0x0000000000000000000000000000000000000000000000000000000300000032", + "after": "0x0000000000000000000000000000000000000000000000000000000400000032", + "description": "Updates elasticity from 3 to 4 for the chain", + "allowDifference": false + } + ] + } + ] +}