diff --git a/src/tasks/sep/062-betanet-rev-share-v2/README.md b/src/tasks/sep/062-betanet-rev-share-v2/README.md index 3b8b53bfc..a6683d94a 100644 --- a/src/tasks/sep/062-betanet-rev-share-v2/README.md +++ b/src/tasks/sep/062-betanet-rev-share-v2/README.md @@ -1,6 +1,6 @@ # 062 betanet-rev-share: RevShare Upgrade and Setup for Betanet -Status: [READY TO SIGN] +Status: [EXECUTED](https://sepolia.etherscan.io/tx/0x22e77d96df50587a792ea60f17afe6f8be485ac4538b351c65e450a2a2e5d57a) ## Objective diff --git a/src/tasks/sep/063-U18-rev-share-permissioned-betanet/.env b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/.env new file mode 100644 index 000000000..02789f94b --- /dev/null +++ b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/.env @@ -0,0 +1 @@ +TENDERLY_GAS=15000000 \ No newline at end of file diff --git a/src/tasks/sep/063-U18-rev-share-permissioned-betanet/README.md b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/README.md new file mode 100644 index 000000000..18573effb --- /dev/null +++ b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/README.md @@ -0,0 +1,22 @@ +# 063-U18-rev-share-permissioned-betanet + +Status: [READY TO SIGN] + +## Objective + +Updates RevShare Permissioned Betanet (revshare-beta-1) to U18. + +## Simulation & Signing + +```bash +cd src/tasks/sep/063-U18-rev-share-permissioned-betanet + +# Testing +just simulate-stack sep 063-U18-rev-share-permissioned-betanet + +# Commands to execute +just --dotenv-path $(pwd)/.env simulate +USE_KEYSTORE=1 just --dotenv-path $(pwd)/.env sign +# or USE_KEYSTORE=1 just sign-stack sep 063-U18-rev-share-permissioned-betanet +SIGNATURES=0x just execute +``` diff --git a/src/tasks/sep/063-U18-rev-share-permissioned-betanet/VALIDATION.md b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/VALIDATION.md new file mode 100644 index 000000000..1ec6ad825 --- /dev/null +++ b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/VALIDATION.md @@ -0,0 +1,19 @@ +## Expected Domain and Message Hashes + +First, we need to validate the domain and message hashes. These values should match both the values on your ledger and +the values printed to the terminal when you run the task. + +> [!CAUTION] +> +> Before signing, ensure the below hashes match what is on your ledger. +> +> ### Betanet 1/1 Safe (`0xe934Dc97E347C6aCef74364B50125bb8689c40ff`) +> +> - Domain Hash: `0x07e03428d7125835eca12b6dd1a02903029b456da3a091ecd66fda859fbce61e` +> - Message Hash: `0xfe77a44c0e5184419bbfc8fe268e6cab595146fb802948580493a3f84fd91266` + +## Task Calldata + +``` +0x82ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f0a2e224519e876979ea6b2cd15ef5cc3d6703bd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4cbeda5a700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000421b686408b5e5d87834868290ec9b4a2fad6f2203218cc6ba6287c4a55d57c62fd4e2e1cee9fb1f80f8b427596670d59a25db8d037b5e42b4c540f321b326e72b1cf8a2502ae8bc8a3d32d75866b1a84996166700000000000000000000000000000000000000000000000000000000 +``` diff --git a/src/tasks/sep/063-U18-rev-share-permissioned-betanet/addresses.json b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/addresses.json new file mode 100644 index 000000000..c87963358 --- /dev/null +++ b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/addresses.json @@ -0,0 +1,18 @@ +{ + "420120034": { + "ProxyAdminOwner": "0xe934Dc97E347C6aCef74364B50125bb8689c40ff", + "SystemConfigProxy": "0x421b686408b5e5d87834868290ec9b4a2fad6f22", + "L1CrossDomainMessengerProxy": "0xf116b86545360fcf0f8f931ec4543af6d082a6e7", + "L1StandardBridgeProxy": "0xeb2a61a4b3ce24b5565f39ab6a558b9ec5989b7e", + "OptimismPortalProxy": "0xa68b3c6c2147caf13a760a4ec79855b0d859d9e5", + "DisputeGameFactoryProxy": "0x100e147e79eb824f53fba8eaba36f6267637cd98", + "DelayedWETHProxy": "0x258a2eb6e1b186fad8fb389f0533e1d9b7582839", + "PermissionedDelayedWETHProxy": "0x258a2eb6e1b186fad8fb389f0533e1d9b7582839", + "AnchorStateRegistryProxy": "0xbf3e146ae42f3b25243b7064b3ac6fa10be35523", + "AddressManager": "0xeb6e8b25b6c513f0c364520fb440a65ad7227794", + "L1ERC721BridgeProxy": "0x440de09dec54e1e8c3ec8344fe30fda5e9704f01", + "Proposer": "0x87be7931c05b3f0b780557af07fbbbda741a0075", + "Challenger": "0x94e6f45d675105507f3297fe64fe6cb59eaaf820", + "OptimismMintableERC20FactoryProxy": "0xa7f819eaabc0852a5425fdf804da52ffb5d838c9" + } +} diff --git a/src/tasks/sep/063-U18-rev-share-permissioned-betanet/config.toml b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/config.toml new file mode 100644 index 000000000..5fbecfe34 --- /dev/null +++ b/src/tasks/sep/063-U18-rev-share-permissioned-betanet/config.toml @@ -0,0 +1,29 @@ +# RevShare Betanet on U18 +l2chains = [ + {name = "revshare-beta-1", chainId = 420120034} +] + +# Addresses for this task can be found here: https://github.com/ethereum-optimism/devnets/tree/main/betanets/revshare-beta + +fallbackAddressesJsonPath = "src/tasks/sep/063-U18-rev-share-permissioned-betanet/addresses.json" + +templateName = "OPCMUpgradeV600" + +[[opcmUpgrades]] +chainId = 420120034 +# U18 prestates for betanet: https://github.com/ethereum-optimism/devnets/blob/main/betanets/revshare-beta/op-program/prestates-revshare-1-after-update.json +cannonPrestate = "0x03218cc6ba6287c4a55d57c62fd4e2e1cee9fb1f80f8b427596670d59a25db8d" +cannonKonaPrestate = "0x037b5e42b4c540f321b326e72b1cf8a2502ae8bc8a3d32d75866b1a849961667" +expectedValidationErrors = "OVERRIDES-L1PAOMULTISIG,OVERRIDES-CHALLENGER,SYSCON-130,PLDG-10,CKDG-10" +# OVERRIDES-L1PAOMULTISIG,OVERRIDES-CHALLENGER: these are expected as they are not the standard OP Sepolia ones +# SYSCON-130: this is expected as the SystemConfig proxyAdmin on betanets is not the standard OP Sepolia one +# PLDG-10: There are no permissionless dispute games on Soneium - expected +# CKDG-10: There are no permissionless dispute games on Soneium - expected + +[addresses] +OPCM = "0xf0a2e224519e876979ea6b2cd15ef5cc3d6703bd" # v600 OPCM source: https://github.com/ethereum-optimism/superchain-registry/blob/c84ed822ae5a65500d8c0e323460fa688cfcca22/validation/standard/standard-versions-sepolia.toml#L23C56-L23C98 + +[stateOverrides] +0xe934Dc97E347C6aCef74364B50125bb8689c40ff = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 69} +] diff --git a/src/tasks/sep/064-permissioned-betanet-rev-share/.env b/src/tasks/sep/064-permissioned-betanet-rev-share/.env new file mode 100644 index 000000000..fe8970358 --- /dev/null +++ b/src/tasks/sep/064-permissioned-betanet-rev-share/.env @@ -0,0 +1 @@ +TENDERLY_GAS=16700000 diff --git a/src/tasks/sep/064-permissioned-betanet-rev-share/README.md b/src/tasks/sep/064-permissioned-betanet-rev-share/README.md new file mode 100644 index 000000000..af562ea31 --- /dev/null +++ b/src/tasks/sep/064-permissioned-betanet-rev-share/README.md @@ -0,0 +1,38 @@ +# 064 permissioned-betanet-rev-share: RevShare Upgrade and Setup for Betanet + +Status: [READY TO SIGN] + +## Objective + +Upgrade proxies and setup RevShare contracts for the RevShare Betanet chain. This task: + +1. Deploys all needed contract implementations: + - FeeVaults + - FeeSplitter + - L1Withdrawer (pointing to the FeesDepositor on L1) + - RevShareCalculator (pointing to the L1Withdrawer and the ChainFeesRecipient) +2. Upgrades the fee vault proxy implementations (SequencerFeeVault, BaseFeeVault, L1FeeVault, OperatorFeeVault) on the Betanet L2 +3. Sets FeeSplitter predeploy to point to the new FeeSplitter implementation and initializes it with the RevShareCalculator address + +Target chain: + +- revshare-beta-1 (chainId: 420120034) + +## Simulation & Signing + +Simulation commands for each safe: + +```bash +# For stacked simulation (recommended for validation): +just simulate-stack sep 064-permissioned-betanet-rev-share + +# For individual simulation: +cd src/tasks/sep/064-permissioned-betanet-rev-share +SIMULATE_WITHOUT_LEDGER=1 just --dotenv-path "$(pwd)"/.env --justfile ../../../justfile simulate + +# Commands to execute +just --dotenv-path $(pwd)/.env simulate +USE_KEYSTORE=1 just --dotenv-path $(pwd)/.env sign +# or USE_KEYSTORE=1 just sign-stack sep 064-permissioned-betanet-rev-share +SIGNATURES=0x just execute +``` diff --git a/src/tasks/sep/064-permissioned-betanet-rev-share/VALIDATION.md b/src/tasks/sep/064-permissioned-betanet-rev-share/VALIDATION.md new file mode 100644 index 000000000..fed016022 --- /dev/null +++ b/src/tasks/sep/064-permissioned-betanet-rev-share/VALIDATION.md @@ -0,0 +1,19 @@ +## Expected Domain and Message Hashes + +First, we need to validate the domain and message hashes. These values should match both the values on your ledger and +the values printed to the terminal when you run the task. + +> [!CAUTION] +> +> Before signing, ensure the below hashes match what is on your ledger. +> +> ### Betanet 1/1 Safe (`0xe934Dc97E347C6aCef74364B50125bb8689c40ff`) +> +> - Domain Hash: `0x07e03428d7125835eca12b6dd1a02903029b456da3a091ecd66fda859fbce61e` +> - Message Hash: `0xbff661d2fa8f5737db0bf2165aa9f44ffa0d8a04dbc2c0f873fef922a2557e2d` + +## Task Calldata + +``` +0x82ad56cb00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000071241bbae674967dd523e621c272ea32cf33119a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e41a80dc3800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a68b3c6c2147caf13a760a4ec79855b0d859d9e50000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000000ed9b99a703bad32ac96fddc313c0652e379251fd00000000000000000000000000000000000000000000000000000000000c3500000000000000000000000000ee7d049e5f573a08bb5a358fcefb3d4af992fdcb00000000000000000000000000000000000000000000000000000000 +``` diff --git a/src/tasks/sep/064-permissioned-betanet-rev-share/addresses.json b/src/tasks/sep/064-permissioned-betanet-rev-share/addresses.json new file mode 100644 index 000000000..6df7fbc32 --- /dev/null +++ b/src/tasks/sep/064-permissioned-betanet-rev-share/addresses.json @@ -0,0 +1,5 @@ +{ + "420120034": { + "ProxyAdminOwner": "0xe934Dc97E347C6aCef74364B50125bb8689c40ff" + } +} diff --git a/src/tasks/sep/064-permissioned-betanet-rev-share/config.toml b/src/tasks/sep/064-permissioned-betanet-rev-share/config.toml new file mode 100644 index 000000000..7a9a16cd5 --- /dev/null +++ b/src/tasks/sep/064-permissioned-betanet-rev-share/config.toml @@ -0,0 +1,36 @@ +# RevShare Upgrade And Setup Configuration + +templateName = "RevShareUpgradeAndSetup" + +# L2 chains to target +l2chains = [{name = "revshare-beta-1", chainId = 420120034}] + +safeAddress = "ProxyAdminOwner" + +# RevShareContractsUpgrader https://sepolia.etherscan.io/address/0x71241bbae674967dd523e621c272ea32cf33119a +revShareUpgrader = "0x71241bbae674967dd523e621c272ea32cf33119a" + +# RevShare configurations (one per chain) +# Betanet Portal in Sepolia https://sepolia.etherscan.io/address/0xa68B3c6C2147Caf13a760a4eC79855B0d859D9e5 +# Source https://github.com/ethereum-optimism/devnets/blob/main/betanets/revshare-beta/op-deployer-revshare-1/state.json#L101 +portals = ["0xa68B3c6C2147Caf13a760a4eC79855B0d859D9e5"] + +# SequencerFeeVault.RECIPIENT() in the betanet. +chainFeesRecipients = ["0xee7d049e5f573a08bb5a358fcefb3d4af992fdcb"] + +# 2 ether +l1WithdrawerMinWithdrawalAmounts = [2000000000000000000] + +# FeesDepositor https://sepolia.etherscan.io/address/0xed9B99a703BaD32AC96FDdc313c0652e379251Fd +l1WithdrawerRecipients = ["0xed9B99a703BaD32AC96FDdc313c0652e379251Fd"] +l1WithdrawerGasLimits = [800000] + +fallbackAddressesJsonPath = "src/tasks/sep/064-permissioned-betanet-rev-share/addresses.json" + +[addresses] +ProxyAdminOwner = "0xe934Dc97E347C6aCef74364B50125bb8689c40ff" + +[stateOverrides] +0xe934Dc97E347C6aCef74364B50125bb8689c40ff = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 70} +]