Commit 0ad342a3 authored by clabby's avatar clabby Committed by GitHub

feat(ctb): Support `OptimismPortal2` in kontrol tests (#10429)

* feat(ctb): Support `OptimismPortal2` in kontrol tests

Adds a second `DeploymentSummary` to `kontrol` for fault proofs, and
ports the existing `OptimismPortal` proofs with the `OptimismPortal2`.

* summary tests

* Update packages/contracts-bedrock/test/kontrol/README.md
Co-authored-by: default avatarcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* tests

* Update `check-snapshots`

* Update packages/contracts-bedrock/test/kontrol/README.md
Co-authored-by: default avatarMatt Solomon <matt@mattsolomon.dev>

* Separate snapshot gen

---------
Co-authored-by: default avatarcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: default avatarMatt Solomon <matt@mattsolomon.dev>
parent eb8fb142
...@@ -1643,7 +1643,7 @@ jobs: ...@@ -1643,7 +1643,7 @@ jobs:
command: make submodules command: make submodules
- check-changed: - check-changed:
no_go_deps: "true" no_go_deps: "true"
patterns: contracts-bedrock/test/kontrol,contracts-bedrock/src/L1/OptimismPortal\.sol,contracts-bedrock/src/L1/L1CrossDomainMessenger\.sol,contracts-bedrock/src/L1/L1ERC721Bridge\.sol,contracts-bedrock/src/L1/L1StandardBridge\.sol,contracts-bedrock/src/L1/ResourceMetering\.sol,contracts-bedrock/src/universal/StandardBridge\.sol,contracts-bedrock/src/universal/ERC721Bridge\.sol,contracts-bedrock/src/universal/CrossDomainMessenger\.sol patterns: contracts-bedrock/test/kontrol,contracts-bedrock/src/L1/OptimismPortal\.sol,contracts-bedrock/src/L1/OptimismPortal2\.sol,contracts-bedrock/src/L1/L1CrossDomainMessenger\.sol,contracts-bedrock/src/L1/L1ERC721Bridge\.sol,contracts-bedrock/src/L1/L1StandardBridge\.sol,contracts-bedrock/src/L1/ResourceMetering\.sol,contracts-bedrock/src/universal/StandardBridge\.sol,contracts-bedrock/src/universal/ERC721Bridge\.sol,contracts-bedrock/src/universal/CrossDomainMessenger\.sol
- setup_remote_docker: - setup_remote_docker:
docker_layer_caching: true docker_layer_caching: true
- run: - run:
......
...@@ -32,6 +32,8 @@ deployments/1337 ...@@ -32,6 +32,8 @@ deployments/1337
deployments/31337-deploy.json deployments/31337-deploy.json
deployments/kontrol.json deployments/kontrol.json
deployments/kontrol.jsonReversed deployments/kontrol.jsonReversed
deployments/kontrol-fp.json
deployments/kontrol-fp.jsonReversed
snapshots/state-diff/Kontrol-31337.json snapshots/state-diff/Kontrol-31337.json
# Devnet config which changes with each 'make devnet-up' # Devnet config which changes with each 'make devnet-up'
......
...@@ -23,7 +23,9 @@ ...@@ -23,7 +23,9 @@
"gas-snapshot:no-build": "forge snapshot --match-contract GasBenchMark", "gas-snapshot:no-build": "forge snapshot --match-contract GasBenchMark",
"statediff": "./scripts/statediff.sh && git diff --exit-code", "statediff": "./scripts/statediff.sh && git diff --exit-code",
"gas-snapshot": "pnpm build:go-ffi && pnpm gas-snapshot:no-build", "gas-snapshot": "pnpm build:go-ffi && pnpm gas-snapshot:no-build",
"snapshots": "forge build && npx tsx scripts/autogen/generate-snapshots.ts && ./test/kontrol/scripts/make-summary-deployment.sh", "kontrol-summary": "./test/kontrol/scripts/make-summary-deployment.sh",
"kontrol-summary-fp": "KONTROL_FP_DEPLOYMENT=true pnpm kontrol-summary",
"snapshots": "forge build && npx tsx scripts/autogen/generate-snapshots.ts && pnpm kontrol-summary && pnpm kontrol-summary-fp",
"snapshots:check": "./scripts/checks/check-snapshots.sh", "snapshots:check": "./scripts/checks/check-snapshots.sh",
"semver-lock": "forge script scripts/SemverLock.s.sol", "semver-lock": "forge script scripts/SemverLock.s.sol",
"validate-deploy-configs": "./scripts/checks/check-deploy-configs.sh", "validate-deploy-configs": "./scripts/checks/check-deploy-configs.sh",
......
...@@ -28,7 +28,7 @@ import "src/libraries/PortalErrors.sol"; ...@@ -28,7 +28,7 @@ import "src/libraries/PortalErrors.sol";
contract OptimismPortal2_Test is CommonTest { contract OptimismPortal2_Test is CommonTest {
address depositor; address depositor;
function setUp() public override { function setUp() public virtual override {
super.enableFaultProofs(); super.enableFaultProofs();
super.setUp(); super.setUp();
......
...@@ -67,6 +67,9 @@ First, generate a deployment summary contract from the deploy script in [`Kontro ...@@ -67,6 +67,9 @@ First, generate a deployment summary contract from the deploy script in [`Kontro
./test/kontrol/scripts/make-summary-deployment.sh [container|local|dev] ./test/kontrol/scripts/make-summary-deployment.sh [container|local|dev]
``` ```
> [!NOTE]
> To create a fault proof summary deployment, set `KONTROL_FP_DEPLOYMENT=true` and run the script `./test/kontrol/scripts/make-summary-deployment.sh`.
The [`make-summary-deployment.sh`](./scripts/make-summary-deployment.sh) supports the same execution modes as `run-kontrol.sh` below. The [`make-summary-deployment.sh`](./scripts/make-summary-deployment.sh) supports the same execution modes as `run-kontrol.sh` below.
[`KontrolDeployment.sol`](./deployment/KontrolDeployment.sol) contains the minimal deployment sequence required by the proofs. [`KontrolDeployment.sol`](./deployment/KontrolDeployment.sol) contains the minimal deployment sequence required by the proofs.
......
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
// Libraries
import { Constants } from "src/libraries/Constants.sol";
import { Predeploys } from "src/libraries/Predeploys.sol";
// Target contract dependencies
import { DisputeGameFactory } from "src/dispute/DisputeGameFactory.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
import { OptimismPortal2 } from "src/L1/OptimismPortal2.sol";
import { L1CrossDomainMessenger } from "src/L1/L1CrossDomainMessenger.sol";
import { DeploymentSummaryFaultProofs } from "../proofs/utils/DeploymentSummaryFaultProofs.sol";
import { L1ERC721Bridge } from "src/L1/L1ERC721Bridge.sol";
import { L1StandardBridge } from "src/L1/L1StandardBridge.sol";
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { LegacyMintableERC20 } from "src/legacy/LegacyMintableERC20.sol";
// Tests
import { L1CrossDomainMessenger_Test } from "test/L1/L1CrossDomainMessenger.t.sol";
import { OptimismPortal2_Test } from "test/L1/OptimismPortal2.t.sol";
import { L1ERC721Bridge_Test, TestERC721 } from "test/L1/L1ERC721Bridge.t.sol";
import {
L1StandardBridge_Getter_Test,
L1StandardBridge_Initialize_Test,
L1StandardBridge_Pause_Test
} from "test/L1/L1StandardBridge.t.sol";
/// @dev Contract testing the deployment summary correctness
contract DeploymentSummaryFaultProofs_TestOptimismPortal is DeploymentSummaryFaultProofs, OptimismPortal2_Test {
/// @notice super.setUp is not called on purpose
function setUp() public override {
// Recreate Deployment Summary state changes
DeploymentSummaryFaultProofs deploymentSummary = new DeploymentSummaryFaultProofs();
deploymentSummary.recreateDeployment();
// Set summary addresses
optimismPortal2 = OptimismPortal2(payable(optimismPortalProxyAddress));
superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
disputeGameFactory = DisputeGameFactory(disputeGameFactoryProxyAddress);
systemConfig = SystemConfig(systemConfigProxyAddress);
// Set up utilized addresses
depositor = makeAddr("depositor");
alice = makeAddr("alice");
bob = makeAddr("bob");
vm.deal(alice, 10000 ether);
vm.deal(bob, 10000 ether);
}
/// @dev Skips the first line of `super.test_constructor_succeeds` because
/// we're not exercising the `Deploy` logic in these tests. However,
/// the remaining assertions of the test are important to check
function test_constructor_succeeds() external view override {
// OptimismPortal opImpl = OptimismPortal(payable(deploy.mustGetAddress("OptimismPortal")));
OptimismPortal2 opImpl = OptimismPortal2(payable(optimismPortal2Address));
assertEq(address(opImpl.disputeGameFactory()), address(0));
assertEq(address(opImpl.systemConfig()), address(0));
assertEq(address(opImpl.superchainConfig()), address(0));
assertEq(opImpl.l2Sender(), Constants.DEFAULT_L2_SENDER);
}
/// @dev Skips the first line of `super.test_initialize_succeeds` because
/// we're not exercising the `Deploy` logic in these tests. However,
/// the remaining assertions of the test are important to check
function test_initialize_succeeds() external view override {
// address guardian = deploy.cfg().superchainConfigGuardian();
address guardian = superchainConfig.guardian();
assertEq(address(optimismPortal2.disputeGameFactory()), address(disputeGameFactory));
assertEq(address(optimismPortal2.systemConfig()), address(systemConfig));
assertEq(optimismPortal2.guardian(), guardian);
assertEq(address(optimismPortal2.superchainConfig()), address(superchainConfig));
assertEq(optimismPortal2.l2Sender(), Constants.DEFAULT_L2_SENDER);
assertEq(optimismPortal2.paused(), false);
}
}
...@@ -32,4 +32,46 @@ contract KontrolDeployment is Deploy { ...@@ -32,4 +32,46 @@ contract KontrolDeployment is Deploy {
initializeL1CrossDomainMessenger(); initializeL1CrossDomainMessenger();
initializeOptimismPortal(); initializeOptimismPortal();
} }
function runKontrolDeploymentFaultProofs() public stateDiff {
deploySafe("SystemOwnerSafe");
setupSuperchain();
// deployProxies();
deployERC1967Proxy("OptimismPortalProxy");
deployERC1967Proxy("DisputeGameFactoryProxy");
deployERC1967Proxy("AnchorStateRegistryProxy");
deployERC1967Proxy("DelayedWETHProxy");
deployERC1967Proxy("SystemConfigProxy");
deployL1StandardBridgeProxy();
deployL1CrossDomainMessengerProxy();
deployERC1967Proxy("L1ERC721BridgeProxy");
transferAddressManagerOwnership(); // to the ProxyAdmin
// deployImplementations();
deployOptimismPortal2();
deployL1CrossDomainMessenger();
deploySystemConfig();
deployL1StandardBridge();
deployL1ERC721Bridge();
deployDisputeGameFactory();
deployDelayedWETH();
deployPreimageOracle();
deployMips();
deployAnchorStateRegistry();
// initializeImplementations();
initializeSystemConfig();
initializeL1StandardBridge();
initializeL1ERC721Bridge();
initializeL1CrossDomainMessenger();
initializeDisputeGameFactory();
initializeDelayedWETH();
initializeAnchorStateRegistry();
initializeOptimismPortal2();
// Set dispute game implementations in DGF
setCannonFaultGameImplementation({ _allowUpgrade: false });
setPermissionedCannonFaultGameImplementation({ _allowUpgrade: false });
}
} }
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import { DeploymentSummaryFaultProofs } from "./utils/DeploymentSummaryFaultProofs.sol";
import { KontrolUtils } from "./utils/KontrolUtils.sol";
import { Types } from "src/libraries/Types.sol";
import {
IOptimismPortal as OptimismPortal,
ISuperchainConfig as SuperchainConfig
} from "./interfaces/KontrolInterfaces.sol";
import "src/libraries/PortalErrors.sol";
contract OptimismPortal2Kontrol is DeploymentSummaryFaultProofs, KontrolUtils {
OptimismPortal optimismPortal;
SuperchainConfig superchainConfig;
/// @dev Inlined setUp function for faster Kontrol performance
/// Tracking issue: https://github.com/runtimeverification/kontrol/issues/282
function setUpInlined() public {
optimismPortal = OptimismPortal(payable(optimismPortalProxyAddress));
superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
}
function prove_finalizeWithdrawalTransaction_paused(Types.WithdrawalTransaction calldata _tx) external {
setUpInlined();
// Pause Optimism Portal
vm.prank(optimismPortal.guardian());
superchainConfig.pause("identifier");
// We need to encode the error selector as bytes instead of bytes4 because the bytes4 signature
// it's not currently supported
// Tracking issue: https://github.com/runtimeverification/kontrol/issues/466
vm.expectRevert(abi.encodeWithSelector(CallPaused.selector));
optimismPortal.finalizeWithdrawalTransaction(_tx);
}
/// @dev Function containing the logic for prove_proveWithdrawalTransaction_paused
/// The reason for this is that we want the _withdrawalProof to range in size from
/// 0 to 10. These 11 proofs will exercise the same logic, which is contained in this function
function prove_proveWithdrawalTransaction_paused_internal(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] memory _withdrawalProof
)
internal
{
setUpInlined();
// Pause Optimism Portal
vm.prank(optimismPortal.guardian());
superchainConfig.pause("identifier");
// We need to encode the error selector as bytes instead of bytes4 because the bytes4 signature
// it's not currently supported
// Tracking issue: https://github.com/runtimeverification/kontrol/issues/466
vm.expectRevert(abi.encodeWithSelector(CallPaused.selector));
optimismPortal.proveWithdrawalTransaction(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 10,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused10(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 9,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused9(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 8,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused8(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 7,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused7(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 6,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused6(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 5,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused5(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 4,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused4(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 3,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused3(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 2,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused2(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
/// @custom:kontrol-array-length-equals _withdrawalProof: 1,
/// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
function prove_proveWithdrawalTransaction_paused1(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof,
bytes[] calldata _withdrawalProof
)
external
{
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
function prove_proveWithdrawalTransaction_paused0(
Types.WithdrawalTransaction memory _tx,
uint256 _l2OutputIndex,
Types.OutputRootProof calldata _outputRootProof
)
external
{
bytes[] memory _withdrawalProof = new bytes[](0);
prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
}
}
// SPDX-License-Identifier: MIT
// This file was autogenerated by running `kontrol load-state-diff`. Do not edit this file manually.
pragma solidity ^0.8.13;
import { Vm } from "forge-std/Vm.sol";
import { DeploymentSummaryFaultProofsCode } from "./DeploymentSummaryFaultProofsCode.sol";
contract DeploymentSummaryFaultProofs is DeploymentSummaryFaultProofsCode {
// Cheat code address, 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D
address private constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code"))));
Vm private constant vm = Vm(VM_ADDRESS);
address internal constant addressManagerAddress = 0xBb2180ebd78ce97360503434eD37fcf4a1Df61c3;
address internal constant anchorStateRegistryAddress = 0xF74482139D1564B826994875cF6632eB5b134b25;
address internal constant anchorStateRegistryProxyAddress = 0x1c23A6d89F95ef3148BCDA8E242cAb145bf9c0E4;
address internal constant delayedWETHAddress = 0x49BBFf1629824A1e7993Ab5c17AFa45D24AB28c9;
address internal constant delayedWETHProxyAddress = 0x0c8b5822b6e02CDa722174F19A1439A7495a3fA6;
address internal constant disputeGameFactoryAddress = 0x20B168142354Cee65a32f6D8cf3033E592299765;
address internal constant disputeGameFactoryProxyAddress = 0x8B71b41D4dBEb2b6821d44692d3fACAAf77480Bb;
address internal constant l1CrossDomainMessengerAddress = 0xf3E6CBcbF1AE12Fc13Bc8B14FA8A67CbE147fD99;
address internal constant l1CrossDomainMessengerProxyAddress = 0xc7B87b2b892EA5C3CfF47168881FE168C00377FB;
address internal constant l1ERC721BridgeAddress = 0x44637A4292E0CD2B17A55d5F6B2F05AFcAcD0586;
address internal constant l1ERC721BridgeProxyAddress = 0xD31598c909d9C935a9e35bA70d9a3DD47d4D5865;
address internal constant l1StandardBridgeAddress = 0x04c50B398Cd4182428E79f7186b7C919cF17e86F;
address internal constant l1StandardBridgeProxyAddress = 0xDeF3bca8c80064589E6787477FFa7Dd616B5574F;
address internal constant mipsAddress = 0x4edC7dF83e441Cc0399642Cef7Bd9437f021cE46;
address internal constant optimismPortal2Address = 0xfcbb237388CaF5b08175C9927a37aB6450acd535;
address internal constant optimismPortalProxyAddress = 0x978e3286EB805934215a88694d80b09aDed68D90;
address internal constant preimageOracleAddress = 0x3bd7E801E51d48c5d94Ea68e8B801DFFC275De75;
address internal constant protocolVersionsAddress = 0xfbfD64a6C0257F613feFCe050Aa30ecC3E3d7C3F;
address internal constant protocolVersionsProxyAddress = 0x416C42991d05b31E9A6dC209e91AD22b79D87Ae6;
address internal constant proxyAdminAddress = 0xDB8cFf278adCCF9E9b5da745B44E754fC4EE3C76;
address internal constant safeProxyFactoryAddress = 0x34A1D3fff3958843C43aD80F30b94c510645C316;
address internal constant safeSingletonAddress = 0x90193C961A926261B756D1E5bb255e67ff9498A1;
address internal constant superchainConfigAddress = 0x068E44eB31e111028c41598E4535be7468674D0A;
address internal constant superchainConfigProxyAddress = 0xDEb1E9a6Be7Baf84208BB6E10aC9F9bbE1D70809;
address internal constant systemConfigAddress = 0x809abd1c13738dE7a76C85839779FCaa59FA32CE;
address internal constant systemConfigProxyAddress = 0x20A42a5a785622c6Ba2576B2D6e924aA82BFA11D;
address internal constant systemOwnerSafeAddress = 0x7d039be7F9b5190147621b02e82B250e1D748e02;
address internal constant acc27Address = 0x12e721c390F5728200a26BBEf206A5F4F7E991f3;
address internal constant acc28Address = 0x2abb7CBB720020ee3C9ecf3915D14B6d1886A577;
function recreateDeployment() public {
bytes32 slot;
bytes32 value;
vm.etch(safeProxyFactoryAddress, safeProxyFactoryCode);
vm.etch(safeSingletonAddress, safeSingletonCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(safeSingletonAddress, slot, value);
vm.etch(systemOwnerSafeAddress, systemOwnerSafeCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"00000000000000000000000090193c961a926261b756d1e5bb255e67ff9498a1";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"e90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"d1b0d319c6526317dce66989b393dcfb4435c9a65e399a088b63bbf65d7aee32";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000003";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"cc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemOwnerSafeAddress, slot, value);
vm.etch(addressManagerAddress, addressManagerCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(addressManagerAddress, slot, value);
vm.etch(proxyAdminAddress, proxyAdminCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000003";
value = hex"000000000000000000000000bb2180ebd78ce97360503434ed37fcf4a1df61c3";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000007d039be7f9b5190147621b02e82b250e1d748e02";
vm.store(proxyAdminAddress, slot, value);
vm.etch(superchainConfigProxyAddress, superchainConfigProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(superchainConfigProxyAddress, slot, value);
vm.etch(superchainConfigAddress, superchainConfigCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(superchainConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(superchainConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(superchainConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000068e44eb31e111028c41598e4535be7468674d0a";
vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"d30e835d3f35624761057ff5b27d558f97bd5be034621e62240e5c0b784abe68";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(superchainConfigProxyAddress, slot, value);
vm.etch(protocolVersionsProxyAddress, protocolVersionsProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(protocolVersionsProxyAddress, slot, value);
vm.etch(protocolVersionsAddress, protocolVersionsCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c";
vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000002";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000fbfd64a6c0257f613fefce050aa30ecc3e3d7c3f";
vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(protocolVersionsProxyAddress, slot, value);
vm.etch(optimismPortalProxyAddress, optimismPortalProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(optimismPortalProxyAddress, slot, value);
vm.etch(disputeGameFactoryProxyAddress, disputeGameFactoryProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(disputeGameFactoryProxyAddress, slot, value);
vm.etch(anchorStateRegistryProxyAddress, anchorStateRegistryProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(anchorStateRegistryProxyAddress, slot, value);
vm.etch(delayedWETHProxyAddress, delayedWETHProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(delayedWETHProxyAddress, slot, value);
vm.etch(systemConfigProxyAddress, systemConfigProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(systemConfigProxyAddress, slot, value);
vm.etch(l1StandardBridgeProxyAddress, l1StandardBridgeProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(l1StandardBridgeProxyAddress, slot, value);
vm.etch(l1CrossDomainMessengerProxyAddress, l1CrossDomainMessengerProxyCode);
slot = hex"f6cecbacbfeb99e6ab0f02c22fd8a103f8837deb80af03d481ac5bc8d5475f58";
value = hex"000000000000000000000000bb2180ebd78ce97360503434ed37fcf4a1df61c3";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"ceb2ac3d439ba35adb9a3f2ba6c37d15a264e79156ee79334f5d4c00090812d2";
value = hex"4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000034";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
vm.etch(l1ERC721BridgeProxyAddress, l1ERC721BridgeProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(addressManagerAddress, slot, value);
vm.etch(optimismPortal2Address, optimismPortal2Code);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(optimismPortal2Address, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(optimismPortal2Address, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000032";
value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(optimismPortal2Address, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000003b";
value = hex"0000000000000000000000000000000000000000000000000000000100000000";
vm.store(optimismPortal2Address, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000001";
value = hex"000000000000000100000000000000000000000000000000000000003b9aca00";
vm.store(optimismPortal2Address, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(optimismPortal2Address, slot, value);
vm.etch(l1CrossDomainMessengerAddress, l1CrossDomainMessengerCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000010000000000000000000000000000000000000000";
vm.store(l1CrossDomainMessengerAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000001010000000000000000000000000000000000000000";
vm.store(l1CrossDomainMessengerAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000cc";
value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(l1CrossDomainMessengerAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000cf";
value = hex"0000000000000000000000004200000000000000000000000000000000000007";
vm.store(l1CrossDomainMessengerAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000010000000000000000000000000000000000000000";
vm.store(l1CrossDomainMessengerAddress, slot, value);
vm.etch(systemConfigAddress, systemConfigCode);
slot = hex"a11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb19f";
value = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000068";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000069";
value = hex"0000000000000000000000000000000000000000000000000000020100000001";
vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemConfigAddress, slot, value);
vm.etch(l1StandardBridgeAddress, l1StandardBridgeCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1StandardBridgeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(l1StandardBridgeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000004200000000000000000000000000000000000010";
vm.store(l1StandardBridgeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1StandardBridgeAddress, slot, value);
vm.etch(l1ERC721BridgeAddress, l1ERC721BridgeCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1ERC721BridgeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(l1ERC721BridgeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000002";
value = hex"0000000000000000000000004200000000000000000000000000000000000014";
vm.store(l1ERC721BridgeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1ERC721BridgeAddress, slot, value);
vm.etch(disputeGameFactoryAddress, disputeGameFactoryCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(disputeGameFactoryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(disputeGameFactoryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c";
vm.store(disputeGameFactoryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000000000000000000000000000000000000000000000";
vm.store(disputeGameFactoryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(disputeGameFactoryAddress, slot, value);
vm.etch(delayedWETHAddress, delayedWETHCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(delayedWETHAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(delayedWETHAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c";
vm.store(delayedWETHAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000000000000000000000000000000000000000000000";
vm.store(delayedWETHAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(delayedWETHAddress, slot, value);
vm.etch(preimageOracleAddress, preimageOracleCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d30";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000006";
value = hex"21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000007";
value = hex"e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a19344";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000008";
value = hex"0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000009";
value = hex"887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968";
vm.store(preimageOracleAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000000a";
value = hex"ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f83";
vm.store(preimageOracleAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000000b";
value = hex"9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af";
vm.store(preimageOracleAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000000c";
value = hex"cefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0";
vm.store(preimageOracleAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000000d";
value = hex"f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5";
vm.store(preimageOracleAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000000e";
value = hex"f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf892";
vm.store(preimageOracleAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000000f";
value = hex"3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000010";
value = hex"c1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000011";
value = hex"5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc";
vm.store(preimageOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000012";
value = hex"da7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d2";
vm.store(preimageOracleAddress, slot, value);
vm.etch(mipsAddress, mipsCode);
vm.etch(anchorStateRegistryAddress, anchorStateRegistryCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(anchorStateRegistryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(anchorStateRegistryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(anchorStateRegistryAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000003";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000809abd1c13738de7a76c85839779fcaa59fa32ce";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000067";
value = hex"0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000065";
value = hex"0000000000000000000000000000000000000000000000000000000000000834";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000066";
value = hex"00000000000000000000000000000000000000000000000000000000000f4240";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000068";
value = hex"00000000000000000000000000000000000000000000000000000000017d7840";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc597";
value = hex"000000000000000000000000ff00000000000000000000000000000000000000";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce9580636";
value = hex"000000000000000000000000c7b87b2b892ea5c3cff47168881fe168c00377fb";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a7";
value = hex"000000000000000000000000d31598c909d9c935a9e35ba70d9a3dd47d4d5865";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad6376";
value = hex"000000000000000000000000def3bca8c80064589e6787477ffa7dd616b5574f";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"52322a25d9f59ea17656545543306b7aef62bc0cc53a0e65ccfa0c75b97aa906";
value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ac";
value = hex"000000000000000000000000978e3286eb805934215a88694d80b09aded68d90";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"a11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb19f";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000069";
value = hex"0000ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000004";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"191cda7b5a8219e0cc3bb6c2b45be830e3ba520f78e119446a476c4147fcc284";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000005";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"00000000000000000000000004c50b398cd4182428e79f7186b7c919cf17e86f";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000032";
value = hex"000000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d70809";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"00000000000000000000000020a42a5a785622c6ba2576b2d6e924aa82bfa11d";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000003";
value = hex"000000000000000000000000c7b87b2b892ea5c3cff47168881fe168c00377fb";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000004200000000000000000000000000000000000010";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1StandardBridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000006";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"00000000000000000000000044637a4292e0cd2b17a55d5f6b2f05afcacd0586";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000032";
value = hex"000000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d70809";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000001";
value = hex"000000000000000000000000c7b87b2b892ea5c3cff47168881fe168c00377fb";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000002";
value = hex"0000000000000000000000004200000000000000000000000000000000000014";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(l1ERC721BridgeProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000007";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"f6cecbacbfeb99e6ab0f02c22fd8a103f8837deb80af03d481ac5bc8d5475f58";
value = hex"0000000000000000000000000000000000000000000000000000000000000002";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000008";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"63c92109b91ecf3318ee316da9fdb1378fd8d900f912b2029945ff91daa463bf";
value = hex"4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000034";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000009";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"515216935740e67dfdda5cf8e248ea32b3277787818ab59153061ac875c9385e";
value = hex"000000000000000000000000f3e6cbcbf1ae12fc13bc8b14fa8a67cbe147fd99";
vm.store(addressManagerAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000010000000000000000000000000000000000000000";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000001010000000000000000000000000000000000000000";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000fb";
value = hex"000000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d70809";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000fc";
value = hex"000000000000000000000000978e3286eb805934215a88694d80b09aded68d90";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000fd";
value = hex"00000000000000000000000020a42a5a785622c6ba2576b2d6e924aa82bfa11d";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000cc";
value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"00000000000000000000000000000000000000000000000000000000000000cf";
value = hex"0000000000000000000000004200000000000000000000000000000000000007";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000010000000000000000000000000000000000000000";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"000000000000000000000000000000000000000000000000000000000000000a";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"00000000000000000000000020b168142354cee65a32f6d8cf3033e592299765";
vm.store(disputeGameFactoryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(disputeGameFactoryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(disputeGameFactoryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(disputeGameFactoryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(disputeGameFactoryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(disputeGameFactoryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"000000000000000000000000000000000000000000000000000000000000000b";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"00000000000000000000000049bbff1629824a1e7993ab5c17afa45d24ab28c9";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000068";
value = hex"000000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d70809";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(delayedWETHProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"000000000000000000000000000000000000000000000000000000000000000c";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000f74482139d1564b826994875cf6632eb5b134b25";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49";
value = hex"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"cc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f";
value = hex"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"24a9e90595537a4321bf3a8fd43f02c179fe79a94dde54a8c1a057e2967a4d0b";
value = hex"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"d9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f";
value = hex"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(anchorStateRegistryProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"000000000000000000000000000000000000000000000000000000000000000d";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000fcbb237388caf5b08175c9927a37ab6450acd535";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000038";
value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000037";
value = hex"00000000000000000000000020a42a5a785622c6ba2576b2d6e924aa82bfa11d";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000035";
value = hex"0000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d7080900";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000032";
value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"000000000000000000000000000000000000000000000000000000000000003b";
value = hex"0000000000000000000000000000000000000000000000000000000100000000";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000001";
value = hex"000000000000000100000000000000000000000000000000000000003b9aca00";
vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(optimismPortalProxyAddress, slot, value);
vm.etch(acc27Address, acc27Code);
slot = hex"ffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b";
value = hex"00000000000000000000000012e721c390f5728200a26bbef206a5f4f7e991f3";
vm.store(disputeGameFactoryProxyAddress, slot, value);
vm.etch(acc28Address, acc28Code);
slot = hex"4d5a9bd2e41301728d41c8e705190becb4e74abe869f75bdb405b63716a35f9e";
value = hex"0000000000000000000000002abb7cbb720020ee3c9ecf3915d14b6d1886a577";
vm.store(disputeGameFactoryProxyAddress, slot, value);
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -37,7 +37,11 @@ usage_make_summary() { ...@@ -37,7 +37,11 @@ usage_make_summary() {
WORKSPACE_DIR=$( cd "$SCRIPT_HOME/../../.." >/dev/null 2>&1 && pwd ) WORKSPACE_DIR=$( cd "$SCRIPT_HOME/../../.." >/dev/null 2>&1 && pwd )
# Variables # Variables
export KONTROL_FP_DEPLOYMENT="${KONTROL_FP_DEPLOYMENT:-false}"
export CONTAINER_NAME=kontrol-tests export CONTAINER_NAME=kontrol-tests
if [ "$KONTROL_FP_DEPLOYMENT" = true ]; then
export CONTAINER_NAME=kontrol-fp-tests
fi
KONTROLRC=$(jq -r .kontrol < "$WORKSPACE_DIR/../../versions.json") KONTROLRC=$(jq -r .kontrol < "$WORKSPACE_DIR/../../versions.json")
export KONTROL_RELEASE=$KONTROLRC export KONTROL_RELEASE=$KONTROLRC
export LOCAL=false export LOCAL=false
......
...@@ -66,10 +66,15 @@ cp $DEPLOY_SCRIPT $DEPLOY_SCRIPT.bak ...@@ -66,10 +66,15 @@ cp $DEPLOY_SCRIPT $DEPLOY_SCRIPT.bak
awk '{gsub(/mustGetAddress/, "getAddress")}1' $DEPLOY_SCRIPT > temp && mv temp $DEPLOY_SCRIPT awk '{gsub(/mustGetAddress/, "getAddress")}1' $DEPLOY_SCRIPT > temp && mv temp $DEPLOY_SCRIPT
CONTRACT_NAMES=deployments/kontrol.json CONTRACT_NAMES=deployments/kontrol.json
SCRIPT_SIG="runKontrolDeployment()"
if [ "$KONTROL_FP_DEPLOYMENT" = true ]; then
CONTRACT_NAMES=deployments/kontrol-fp.json
SCRIPT_SIG="runKontrolDeploymentFaultProofs()"
fi
DEPLOY_CONFIG_PATH=deploy-config/hardhat.json \ DEPLOY_CONFIG_PATH=deploy-config/hardhat.json \
DEPLOYMENT_OUTFILE="$CONTRACT_NAMES" \ DEPLOYMENT_OUTFILE="$CONTRACT_NAMES" \
forge script -vvv test/kontrol/deployment/KontrolDeployment.sol:KontrolDeployment --sig 'runKontrolDeployment()' forge script -vvv test/kontrol/deployment/KontrolDeployment.sol:KontrolDeployment --sig $SCRIPT_SIG
echo "Created state diff json" echo "Created state diff json"
# Clean and store the state diff json in snapshots/state-diff/Kontrol-Deploy.json # Clean and store the state diff json in snapshots/state-diff/Kontrol-Deploy.json
...@@ -88,6 +93,10 @@ SUMMARY_DIR=test/kontrol/proofs/utils ...@@ -88,6 +93,10 @@ SUMMARY_DIR=test/kontrol/proofs/utils
SUMMARY_NAME=DeploymentSummary SUMMARY_NAME=DeploymentSummary
LICENSE=MIT LICENSE=MIT
if [ "$KONTROL_FP_DEPLOYMENT" = true ]; then
SUMMARY_NAME=DeploymentSummaryFaultProofs
fi
copy_to_docker # Copy the newly generated files to the docker container copy_to_docker # Copy the newly generated files to the docker container
run kontrol load-state-diff $SUMMARY_NAME snapshots/state-diff/$STATEDIFF --contract-names $CONTRACT_NAMES --output-dir $SUMMARY_DIR --license $LICENSE run kontrol load-state-diff $SUMMARY_NAME snapshots/state-diff/$STATEDIFF --contract-names $CONTRACT_NAMES --output-dir $SUMMARY_DIR --license $LICENSE
if [ "$LOCAL" = false ]; then if [ "$LOCAL" = false ]; then
......
...@@ -127,6 +127,9 @@ if [ "$SCRIPT_TESTS" == true ]; then ...@@ -127,6 +127,9 @@ if [ "$SCRIPT_TESTS" == true ]; then
test_list=( "OptimismPortalKontrol.prove_proveWithdrawalTransaction_paused0" \ test_list=( "OptimismPortalKontrol.prove_proveWithdrawalTransaction_paused0" \
"OptimismPortalKontrol.prove_proveWithdrawalTransaction_paused1(" \ "OptimismPortalKontrol.prove_proveWithdrawalTransaction_paused1(" \
"OptimismPortalKontrol.prove_finalizeWithdrawalTransaction_paused" \ "OptimismPortalKontrol.prove_finalizeWithdrawalTransaction_paused" \
"OptimismPortal2Kontrol.prove_proveWithdrawalTransaction_paused0" \
"OptimismPortal2Kontrol.prove_proveWithdrawalTransaction_paused1(" \
"OptimismPortal2Kontrol.prove_finalizeWithdrawalTransaction_paused" \
"L1StandardBridgeKontrol.prove_finalizeBridgeERC20_paused" \ "L1StandardBridgeKontrol.prove_finalizeBridgeERC20_paused" \
"L1StandardBridgeKontrol.prove_finalizeBridgeETH_paused" \ "L1StandardBridgeKontrol.prove_finalizeBridgeETH_paused" \
"L1ERC721BridgeKontrol.prove_finalizeBridgeERC721_paused" \ "L1ERC721BridgeKontrol.prove_finalizeBridgeERC721_paused" \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment