-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* feat: Devnet 0 FP upgrade #2 * Sepolia Devnet 0 Fjord upgrade #3 * Update tasks/sep-dev-0/003-fp-fjord/README.md Co-authored-by: Matt Solomon <matt@mattsolomon.dev> --------- Co-authored-by: clabby <ben@clab.by> Co-authored-by: Matt Solomon <matt@mattsolomon.dev>
- Loading branch information
1 parent
6f63211
commit afeed9f
Showing
4 changed files
with
168 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
ETH_RPC_URL="https://ethereum-sepolia.publicnode.com" | ||
SUPERCHAIN_CONFIG_ADDR=0xC2Be75506d5724086DEB7245bd260Cc9753911Be | ||
OWNER_SAFE=0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9 | ||
SAFE_NONCE="" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Devnet FP Upgrade - Fjord | ||
|
||
Status: [EXECUTED](https://sepolia.etherscan.io/tx/0x7eb73a9e5eaa60aed79c09406fe5d9a890c7b7ca01839cb729e8c29cb700d161) | ||
|
||
## Objective | ||
|
||
Upgrades the deployed system on `sepolia-devnet-0` to use the absolute prestate for the `op-program/v1.1.0` release. | ||
The op-program release is fjord compatible. | ||
|
||
The new dispute game implementation have been deployed against the latest deploy-config changes. This includes changes to the: | ||
- absolute prestate | ||
- clock extension period | ||
- max clock duration | ||
|
||
See https://github.com/ethereum-optimism/optimism/pull/10639 for the details. | ||
|
||
|
||
## Pre-deployments | ||
|
||
The `FaultDisputeGame` has been deployed at [`0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B`](https://sepolia.etherscan.io/address/0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B). | ||
|
||
The `PermissionedDisputeGame` has been deployed at [`0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC`](https://sepolia.etherscan.io/address/0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC). | ||
|
||
Both contracts have been configured using the aforementioned deploy-config. | ||
|
||
|
||
## State Validation | ||
|
||
Please see the instructions for [validation](./VALIDATION.md). | ||
|
||
|
||
## Execution | ||
|
||
# Reset DisputeGameFactory game implementations | ||
Resets the FaultDisputeGame and PermissionedDisputeGame implementations in the DGF | ||
|
||
The batch will be executed on chain ID `11155111`, and contains `2` transactions. | ||
|
||
## Tx #1: Reset the FaultDisputeGame implementation in DGF | ||
|
||
|
||
**Function Signature:** `setImplementation(uint32,address)` | ||
|
||
**To:** `0x2419423C72998eb1c6c15A235de2f112f8E38efF` | ||
|
||
**Value:** `0 WEI` | ||
|
||
**Raw Input Data:** `0x14f6b1a300000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cdb0e38bc990c07eada1376248bb2a405ae3b9b` | ||
|
||
### Inputs | ||
**_gameType:** `0` | ||
|
||
**_impl:** `0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B` | ||
|
||
|
||
## Tx #2: Reset the PermissionedDisputeGame implementation in DGF | ||
|
||
|
||
**Function Signature:** `setImplementation(uint32,address)` | ||
|
||
**To:** `0x2419423C72998eb1c6c15A235de2f112f8E38efF` | ||
|
||
**Value:** `0 WEI` | ||
|
||
**Raw Input Data:** `0x14f6b1a30000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c06b6a93c4b8ef23e1fb535bb2dd80239ca433ac` | ||
|
||
### Inputs | ||
**_gameType:** `1` | ||
|
||
**_impl:** `0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC` | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Validation | ||
|
||
This document can be used to validate the state diff resulting from the execution of the upgrade | ||
transaction. | ||
|
||
For each contract listed in the state diff, please verify that no contracts or state changes shown in the Tenderly diff are missing from this document. Additionally, please verify that for each contract: | ||
|
||
- The following state changes (and none others) are made to that contract. This validates that no unexpected state changes occur. | ||
- All addresses (in section headers and storage values) match the provided name, using the Etherscan and Superchain Registry links provided. This validates the bytecode deployed at the addresses contains the correct logic. | ||
- All key values match the semantic meaning provided, which can be validated using the storage layout links provided. | ||
|
||
## State Changes | ||
|
||
The only state changes should be made to the `DisputeGameFactoryProxy` game type implementations. | ||
|
||
### `0x2419423c72998eb1c6c15a235de2f112f8e38eff` (`DisputeGameFactoryProxy`) | ||
|
||
- **Key**: `0x4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e` | ||
**Before**: `0x0000000000000000000000007f70047613a6f012a65347fd40c135cc9db5ad09` | ||
**After**: `0x000000000000000000000000c06b6a93c4b8ef23e1fb535bb2dd80239ca433ac` | ||
**Meaning**: Updates the PERMISSIONED_CANNON game type implementation. Verify that the new implementation is set using `cast call 0x2419423c72998eb1c6c15a235de2f112f8e38eff gameImpls(uint32)(address) 1`. | ||
|
||
- **Key**: `0xffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b` | ||
**Before**: `0x000000000000000000000000bb98224c58250577a94624a419697df1be128568` | ||
**After**: `0x0000000000000000000000003cdb0e38bc990c07eada1376248bb2a405ae3b9b` | ||
**Meaning**: Updates the CANNON game type implementation. Verify that the new implementation is set using `cast call 0x2419423c72998eb1c6c15a235de2f112f8e38eff gameImpls(uint32)(address) 0`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
{ | ||
"chainId": 11155111, | ||
"metadata": { | ||
"name": "Reset DisputeGameFactory game implementations", | ||
"description": "Resets the FaultDisputeGame and PermissionedDisputeGame implementations in the DGF" | ||
}, | ||
"transactions": [ | ||
{ | ||
"metadata": { | ||
"name": "Reset the FaultDisputeGame implementation in DGF", | ||
"description": "" | ||
}, | ||
"to": "0x2419423c72998eb1c6c15a235de2f112f8e38eff", | ||
"value": "0x0", | ||
"data": "0x14f6b1a300000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cdb0e38bc990c07eada1376248bb2a405ae3b9b", | ||
"contractMethod": { | ||
"type": "function", | ||
"name": "setImplementation", | ||
"inputs": [ | ||
{ | ||
"name": "_gameType", | ||
"type": "uint32" | ||
}, | ||
{ | ||
"name": "_impl", | ||
"type": "address" | ||
} | ||
], | ||
"outputs": [], | ||
"stateMutability": "nonpayable" | ||
}, | ||
"contractInputsValues": { | ||
"_gameType": "0", | ||
"_impl": "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B" | ||
} | ||
}, | ||
{ | ||
"metadata": { | ||
"name": "Reset the PermissionedDisputeGame implementation in DGF", | ||
"description": "" | ||
}, | ||
"to": "0x2419423c72998eb1c6c15a235de2f112f8e38eff", | ||
"value": "0x0", | ||
"data": "0x14f6b1a30000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c06b6a93c4b8ef23e1fb535bb2dd80239ca433ac", | ||
"contractMethod": { | ||
"type": "function", | ||
"name": "setImplementation", | ||
"inputs": [ | ||
{ | ||
"name": "_gameType", | ||
"type": "uint32" | ||
}, | ||
{ | ||
"name": "_impl", | ||
"type": "address" | ||
} | ||
], | ||
"outputs": [], | ||
"stateMutability": "nonpayable" | ||
}, | ||
"contractInputsValues": { | ||
"_gameType": "1", | ||
"_impl": "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC" | ||
} | ||
} | ||
] | ||
} |