From 1f09acf0b9355bde6d42cebf4c03f228f21afdc9 Mon Sep 17 00:00:00 2001 From: Henri Devieux Date: Wed, 4 Dec 2024 15:13:02 -0500 Subject: [PATCH] Add scripts and configuration to upgrade L1 system config (#225) * Add scripts and configuration to upgrade L1 system config * use public repo * Use L1 RPC for broadcast * fix compile errors * wip multicall * fix addresses + working script * remove wrong new impl * Added new Rollback template to demonstrate the safe way to handle tx pairs (do/undo) * Update with new address * Update makefile * Add readme * Update to latest contract implementation * Remove irrelevant RollbackPause script * Commit contract change * Add different signing tasks for op and cb --------- Co-authored-by: Baptiste Oueriagli Co-authored-by: katzman Co-authored-by: Francis Li --- .../2024-11-18-increase-max-gas-limit/.env | 12 ++ .../Makefile | 42 ++++++ .../README.md | 29 ++++ .../foundry.toml | 21 +++ .../2024-11-18-increase-max-gas-limit/output | 1 + .../patch/max-gas-limit.patch | 24 ++++ .../1/run-1733268847.json | 135 ++++++++++++++++++ .../script/DeploySystemConfig.s.sol | 15 ++ .../script/UpgradeSystemConfig.s.sol | 46 ++++++ 9 files changed, 325 insertions(+) create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/.env create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/Makefile create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/README.md create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/foundry.toml create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/output create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/patch/max-gas-limit.patch create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/records/DeploySystemConfig.s.sol/1/run-1733268847.json create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/script/DeploySystemConfig.s.sol create mode 100644 mainnet/2024-11-18-increase-max-gas-limit/script/UpgradeSystemConfig.s.sol diff --git a/mainnet/2024-11-18-increase-max-gas-limit/.env b/mainnet/2024-11-18-increase-max-gas-limit/.env new file mode 100644 index 0000000..12d1c62 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/.env @@ -0,0 +1,12 @@ +OPTIMISM_REPO=https://github.com/ethereum-optimism/optimism.git +OPTIMISM_VERSION=op-contracts/v1.5.0 +OPTIMISM_CONTRACT_PATCH=patch/max-gas-limit.patch + +OP_MULTISIG=0x2501c477D0A35545a387Aa4A3EEe4292A9a8B3F0 +CB_MULTISIG=0x6e1DFd5C1E22A4677663A81D24C6BA03561ef0f6 + +SAFE_ADDRESS=0x7bb41c3008b3f03fe483b28b8db90e19cf07595c +PROXY_ADMIN_ADDRESS=0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E +SYSTEM_CONFIG_ADDRESS=0x73a79Fab69143498Ed3712e519A88a918e1f4072 + +NEW_IMPLEMENTATION=0x3c768A33C473F664678b58C2253DB096b41F7cFC diff --git a/mainnet/2024-11-18-increase-max-gas-limit/Makefile b/mainnet/2024-11-18-increase-max-gas-limit/Makefile new file mode 100644 index 0000000..711ba15 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/Makefile @@ -0,0 +1,42 @@ +include ../../Makefile +include ../.env +include .env + +ifndef LEDGER_ACCOUNT +override LEDGER_ACCOUNT = 0 +endif + +# Overwriting this from top level makefile to change the branch +.PHONY: checkout-op-commit +checkout-op-commit: + rm -rf lib/optimism + mkdir -p lib/optimism + cd lib/optimism; \ + git init; \ + git remote add origin $(OPTIMISM_REPO); \ + git fetch --depth=1 origin tag $(OPTIMISM_VERSION) --no-tags; \ + git checkout $(OPTIMISM_VERSION); \ + git apply ../../$(OPTIMISM_CONTRACT_PATCH) + + +.PHONY: deploy +deploy: + $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ + forge script --rpc-url $(L1_RPC_URL) DeploySystemConfig --sig "sign(address)" + +.PHONY: sign-cb +sign-cb: + $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ + forge script --rpc-url $(L1_RPC_URL) UpgradeSystemConfig \ + --sig "sign(address)" $(CB_MULTISIG) + +.PHONY: sign-op +sign-op: + $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ + forge script --rpc-url $(L1_RPC_URL) UpgradeSystemConfig \ + --sig "sign(address)" $(OP_MULTISIG) + +.PHONY: run-upgrade +run-upgrade: + forge script --rpc-url $(L1_RPC_URL) UpgradeSystemConfig \ + --sig "run(bytes)" $(SIGNATURES) -i 1 --broadcast diff --git a/mainnet/2024-11-18-increase-max-gas-limit/README.md b/mainnet/2024-11-18-increase-max-gas-limit/README.md new file mode 100644 index 0000000..eadf517 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/README.md @@ -0,0 +1,29 @@ +## [READY TO SIGN] Upgrade to new system config with 400m max gas limit + +Base is continuing to scale and we need higher block gas limit to support the increased demand. + +### Steps + +1. pull main branch of https://github.com/base-org/contract-deployments: +`git clone git@github.com:base-org/contract-deployments.git` + +2. ledger needs to be connected and unlocked +3. deploying contracts (base team): +``` +cd mainnet/2024-11-18-increase-max-gas-limit +make deps +make deploy +``` + +4. sign (both base & op team): +``` +cd mainnet/2024-11-18-increase-max-gas-limit +make deps # skip if already installed +make sign +``` + +5. upgrade +``` +cd mainnet/2024-11-18-increase-max-gas-limit +make run-upgrade +``` \ No newline at end of file diff --git a/mainnet/2024-11-18-increase-max-gas-limit/foundry.toml b/mainnet/2024-11-18-increase-max-gas-limit/foundry.toml new file mode 100644 index 0000000..905dfa9 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/foundry.toml @@ -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/', + 'src/=lib/optimism/packages/contracts-bedrock/src/', +] + +# See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/mainnet/2024-11-18-increase-max-gas-limit/output b/mainnet/2024-11-18-increase-max-gas-limit/output new file mode 100644 index 0000000..faebb8d --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/output @@ -0,0 +1 @@ +Start verifying contract `0x57563A1Ad5b07CEB7e77B395d767E6144699C887` deployed on sepolia diff --git a/mainnet/2024-11-18-increase-max-gas-limit/patch/max-gas-limit.patch b/mainnet/2024-11-18-increase-max-gas-limit/patch/max-gas-limit.patch new file mode 100644 index 0000000..fc89fd7 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/patch/max-gas-limit.patch @@ -0,0 +1,24 @@ +diff --git a/packages/contracts-bedrock/src/L1/SystemConfig.sol b/packages/contracts-bedrock/src/L1/SystemConfig.sol +index 67a8353ae..ae72faf92 100644 +--- a/packages/contracts-bedrock/src/L1/SystemConfig.sol ++++ b/packages/contracts-bedrock/src/L1/SystemConfig.sol +@@ -87,7 +87,7 @@ contract SystemConfig is OwnableUpgradeable, ISemver, IGasToken { + /// @notice The maximum gas limit that can be set for L2 blocks. This limit is used to enforce that the blocks + /// on L2 are not too large to process and prove. Over time, this value can be increased as various + /// optimizations and improvements are made to the system at large. +- uint64 internal constant MAX_GAS_LIMIT = 200_000_000; ++ uint64 internal constant MAX_GAS_LIMIT = 400_000_000; + + /// @notice Fixed L2 gas overhead. Used as part of the L2 fee calculation. + uint256 public overhead; +@@ -115,8 +115,8 @@ contract SystemConfig is OwnableUpgradeable, ISemver, IGasToken { + event ConfigUpdate(uint256 indexed version, UpdateType indexed updateType, bytes data); + + /// @notice Semantic version. +- /// @custom:semver 2.2.0 +- string public constant version = "2.2.0"; ++ /// @custom:semver 2.2.0+max-gas-limit-400M ++ string public constant version = "2.2.0+max-gas-limit-400M"; + + /// @notice Constructs the SystemConfig contract. Cannot set + /// the owner to `address(0)` due to the Ownable contract's diff --git a/mainnet/2024-11-18-increase-max-gas-limit/records/DeploySystemConfig.s.sol/1/run-1733268847.json b/mainnet/2024-11-18-increase-max-gas-limit/records/DeploySystemConfig.s.sol/1/run-1733268847.json new file mode 100644 index 0000000..6153ae7 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/records/DeploySystemConfig.s.sol/1/run-1733268847.json @@ -0,0 +1,135 @@ +{ + "transactions": [ + { + "hash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionType": "CREATE", + "contractName": "SystemConfig", + "contractAddress": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "function": null, + "arguments": null, + "transaction": { + "from": "0x73565876170a336fa02fde34eed03e3121f70ba6", + "gas": "0x2ee91d", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b506200004962000032600160008051602062003a48833981519152620011a0565b60001b600019620000d160201b62000f261760201c565b6040805160c080820183526001808352602080840182905260028486015260006060808601829052608080870183905260a0808801849052885160e081018a528481529485018490529784018390529083018290528201819052948101859052918201849052620000cb9361dead9390928392839290918391908290620000d5565b620013c9565b9055565b600054610100900460ff1615808015620000f65750600054600160ff909116105b806200012657506200011330620004e660201b62000f2a1760201c565b15801562000126575060005460ff166001145b6200018f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620001b3576000805461ff0019166101001790555b620001bd620004f5565b620001c88a6200055d565b620001d387620005dc565b620001df89896200062e565b620001ea8662000692565b620002217f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0886620000d160201b62000f261760201c565b620002676200025260017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc598620011a0565b60001b84620000d160201b62000f261760201c565b620002b16200029860017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce9580637620011a0565b60001b8360000151620000d160201b62000f261760201c565b620002fb620002e260017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a8620011a0565b60001b8360200151620000d160201b62000f261760201c565b620003456200032c60017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad6377620011a0565b60001b8360400151620000d160201b62000f261760201c565b6200038f6200037660017f52322a25d9f59ea17656545543306b7aef62bc0cc53a0e65ccfa0c75b97aa907620011a0565b60001b8360600151620000d160201b62000f261760201c565b620003c8620003af600160008051602062003a28833981519152620011a0565b60001b8360800151620000d160201b62000f261760201c565b62000412620003f960017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d620011a0565b60001b8360a00151620000d160201b62000f261760201c565b6200041c6200078e565b60c08201516200042c90620007ff565b620004378462000a88565b6200044162000dcc565b6001600160401b0316866001600160401b03161015620004935760405162461bcd60e51b815260206004820152601f6024820152600080516020620039c8833981519152604482015260640162000186565b8015620004da576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b03163b151590565b600054610100900460ff16620005515760405162461bcd60e51b815260206004820152602b602482015260008051602062003a0883398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000186565b6200055b62000df9565b565b6200056762000e60565b6001600160a01b038116620005ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000186565b620005d98162000ebc565b50565b60678190556040805160208082018490528251808303909101815290820190915260005b6000600080516020620039e883398151915283604051620006229190620011e9565b60405180910390a35050565b60658290556066819055604080516020810184905290810182905260009060600160408051601f19818403018152919052905060016000600080516020620039e883398151915283604051620006859190620011e9565b60405180910390a3505050565b6200069c62000dcc565b6001600160401b0316816001600160401b03161015620006ee5760405162461bcd60e51b815260206004820152601f6024820152600080516020620039c8833981519152604482015260640162000186565b6317d784006001600160401b03821611156200074d5760405162461bcd60e51b815260206004820181905260248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f2068696768604482015260640162000186565b606880546001600160401b0319166001600160401b038316908117909155604080516020808201939093528151808203909301835281019052600262000600565b620007c2620007ae600160008051602062003a48833981519152620011a0565b60001b62000f0e60201b620006ca1760201c565b6000036200055b576200055b620007ea600160008051602062003a48833981519152620011a0565b60001b43620000d160201b62000f261760201c565b6001600160a01b038116158015906200083557506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b80156200084957506200084762000f12565b155b15620005d957601260ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000893573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008b991906200121e565b60ff1614620009225760405162461bcd60e51b815260206004820152602e60248201527f53797374656d436f6e6669673a2062616420646563696d616c73206f6620676160448201526d39903830bcb4b733903a37b5b2b760911b606482015260840162000186565b6000620009a2826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000967573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000991919081019062001260565b62000f4660201b62000f461760201c565b90506000620009e9836001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000967573d6000803e3d6000fd5b905062000a05836012848462000fde60201b62000fe91760201c565b62000a0f620010ba565b6040516371cfaa3f60e01b81526001600160a01b03858116600483015260126024830152604482018590526064820184905291909116906371cfaa3f90608401600060405180830381600087803b15801562000a6a57600080fd5b505af115801562000a7f573d6000803e3d6000fd5b50505050505050565b8060a001516001600160801b0316816060015163ffffffff16111562000b175760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d617820626173650000000000000000000000606482015260840162000186565b6001816040015160ff161162000b885760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201526e65206c6172676572207468616e203160881b606482015260840162000186565b606854608082015182516001600160401b039092169162000baa919062001318565b63ffffffff16111562000bef5760405162461bcd60e51b815260206004820152601f6024820152600080516020620039c8833981519152604482015260640162000186565b6000816020015160ff161162000c605760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201526e06965722063616e6e6f74206265203608c1b606482015260840162000186565b8051602082015163ffffffff82169160ff9091169062000c8290829062001343565b62000c8e919062001375565b63ffffffff161462000d095760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d6974000000000000000000606482015260840162000186565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff96871664ffffffffff199095169490941764010000000060ff948516021764ffffffffff60281b191665010000000000939092169290920263ffffffff60301b19161766010000000000009185169190910217600160501b600160f01b0319166a01000000000000000000009390941692909202600160701b600160f01b03191692909217600160701b6001600160801b0390921691909102179055565b60695460009062000df49063ffffffff6a0100000000000000000000820481169116620013a4565b905090565b600054610100900460ff1662000e555760405162461bcd60e51b815260206004820152602b602482015260008051602062003a0883398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000186565b6200055b3362000ebc565b6033546001600160a01b031633146200055b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000186565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b5490565b60008062000f1f620010dc565b506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141592915050565b600060208251111562000fc25760405162461bcd60e51b815260206004820152603660248201527f476173506179696e67546f6b656e3a20737472696e672063616e6e6f7420626560448201527f2067726561746572207468616e20333220627974657300000000000000000000606482015260840162000186565b62000fd882620010fd60201b620010bb1760201c565b92915050565b6200102862000ffe6001600080516020620039a8833981519152620011a0565b60001b856001600160a01b031660a08660ff16901b1760001b620000d160201b62000f261760201c565b6200106e6200105960017f657c3582c29b3176614e3a33ddd1ec48352696a04e92b3c0566d72010fa8863d620011a0565b60001b83620000d160201b62000f261760201c565b620010b46200109f60017fa48b38a4b44951360fbdcbfaaeae5ed6ae92585412e9841b70ec72ed8cd05764620011a0565b60001b82620000d160201b62000f261760201c565b50505050565b600062000df4620007ae600160008051602062003a28833981519152620011a0565b600080620010f46200112760201b620010e41760201c565b90939092509050565b805160218110620011165763ec92f9a36000526004601cfd5b9081015160209190910360031b1b90565b600080806200114b620007ae6001600080516020620039a8833981519152620011a0565b6001600160a01b03811693509050826200117e575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee92601292509050565b60a081901c9150509091565b634e487b7160e01b600052601160045260246000fd5b600082821015620011b557620011b56200118a565b500390565b60005b83811015620011d7578181015183820152602001620011bd565b83811115620010b45750506000910152565b60208152600082518060208401526200120a816040850160208701620011ba565b601f01601f19169190910160400192915050565b6000602082840312156200123157600080fd5b815160ff811681146200124357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200127357600080fd5b81516001600160401b03808211156200128b57600080fd5b818401915084601f830112620012a057600080fd5b815181811115620012b557620012b56200124a565b604051601f8201601f19908116603f01168101908382118183101715620012e057620012e06200124a565b81604052828152876020848701011115620012fa57600080fd5b6200130d836020830160208801620011ba565b979650505050505050565b600063ffffffff8083168185168083038211156200133a576200133a6200118a565b01949350505050565b600063ffffffff808416806200136957634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b600063ffffffff808316818516818304811182151516156200139b576200139b6200118a565b02949350505050565b60006001600160401b038281168482168083038211156200133a576200133a6200118a565b6125cf80620013d96000396000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063935f029e1161017b578063e0e2016d116100d8578063f45e65d81161008c578063f8c68de011610071578063f8c68de014610654578063fd32aa0f1461065c578063ffa1ad741461066457600080fd5b8063f45e65d814610637578063f68016b71461064057600080fd5b8063e81b2c6d116100bd578063e81b2c6d14610613578063f2b4e6171461061c578063f2fde38b1461062457600080fd5b8063e0e2016d14610603578063e2a3285c1461060b57600080fd5b8063c4e8ddfa1161012f578063cc731b0211610114578063cc731b02146104bf578063d8444715146105f3578063dac6e63a146105fb57600080fd5b8063c4e8ddfa146104a4578063c9b26f61146104ac57600080fd5b8063a711986911610160578063a711986914610481578063b40a817c14610489578063bc49ce5f1461049c57600080fd5b8063935f029e146104665780639b7d7f0a1461047957600080fd5b80634397dfef1161022957806354fd4d50116101dd5780635d73369c116101c25780635d73369c14610438578063715018a6146104405780638da5cb5b1461044857600080fd5b806354fd4d50146103e7578063550fcdc91461043057600080fd5b80634add321d1161020e5780634add321d146103a55780634c1e843d146103ad5780634f16540b146103c057600080fd5b80634397dfef1461036757806348cd4cb11461039d57600080fd5b80630c18c1621161028057806319f5cea81161026557806319f5cea81461033f5780631fd19ee114610347578063213268491461034f57600080fd5b80630c18c1621461032157806318d139181461032a57600080fd5b806306c92657146102b2578063078f29cf146102cd5780630a49cb03146102fa5780630ae14b1b14610302575b600080fd5b6102ba61066c565b6040519081526020015b60405180910390f35b6102d561069a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102c4565b6102d56106d3565b6317d784005b60405167ffffffffffffffff90911681526020016102c4565b6102ba60655481565b61033d61033836600461201e565b610703565b005b6102ba610717565b6102d5610742565b61035761076c565b60405190151581526020016102c4565b61036f6107ab565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260ff9091166020830152016102c4565b6102ba6107bf565b6103086107ef565b61033d6103bb366004612186565b610815565b6102ba7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b6104236040518060400160405280601881526020017f322e322e302b6d61782d6761732d6c696d69742d3430304d000000000000000081525081565b6040516102c49190612341565b610423610c20565b6102ba610c2a565b61033d610c55565b60335473ffffffffffffffffffffffffffffffffffffffff166102d5565b61033d610474366004612354565b610c69565b6102d5610c7f565b6102d5610caf565b61033d610497366004612376565b610cdf565b6102ba610cf0565b6102d5610d1b565b61033d6104ba366004612391565b610d4b565b6105836040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b6040516102c49190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b610423610d5c565b6102d5610d66565b6102ba610d96565b6102ba610dc1565b6102ba60675481565b6102d5610dec565b61033d61063236600461201e565b610e1c565b6102ba60665481565b6068546103089067ffffffffffffffff1681565b6102ba610ed0565b6102ba610efb565b6102ba600081565b61069760017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d6123d9565b81565b60006106ce6106ca60017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad63776123d9565b5490565b905090565b60006106ce6106ca60017f4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ad6123d9565b61070b611161565b610714816111e2565b50565b61069760017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a86123d9565b60006106ce7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c085490565b6000806107776107ab565b5073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141592915050565b6000806107b66110e4565b90939092509050565b60006106ce6106ca60017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06123d9565b6069546000906106ce9063ffffffff6a01000000000000000000008204811691166123f0565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094661129f565b61094f8a610e1c565b6109588761133e565b6109628989611366565b61096b866113f7565b6109947f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08869055565b6109c76109c260017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc5986123d9565b849055565b6109fb6109f560017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce95806376123d9565b83519055565b610a32610a2960017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a86123d9565b60208401519055565b610a69610a6060017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad63776123d9565b60408401519055565b610aa0610a9760017f52322a25d9f59ea17656545543306b7aef62bc0cc53a0e65ccfa0c75b97aa9076123d9565b60608401519055565b610ad7610ace60017f4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ad6123d9565b60808401519055565b610b0e610b0560017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d6123d9565b60a08401519055565b610b1661154d565b610b238260c001516115b5565b610b2c846118bf565b610b346107ef565b67ffffffffffffffff168667ffffffffffffffff161015610bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016108d7565b8015610c1457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b60606106ce611d33565b61069760017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce95806376123d9565b610c5d611161565b610c676000611df4565b565b610c71611161565b610c7b8282611366565b5050565b60006106ce6106ca60017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d6123d9565b60006106ce6106ca60017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce95806376123d9565b610ce7611161565b610714816113f7565b61069760017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc5986123d9565b60006106ce6106ca60017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a86123d9565b610d53611161565b6107148161133e565b60606106ce611e6b565b60006106ce6106ca60017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc5986123d9565b61069760017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06123d9565b61069760017f52322a25d9f59ea17656545543306b7aef62bc0cc53a0e65ccfa0c75b97aa9076123d9565b60006106ce6106ca60017f52322a25d9f59ea17656545543306b7aef62bc0cc53a0e65ccfa0c75b97aa9076123d9565b610e24611161565b73ffffffffffffffffffffffffffffffffffffffff8116610ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108d7565b61071481611df4565b61069760017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad63776123d9565b61069760017f4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ad6123d9565b9055565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000602082511115610fda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f476173506179696e67546f6b656e3a20737472696e672063616e6e6f7420626560448201527f2067726561746572207468616e2033322062797465730000000000000000000060648201526084016108d7565b610fe3826110bb565b92915050565b61104f61101760017f04adb1412b2ddc16fcc0d4538d5c8f07cf9c83abecc6b41f6f69037b708fbcec6123d9565b74ff000000000000000000000000000000000000000060a086901b1673ffffffffffffffffffffffffffffffffffffffff8716179055565b61108261107d60017f657c3582c29b3176614e3a33ddd1ec48352696a04e92b3c0566d72010fa8863d6123d9565b839055565b6110b56110b060017fa48b38a4b44951360fbdcbfaaeae5ed6ae92585412e9841b70ec72ed8cd057646123d9565b829055565b50505050565b8051602181106110d35763ec92f9a36000526004601cfd5b9081015160209190910360031b1b90565b600080806111166106ca60017f04adb1412b2ddc16fcc0d4538d5c8f07cf9c83abecc6b41f6f69037b708fbcec6123d9565b73ffffffffffffffffffffffffffffffffffffffff81169350905082611155575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee92601292509050565b60a081901c9150509091565b60335473ffffffffffffffffffffffffffffffffffffffff163314610c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d7565b61120b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08829055565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be836040516112939190612341565b60405180910390a35050565b600054610100900460ff16611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108d7565b610c67611f21565b6067819055604080516020808201849052825180830390910181529082019091526000611262565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be836040516113ea9190612341565b60405180910390a3505050565b6113ff6107ef565b67ffffffffffffffff168167ffffffffffffffff16101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016108d7565b6317d7840067ffffffffffffffff821611156114f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206869676860448201526064016108d7565b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040805160208082019390935281518082039093018352810190526002611262565b61157b6106ca60017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06123d9565b600003610c6757610c676115b060017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06123d9565b439055565b73ffffffffffffffffffffffffffffffffffffffff811615801590611604575073ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b8015611615575061161361076c565b155b1561071457601260ff168173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e919061241c565b60ff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f53797374656d436f6e6669673a2062616420646563696d616c73206f6620676160448201527f7320706179696e6720746f6b656e00000000000000000000000000000000000060648201526084016108d7565b60006117b98273ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561176e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117b49190810190612439565b610f46565b9050600061180b8373ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561176e573d6000803e3d6000fd5b905061181a8360128484610fe9565b6118226106d3565b6040517f71cfaa3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260126024830152604482018590526064820184905291909116906371cfaa3f90608401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b50505050505050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff16111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d61782062617365000000000000000000000060648201526084016108d7565b6001816040015160ff1611611a06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65206c6172676572207468616e2031000000000000000000000000000000000060648201526084016108d7565b6068546080820151825167ffffffffffffffff90921691611a279190612504565b63ffffffff161115611a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016108d7565b6000816020015160ff1611611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f742062652030000000000000000000000000000000000060648201526084016108d7565b8051602082015163ffffffff82169160ff90911690611b4c908290612523565b611b56919061256d565b63ffffffff1614611be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d697400000000000000000060648201526084016108d7565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b60606000611d3f6110e4565b5090507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601611db857505060408051808201909152600381527f4554480000000000000000000000000000000000000000000000000000000000602082015290565b611dee611de96106ca60017fa48b38a4b44951360fbdcbfaaeae5ed6ae92585412e9841b70ec72ed8cd057646123d9565b611fc1565b91505090565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000611e776110e4565b5090507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601611ef057505060408051808201909152600581527f4574686572000000000000000000000000000000000000000000000000000000602082015290565b611dee611de96106ca60017f657c3582c29b3176614e3a33ddd1ec48352696a04e92b3c0566d72010fa8863d6123d9565b600054610100900460ff16611fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108d7565b610c6733611df4565b60405160005b82811a15611fd757600101611fc7565b80825260208201838152600082820152505060408101604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461201957600080fd5b919050565b60006020828403121561203057600080fd5b61203982611ff5565b9392505050565b803567ffffffffffffffff8116811461201957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156120aa576120aa612058565b60405290565b803563ffffffff8116811461201957600080fd5b60ff8116811461071457600080fd5b600060e082840312156120e557600080fd5b60405160e0810181811067ffffffffffffffff8211171561210857612108612058565b60405290508061211783611ff5565b815261212560208401611ff5565b602082015261213660408401611ff5565b604082015261214760608401611ff5565b606082015261215860808401611ff5565b608082015261216960a08401611ff5565b60a082015261217a60c08401611ff5565b60c08201525092915050565b6000806000806000806000806000898b036102808112156121a657600080fd5b6121af8b611ff5565b995060208b0135985060408b0135975060608b013596506121d260808c01612040565b95506121e060a08c01611ff5565b945060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408201121561221257600080fd5b5061221b612087565b61222760c08c016120b0565b815260e08b0135612237816120c4565b60208201526101008b013561224b816120c4565b604082015261225d6101208c016120b0565b606082015261226f6101408c016120b0565b60808201526101608b01356fffffffffffffffffffffffffffffffff8116811461229857600080fd5b60a082015292506122ac6101808b01611ff5565b91506122bc8b6101a08c016120d3565b90509295985092959850929598565b60005b838110156122e65781810151838201526020016122ce565b838111156110b55750506000910152565b6000815180845261230f8160208601602086016122cb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061203960208301846122f7565b6000806040838503121561236757600080fd5b50508035926020909101359150565b60006020828403121561238857600080fd5b61203982612040565b6000602082840312156123a357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156123eb576123eb6123aa565b500390565b600067ffffffffffffffff808316818516808303821115612413576124136123aa565b01949350505050565b60006020828403121561242e57600080fd5b8151612039816120c4565b60006020828403121561244b57600080fd5b815167ffffffffffffffff8082111561246357600080fd5b818401915084601f83011261247757600080fd5b81518181111561248957612489612058565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156124cf576124cf612058565b816040528281528760208487010111156124e857600080fd5b6124f98360208301602088016122cb565b979650505050505050565b600063ffffffff808316818516808303821115612413576124136123aa565b600063ffffffff80841680612561577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600063ffffffff80831681851681830481118215151615612590576125906123aa565b0294935050505056fea2646970667358221220b5b29e3dd7d8670a5c761ca873b08b1eeffb8f97ecadad25c45f6d51616c20d564736f6c634300080f003304adb1412b2ddc16fcc0d4538d5c8f07cf9c83abecc6b41f6f69037b708fbcec53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77001d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ada11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a0", + "nonce": "0x6", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7c2057", + "logs": [ + { + "address": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000073565876170a336fa02fde34eed03e3121f70ba6" + ], + "data": "0x", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "logIndex": "0xba", + "removed": false + }, + { + "address": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x00000000000000000000000073565876170a336fa02fde34eed03e3121f70ba6", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "logIndex": "0xbb", + "removed": false + }, + { + "address": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "topics": [ + "0x1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "logIndex": "0xbc", + "removed": false + }, + { + "address": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "topics": [ + "0x1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "logIndex": "0xbd", + "removed": false + }, + { + "address": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "topics": [ + "0x1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "logIndex": "0xbe", + "removed": false + }, + { + "address": "0x3c768a33c473f664678b58c2253db096b41f7cfc", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "logIndex": "0xbf", + "removed": false + } + ], + "logsBloom": "0x05000000000010000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000008000000000000040000000000000000000000000000000000000001000000040000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000004000004040000000000000000000080000000020000000000000800000000000000000100000400000000000000000000000000000000000000000400000000000000000000040000000000000000000000000000000060000000200000000000000000000000000000000000008000002000008000000000", + "type": "0x2", + "transactionHash": "0xdeef691bdaf0b274a755fd6513667aa1a17a81117deb58dc1dd89d1df1b39dcc", + "transactionIndex": "0x1d", + "blockHash": "0x8dabd60a96c2c2ead95adddf41e3ded1fe95c0150c4ff5b5d90260a3e29c00fc", + "blockNumber": "0x14565e4", + "gasUsed": "0x241970", + "effectiveGasPrice": "0x53d0e8c67", + "from": "0x73565876170a336fa02fde34eed03e3121f70ba6", + "to": null, + "contractAddress": "0x3c768a33c473f664678b58c2253db096b41f7cfc" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1733268847, + "chain": 1, + "commit": "459ee11" +} \ No newline at end of file diff --git a/mainnet/2024-11-18-increase-max-gas-limit/script/DeploySystemConfig.s.sol b/mainnet/2024-11-18-increase-max-gas-limit/script/DeploySystemConfig.s.sol new file mode 100644 index 0000000..d847cad --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/script/DeploySystemConfig.s.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Script, console} from "forge-std/Script.sol"; + +import {SystemConfig} from "@eth-optimism-bedrock/src/L1/SystemConfig.sol"; + +contract DeploySystemConfig is Script { + function run() public { + vm.startBroadcast(); + SystemConfig systemConfigImpl = new SystemConfig(); + console.log("SystemConfig implementation deployed at: ", address(systemConfigImpl)); + vm.stopBroadcast(); + } +} diff --git a/mainnet/2024-11-18-increase-max-gas-limit/script/UpgradeSystemConfig.s.sol b/mainnet/2024-11-18-increase-max-gas-limit/script/UpgradeSystemConfig.s.sol new file mode 100644 index 0000000..2741cb9 --- /dev/null +++ b/mainnet/2024-11-18-increase-max-gas-limit/script/UpgradeSystemConfig.s.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Vm} from "forge-std/Vm.sol"; +import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol"; + +import {SystemConfig} from "@eth-optimism-bedrock/src/L1/SystemConfig.sol"; +import {MultisigBuilder, Simulation} from "@base-contracts/script/universal/MultisigBuilder.sol"; + +interface IProxyAdmin { + function upgrade(address _proxy, address _implementation) external; +} + +interface IProxy { + function implementation() external view returns (address); +} + +contract UpgradeSystemConfig is MultisigBuilder { + address internal SAFE_ADDRESS = vm.envAddress("SAFE_ADDRESS"); + address internal PROXY_ADMIN_ADDRESS = vm.envAddress("PROXY_ADMIN_ADDRESS"); + address internal SYSTEM_CONFIG_ADDRESS = vm.envAddress("SYSTEM_CONFIG_ADDRESS"); + address internal NEW_IMPLEMENTATION = vm.envAddress("NEW_IMPLEMENTATION"); + + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal override { + // NOTE: Bypass `proxyCallIfNotAdmin` modifier. + vm.prank(PROXY_ADMIN_ADDRESS); + require(IProxy(SYSTEM_CONFIG_ADDRESS).implementation() == NEW_IMPLEMENTATION); + } + + function _buildCalls() internal view override returns (IMulticall3.Call3[] memory) { + IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](3); + + calls[0] = IMulticall3.Call3({ + target: PROXY_ADMIN_ADDRESS, + allowFailure: false, + // NOTE: No need to call initialize as no storage would change (only changing `MAX_GAS_LIMIT` and `version`). + callData: abi.encodeCall(IProxyAdmin.upgrade, (SYSTEM_CONFIG_ADDRESS, NEW_IMPLEMENTATION)) + }); + + return calls; + } + + function _ownerSafe() internal view override returns (address) { + return SAFE_ADDRESS; + } +}