Commit 34592a1e authored by Juan C's avatar Juan C Committed by GitHub

Add Kontrol proof `prove_relayMessage_paused` (#9156)

* `KontrolDeployment`: deploy `L1CrossDomainMessenger`

* KontrolInterfaces: add `IL1CrossDomainMessenger`

* Add deployment summary tests for `L1CrossDomainMessenger`

* Add `prove_relayMessage_paused`

* `run-kontrol.sh`: add `prove_relayMessage_paused`

* `run-kontrol.sh`: correct help message to install right kontrol version

* Bump Kontrol version from `0.1.121` to `0.1.127`

* `forge fmt`

* Update `Kontrol-Deploy.json`

* `README.md`: Add `L1CrossDomainMessenger.k.sol` documentation

* Fix typos

* Make autogenerated address names start with lowercase
parent c22f57ce
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -25,7 +25,9 @@ contract L1CrossDomainMessenger_Test is Bridge_Initializer { ...@@ -25,7 +25,9 @@ contract L1CrossDomainMessenger_Test is Bridge_Initializer {
uint256 constant senderSlotIndex = 50; uint256 constant senderSlotIndex = 50;
/// @dev Tests that the implementation is initialized correctly. /// @dev Tests that the implementation is initialized correctly.
function test_constructor_succeeds() external { /// @notice Marked virtual to be overridden in
/// test/kontrol/deployment/DeploymentSummary.t.sol
function test_constructor_succeeds() external virtual {
L1CrossDomainMessenger impl = L1CrossDomainMessenger(deploy.mustGetAddress("L1CrossDomainMessenger")); L1CrossDomainMessenger impl = L1CrossDomainMessenger(deploy.mustGetAddress("L1CrossDomainMessenger"));
assertEq(address(impl.superchainConfig()), address(0)); assertEq(address(impl.superchainConfig()), address(0));
assertEq(address(impl.PORTAL()), address(0)); assertEq(address(impl.PORTAL()), address(0));
...@@ -110,7 +112,9 @@ contract L1CrossDomainMessenger_Test is Bridge_Initializer { ...@@ -110,7 +112,9 @@ contract L1CrossDomainMessenger_Test is Bridge_Initializer {
/// @dev Tests that the relayMessage function reverts when /// @dev Tests that the relayMessage function reverts when
/// the message version is not 0 or 1. /// the message version is not 0 or 1.
function test_relayMessage_v2_reverts() external { /// @notice Marked virtual to be overridden in
/// test/kontrol/deployment/DeploymentSummary.t.sol
function test_relayMessage_v2_reverts() external virtual {
address target = address(0xabcd); address target = address(0xabcd);
address sender = Predeploys.L2_CROSS_DOMAIN_MESSENGER; address sender = Predeploys.L2_CROSS_DOMAIN_MESSENGER;
......
...@@ -15,6 +15,7 @@ test/kontrol ...@@ -15,6 +15,7 @@ test/kontrol
├── proofs ├── proofs
│   ├── interfaces │   ├── interfaces
│   │   └── KontrolInterfaces.sol │   │   └── KontrolInterfaces.sol
│   ├── L1CrossDomainMessenger.k.sol
│   ├── OptimismPortal.k.sol │   ├── OptimismPortal.k.sol
│   └── utils │   └── utils
│   ├── DeploymentSummaryCode.sol │   ├── DeploymentSummaryCode.sol
...@@ -43,9 +44,10 @@ test/kontrol ...@@ -43,9 +44,10 @@ test/kontrol
### [`proofs`](./proofs) folder ### [`proofs`](./proofs) folder
- [`OptimismPortal.k.sol`](./proofs/OptimismPortal.k.sol): Symbolic property tests - [`L1CrossDomainMessenger.k.sol`](./proofs/L1CrossDomainMessenger.k.sol): Symbolic property tests for [`L1CrossDomainMessenger`](../../src/L1/L1CrossDomainMessenger.sol)
- [`OptimismPortal.k.sol`](./proofs/OptimismPortal.k.sol): Symbolic property tests for [`OptimismPortal`](../../src/L1/OptimismPortal.sol)
- [`interfaces`](./proofs/interfaces): Files with the signature of the functions involved in the verification effort - [`interfaces`](./proofs/interfaces): Files with the signature of the functions involved in the verification effort
- [`utils`](./proofs/utils): Dependencies for `OptimismPortal.k.sol`, including the summary contracts - [`utils`](./proofs/utils): Proof dependencies, including the summary contracts
### [`scripts`](./scripts) folder ### [`scripts`](./scripts) folder
......
...@@ -3,17 +3,20 @@ pragma solidity 0.8.15; ...@@ -3,17 +3,20 @@ pragma solidity 0.8.15;
// Libraries // Libraries
import { Constants } from "src/libraries/Constants.sol"; import { Constants } from "src/libraries/Constants.sol";
import { Predeploys } from "src/libraries/Predeploys.sol";
// Target contract dependencies // Target contract dependencies
import { L2OutputOracle } from "src/L1/L2OutputOracle.sol"; import { L2OutputOracle } from "src/L1/L2OutputOracle.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol"; import { SystemConfig } from "src/L1/SystemConfig.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol"; import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
import { OptimismPortal } from "src/L1/OptimismPortal.sol"; import { OptimismPortal } from "src/L1/OptimismPortal.sol";
import { L1CrossDomainMessenger } from "src/L1/L1CrossDomainMessenger.sol";
import { DeploymentSummary } from "../proofs/utils/DeploymentSummary.sol"; import { DeploymentSummary } from "../proofs/utils/DeploymentSummary.sol";
import { OptimismPortal_Test } from "test/L1/OptimismPortal.t.sol"; import { OptimismPortal_Test } from "test/L1/OptimismPortal.t.sol";
import { L1CrossDomainMessenger_Test } from "test/L1/L1CrossDomainMessenger.t.sol";
/// @dev Contract testing the deployment summary correctness /// @dev Contract testing the deployment summary correctness
contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test { contract DeploymentSummary_TestOptimismPortal is DeploymentSummary, OptimismPortal_Test {
/// @notice super.setUp is not called on purpose /// @notice super.setUp is not called on purpose
function setUp() public override { function setUp() public override {
// Recreate Deployment Summary state changes // Recreate Deployment Summary state changes
...@@ -21,10 +24,10 @@ contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test { ...@@ -21,10 +24,10 @@ contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test {
deploymentSummary.recreateDeployment(); deploymentSummary.recreateDeployment();
// Set summary addresses // Set summary addresses
optimismPortal = OptimismPortal(payable(OptimismPortalProxyAddress)); optimismPortal = OptimismPortal(payable(optimismPortalProxyAddress));
superchainConfig = SuperchainConfig(SuperchainConfigProxyAddress); superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
l2OutputOracle = L2OutputOracle(L2OutputOracleProxyAddress); l2OutputOracle = L2OutputOracle(l2OutputOracleProxyAddress);
systemConfig = SystemConfig(SystemConfigProxyAddress); systemConfig = SystemConfig(systemConfigProxyAddress);
// Set up utilized addresses // Set up utilized addresses
depositor = makeAddr("depositor"); depositor = makeAddr("depositor");
...@@ -39,7 +42,7 @@ contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test { ...@@ -39,7 +42,7 @@ contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test {
/// the remaining assertions of the test are important to check /// the remaining assertions of the test are important to check
function test_constructor_succeeds() external override { function test_constructor_succeeds() external override {
// OptimismPortal opImpl = OptimismPortal(payable(deploy.mustGetAddress("OptimismPortal"))); // OptimismPortal opImpl = OptimismPortal(payable(deploy.mustGetAddress("OptimismPortal")));
OptimismPortal opImpl = OptimismPortal(payable(OptimismPortalAddress)); OptimismPortal opImpl = OptimismPortal(payable(optimismPortalAddress));
assertEq(address(opImpl.L2_ORACLE()), address(0)); assertEq(address(opImpl.L2_ORACLE()), address(0));
assertEq(address(opImpl.l2Oracle()), address(0)); assertEq(address(opImpl.l2Oracle()), address(0));
assertEq(address(opImpl.SYSTEM_CONFIG()), address(0)); assertEq(address(opImpl.SYSTEM_CONFIG()), address(0));
...@@ -73,3 +76,42 @@ contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test { ...@@ -73,3 +76,42 @@ contract DeploymentSummary_Test is DeploymentSummary, OptimismPortal_Test {
/// the L2OutputOracle, which is needed in this test /// the L2OutputOracle, which is needed in this test
function test_isOutputFinalized_succeeds() external override { } function test_isOutputFinalized_succeeds() external override { }
} }
contract DeploymentSummary_TestL1CrossDomainMessenger is DeploymentSummary, L1CrossDomainMessenger_Test {
/// @notice super.setUp is not called on purpose
function setUp() public override {
// Recreate Deployment Summary state changes
DeploymentSummary deploymentSummary = new DeploymentSummary();
deploymentSummary.recreateDeployment();
// Set summary addresses
optimismPortal = OptimismPortal(payable(optimismPortalProxyAddress));
superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
l2OutputOracle = L2OutputOracle(l2OutputOracleProxyAddress);
systemConfig = SystemConfig(systemConfigProxyAddress);
l1CrossDomainMessenger = L1CrossDomainMessenger(l1CrossDomainMessengerProxyAddress);
// Set up utilized addresses
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 override {
// L1CrossDomainMessenger impl = L1CrossDomainMessenger(deploy.mustGetAddress("L1CrossDomainMessenger"));
L1CrossDomainMessenger impl = L1CrossDomainMessenger(l1CrossDomainMessengerAddress);
assertEq(address(impl.superchainConfig()), address(0));
assertEq(address(impl.PORTAL()), address(0));
assertEq(address(impl.portal()), address(0));
assertEq(address(impl.OTHER_MESSENGER()), Predeploys.L2_CROSS_DOMAIN_MESSENGER);
assertEq(address(impl.otherMessenger()), Predeploys.L2_CROSS_DOMAIN_MESSENGER);
}
/// @notice This test is overridden because `KontrolDeployment` doesn't deploy
/// L2CrossDomainMessenger, which is needed in this test
function test_relayMessage_v2_reverts() external override { }
}
...@@ -12,15 +12,18 @@ contract KontrolDeployment is Deploy { ...@@ -12,15 +12,18 @@ contract KontrolDeployment is Deploy {
deployERC1967Proxy("OptimismPortalProxy"); deployERC1967Proxy("OptimismPortalProxy");
deployERC1967Proxy("L2OutputOracleProxy"); deployERC1967Proxy("L2OutputOracleProxy");
deployERC1967Proxy("SystemConfigProxy"); deployERC1967Proxy("SystemConfigProxy");
deployL1CrossDomainMessengerProxy();
transferAddressManagerOwnership(); // to the ProxyAdmin transferAddressManagerOwnership(); // to the ProxyAdmin
// deployImplementations(); // deployImplementations();
deployOptimismPortal(); deployOptimismPortal();
deployL1CrossDomainMessenger();
deployL2OutputOracle(); deployL2OutputOracle();
deploySystemConfig(); deploySystemConfig();
// initializeImplementations(); // initializeImplementations();
initializeSystemConfig(); initializeSystemConfig();
initializeL1CrossDomainMessenger();
initializeOptimismPortal(); initializeOptimismPortal();
} }
} }
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import { DeploymentSummary } from "./utils/DeploymentSummary.sol";
import { KontrolUtils } from "./utils/KontrolUtils.sol";
import {
IL1CrossDomainMessenger as L1CrossDomainMessenger,
ISuperchainConfig as SuperchainConfig
} from "./interfaces/KontrolInterfaces.sol";
contract L1CrossDomainMessengerKontrol is DeploymentSummary, KontrolUtils {
L1CrossDomainMessenger l1CrossDomainMessenger;
SuperchainConfig superchainConfig;
/// @dev Inlined setUp function for faster Kontrol performance
/// Tracking issue: https://github.com/runtimeverification/kontrol/issues/282
function setUpInlined() public {
l1CrossDomainMessenger = L1CrossDomainMessenger(l1CrossDomainMessengerProxyAddress);
superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
}
/// TODO: Replace struct parameters and workarounds with the appropriate
/// types once Kontrol supports symbolic `bytes` and `bytes[]`
/// Tracking issue: https://github.com/runtimeverification/kontrol/issues/272
function prove_relayMessage_paused(
uint256 _nonce,
address _sender,
address _target,
uint256 _value,
uint256 _gas
)
external
{
setUpInlined();
bytes memory _message = freshBigBytes(600);
// Pause System
vm.prank(superchainConfig.guardian());
superchainConfig.pause("identifier");
vm.expectRevert("CrossDomainMessenger: paused");
l1CrossDomainMessenger.relayMessage(_nonce, _sender, _target, _value, _gas, _message);
}
}
...@@ -16,8 +16,8 @@ contract OptimismPortalKontrol is DeploymentSummary, KontrolUtils { ...@@ -16,8 +16,8 @@ contract OptimismPortalKontrol is DeploymentSummary, KontrolUtils {
/// @dev Inlined setUp function for faster Kontrol performance /// @dev Inlined setUp function for faster Kontrol performance
/// Tracking issue: https://github.com/runtimeverification/kontrol/issues/282 /// Tracking issue: https://github.com/runtimeverification/kontrol/issues/282
function setUpInlined() public { function setUpInlined() public {
optimismPortal = OptimismPortal(payable(OptimismPortalProxyAddress)); optimismPortal = OptimismPortal(payable(optimismPortalProxyAddress));
superchainConfig = SuperchainConfig(SuperchainConfigProxyAddress); superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
} }
/// TODO: Replace struct parameters and workarounds with the appropriate /// TODO: Replace struct parameters and workarounds with the appropriate
...@@ -59,7 +59,7 @@ contract OptimismPortalKontrol is DeploymentSummary, KontrolUtils { ...@@ -59,7 +59,7 @@ contract OptimismPortalKontrol is DeploymentSummary, KontrolUtils {
optimismPortal.proveWithdrawalTransaction(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof); optimismPortal.proveWithdrawalTransaction(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
} }
/// TODO: Replace struct parameters and workarounds with the appropiate /// TODO: Replace struct parameters and workarounds with the appropriate
/// types once Kontrol supports symbolic `bytes` and `bytes[]` /// types once Kontrol supports symbolic `bytes` and `bytes[]`
/// Tracking issue: https://github.com/runtimeverification/kontrol/issues/272 /// Tracking issue: https://github.com/runtimeverification/kontrol/issues/272
function prove_finalizeWithdrawalTransaction_paused( function prove_finalizeWithdrawalTransaction_paused(
......
...@@ -30,3 +30,18 @@ interface ISuperchainConfig { ...@@ -30,3 +30,18 @@ interface ISuperchainConfig {
function unpause() external; function unpause() external;
} }
interface IL1CrossDomainMessenger {
function paused() external view returns (bool);
function relayMessage(
uint256 _nonce,
address _sender,
address _target,
uint256 _value,
uint256 _minGasLimit,
bytes calldata _message
)
external
payable;
}
...@@ -12,288 +12,355 @@ contract DeploymentSummary is DeploymentSummaryCode { ...@@ -12,288 +12,355 @@ contract DeploymentSummary is DeploymentSummaryCode {
address private constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); address private constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code"))));
Vm private constant vm = Vm(VM_ADDRESS); Vm private constant vm = Vm(VM_ADDRESS);
address internal constant AddressManagerAddress = 0xBb2180ebd78ce97360503434eD37fcf4a1Df61c3; address internal constant addressManagerAddress = 0xBb2180ebd78ce97360503434eD37fcf4a1Df61c3;
address internal constant L2OutputOracleAddress = 0x19652082F846171168Daf378C4fD3ee85a0D4A60; address internal constant l1CrossDomainMessengerAddress = 0x71fA82Ea96672797954C28032b337aA40AAFC99f;
address internal constant L2OutputOracleProxyAddress = 0x8B71b41D4dBEb2b6821d44692d3fACAAf77480Bb; address internal constant l1CrossDomainMessengerProxyAddress = 0x0c8b5822b6e02CDa722174F19A1439A7495a3fA6;
address internal constant OptimismPortalAddress = 0x8887E7568E81405c4E0D4cAaabdda949e3B9d4E4; address internal constant l2OutputOracleAddress = 0x19652082F846171168Daf378C4fD3ee85a0D4A60;
address internal constant OptimismPortalProxyAddress = 0x978e3286EB805934215a88694d80b09aDed68D90; address internal constant l2OutputOracleProxyAddress = 0x8B71b41D4dBEb2b6821d44692d3fACAAf77480Bb;
address internal constant ProtocolVersionsAddress = 0xfbfD64a6C0257F613feFCe050Aa30ecC3E3d7C3F; address internal constant optimismPortalAddress = 0x8887E7568E81405c4E0D4cAaabdda949e3B9d4E4;
address internal constant ProtocolVersionsProxyAddress = 0x416C42991d05b31E9A6dC209e91AD22b79D87Ae6; address internal constant optimismPortalProxyAddress = 0x978e3286EB805934215a88694d80b09aDed68D90;
address internal constant ProxyAdminAddress = 0xDB8cFf278adCCF9E9b5da745B44E754fC4EE3C76; address internal constant protocolVersionsAddress = 0xfbfD64a6C0257F613feFCe050Aa30ecC3E3d7C3F;
address internal constant SafeProxyFactoryAddress = 0x34A1D3fff3958843C43aD80F30b94c510645C316; address internal constant protocolVersionsProxyAddress = 0x416C42991d05b31E9A6dC209e91AD22b79D87Ae6;
address internal constant SafeSingletonAddress = 0x90193C961A926261B756D1E5bb255e67ff9498A1; address internal constant proxyAdminAddress = 0xDB8cFf278adCCF9E9b5da745B44E754fC4EE3C76;
address internal constant SuperchainConfigAddress = 0x068E44eB31e111028c41598E4535be7468674D0A; address internal constant safeProxyFactoryAddress = 0x34A1D3fff3958843C43aD80F30b94c510645C316;
address internal constant SuperchainConfigProxyAddress = 0xDEb1E9a6Be7Baf84208BB6E10aC9F9bbE1D70809; address internal constant safeSingletonAddress = 0x90193C961A926261B756D1E5bb255e67ff9498A1;
address internal constant SystemConfigAddress = 0xffbA8944650e26653823658d76A122946F27e2f2; address internal constant superchainConfigAddress = 0x068E44eB31e111028c41598E4535be7468674D0A;
address internal constant SystemConfigProxyAddress = 0x1c23A6d89F95ef3148BCDA8E242cAb145bf9c0E4; address internal constant superchainConfigProxyAddress = 0xDEb1E9a6Be7Baf84208BB6E10aC9F9bbE1D70809;
address internal constant SystemOwnerSafeAddress = 0x2601573C28B77dea6C8B73385c25024A28a00C3F; address internal constant systemConfigAddress = 0xffbA8944650e26653823658d76A122946F27e2f2;
address internal constant systemConfigProxyAddress = 0x1c23A6d89F95ef3148BCDA8E242cAb145bf9c0E4;
address internal constant systemOwnerSafeAddress = 0x2601573C28B77dea6C8B73385c25024A28a00C3F;
function recreateDeployment() public { function recreateDeployment() public {
bytes32 slot; bytes32 slot;
bytes32 value; bytes32 value;
vm.etch(SafeProxyFactoryAddress, SafeProxyFactoryCode); vm.etch(safeProxyFactoryAddress, safeProxyFactoryCode);
vm.etch(SafeSingletonAddress, SafeSingletonCode); vm.etch(safeSingletonAddress, safeSingletonCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004"; slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SafeSingletonAddress, slot, value); vm.store(safeSingletonAddress, slot, value);
vm.etch(SystemOwnerSafeAddress, SystemOwnerSafeCode); vm.etch(systemOwnerSafeAddress, systemOwnerSafeCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"00000000000000000000000090193c961a926261b756d1e5bb255e67ff9498a1"; value = hex"00000000000000000000000090193c961a926261b756d1e5bb255e67ff9498a1";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"e90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"; slot = hex"e90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38"; value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"d1b0d319c6526317dce66989b393dcfb4435c9a65e399a088b63bbf65d7aee32"; slot = hex"d1b0d319c6526317dce66989b393dcfb4435c9a65e399a088b63bbf65d7aee32";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000003"; slot = hex"0000000000000000000000000000000000000000000000000000000000000003";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004"; slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"cc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"; slot = hex"cc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
vm.etch(AddressManagerAddress, AddressManagerCode); vm.etch(addressManagerAddress, addressManagerCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38"; value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(AddressManagerAddress, slot, value); vm.store(addressManagerAddress, slot, value);
vm.etch(ProxyAdminAddress, ProxyAdminCode); vm.etch(proxyAdminAddress, proxyAdminCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38"; value = hex"0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38";
vm.store(ProxyAdminAddress, slot, value); vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000003"; slot = hex"0000000000000000000000000000000000000000000000000000000000000003";
value = hex"000000000000000000000000bb2180ebd78ce97360503434ed37fcf4a1df61c3"; value = hex"000000000000000000000000bb2180ebd78ce97360503434ed37fcf4a1df61c3";
vm.store(ProxyAdminAddress, slot, value); vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000002601573c28b77dea6c8b73385c25024a28a00c3f"; value = hex"0000000000000000000000002601573c28b77dea6c8b73385c25024a28a00c3f";
vm.store(ProxyAdminAddress, slot, value); vm.store(proxyAdminAddress, slot, value);
vm.etch(SuperchainConfigProxyAddress, SuperchainConfigProxyCode); vm.etch(superchainConfigProxyAddress, superchainConfigProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(SuperchainConfigProxyAddress, slot, value); vm.store(superchainConfigProxyAddress, slot, value);
vm.etch(SuperchainConfigAddress, SuperchainConfigCode); vm.etch(superchainConfigAddress, superchainConfigCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SuperchainConfigAddress, slot, value); vm.store(superchainConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(SuperchainConfigAddress, slot, value); vm.store(superchainConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SuperchainConfigAddress, slot, value); vm.store(superchainConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005"; slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000068e44eb31e111028c41598e4535be7468674d0a"; value = hex"000000000000000000000000068e44eb31e111028c41598e4535be7468674d0a";
vm.store(SuperchainConfigProxyAddress, slot, value); vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SuperchainConfigProxyAddress, slot, value); vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(SuperchainConfigProxyAddress, slot, value); vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"d30e835d3f35624761057ff5b27d558f97bd5be034621e62240e5c0b784abe68"; slot = hex"d30e835d3f35624761057ff5b27d558f97bd5be034621e62240e5c0b784abe68";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc"; value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(SuperchainConfigProxyAddress, slot, value); vm.store(superchainConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SuperchainConfigProxyAddress, slot, value); vm.store(superchainConfigProxyAddress, slot, value);
vm.etch(ProtocolVersionsProxyAddress, ProtocolVersionsProxyCode); vm.etch(protocolVersionsProxyAddress, protocolVersionsProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
vm.etch(ProtocolVersionsAddress, ProtocolVersionsCode); vm.etch(protocolVersionsAddress, protocolVersionsCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(ProtocolVersionsAddress, slot, value); vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(ProtocolVersionsAddress, slot, value); vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c"; value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c";
vm.store(ProtocolVersionsAddress, slot, value); vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000000000000000000000000000000000000000dead"; value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(ProtocolVersionsAddress, slot, value); vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(ProtocolVersionsAddress, slot, value); vm.store(protocolVersionsAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005"; slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000002"; value = hex"0000000000000000000000000000000000000000000000000000000000000002";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000fbfd64a6c0257f613fefce050aa30ecc3e3d7c3f"; value = hex"000000000000000000000000fbfd64a6c0257f613fefce050aa30ecc3e3d7c3f";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc"; value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(ProtocolVersionsProxyAddress, slot, value); vm.store(protocolVersionsProxyAddress, slot, value);
vm.etch(OptimismPortalProxyAddress, OptimismPortalProxyCode); vm.etch(optimismPortalProxyAddress, optimismPortalProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
vm.etch(L2OutputOracleProxyAddress, L2OutputOracleProxyCode); vm.etch(l2OutputOracleProxyAddress, l2OutputOracleProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(L2OutputOracleProxyAddress, slot, value); vm.store(l2OutputOracleProxyAddress, slot, value);
vm.etch(SystemConfigProxyAddress, SystemConfigProxyCode); vm.etch(systemConfigProxyAddress, systemConfigProxyCode);
slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; slot = hex"b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
vm.etch(l1CrossDomainMessengerProxyAddress, l1CrossDomainMessengerProxyCode);
slot = hex"a8f0d50211ac8ff1a40793a899dff3ced4762e0466f69b0078ab7b00d037835c";
value = hex"000000000000000000000000bb2180ebd78ce97360503434ed37fcf4a1df61c3";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"eae32376463217751b8fa4dea8c38ab253664fa3605de6d85d2e790aa970f2b8";
value = hex"4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000034";
vm.store(l1CrossDomainMessengerProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(AddressManagerAddress, slot, value); vm.store(addressManagerAddress, slot, value);
vm.etch(OptimismPortalAddress, OptimismPortalCode); vm.etch(optimismPortalAddress, optimismPortalCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(OptimismPortalAddress, slot, value); vm.store(optimismPortalAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(OptimismPortalAddress, slot, value); vm.store(optimismPortalAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000032"; slot = hex"0000000000000000000000000000000000000000000000000000000000000032";
value = hex"000000000000000000000000000000000000000000000000000000000000dead"; value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(OptimismPortalAddress, slot, value); vm.store(optimismPortalAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000001"; slot = hex"0000000000000000000000000000000000000000000000000000000000000001";
value = hex"000000000000000100000000000000000000000000000000000000003b9aca00"; value = hex"000000000000000100000000000000000000000000000000000000003b9aca00";
vm.store(OptimismPortalAddress, slot, value); vm.store(optimismPortalAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(OptimismPortalAddress, slot, value); vm.store(optimismPortalAddress, slot, value);
vm.etch(L2OutputOracleAddress, L2OutputOracleCode); 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(l2OutputOracleAddress, l2OutputOracleCode);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(L2OutputOracleAddress, slot, value); vm.store(l2OutputOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(L2OutputOracleAddress, slot, value); vm.store(l2OutputOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000004"; slot = hex"0000000000000000000000000000000000000000000000000000000000000004";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(L2OutputOracleAddress, slot, value); vm.store(l2OutputOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005"; slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(L2OutputOracleAddress, slot, value); vm.store(l2OutputOracleAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(L2OutputOracleAddress, slot, value); vm.store(l2OutputOracleAddress, slot, value);
vm.etch(SystemConfigAddress, SystemConfigCode); vm.etch(systemConfigAddress, systemConfigCode);
slot = hex"a11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb19f"; slot = hex"a11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb19f";
value = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; value = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c"; value = hex"0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000000000000000000000000000000000000000dead"; value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000068"; slot = hex"0000000000000000000000000000000000000000000000000000000000000068";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000069"; slot = hex"0000000000000000000000000000000000000000000000000000000000000069";
value = hex"0000000000000000000000000000000000000000000000000000020100000001"; value = hex"0000000000000000000000000000000000000000000000000000020100000001";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemConfigAddress, slot, value); vm.store(systemConfigAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005"; slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000003"; value = hex"0000000000000000000000000000000000000000000000000000000000000003";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000ffba8944650e26653823658d76a122946f27e2f2"; value = hex"000000000000000000000000ffba8944650e26653823658d76a122946f27e2f2";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76"; value = hex"000000000000000000000000db8cff278adccf9e9b5da745b44e754fc4ee3c76";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000033"; slot = hex"0000000000000000000000000000000000000000000000000000000000000033";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc"; value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000067"; slot = hex"0000000000000000000000000000000000000000000000000000000000000067";
value = hex"0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"; value = hex"0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000065"; slot = hex"0000000000000000000000000000000000000000000000000000000000000065";
value = hex"0000000000000000000000000000000000000000000000000000000000000834"; value = hex"0000000000000000000000000000000000000000000000000000000000000834";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000066"; slot = hex"0000000000000000000000000000000000000000000000000000000000000066";
value = hex"00000000000000000000000000000000000000000000000000000000000f4240"; value = hex"00000000000000000000000000000000000000000000000000000000000f4240";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000068"; slot = hex"0000000000000000000000000000000000000000000000000000000000000068";
value = hex"00000000000000000000000000000000000000000000000000000000017d7840"; value = hex"00000000000000000000000000000000000000000000000000000000017d7840";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08"; slot = hex"65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08";
value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc"; value = hex"0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc597"; slot = hex"71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc597";
value = hex"000000000000000000000000ff00000000000000000000000000000000000000"; value = hex"000000000000000000000000ff00000000000000000000000000000000000000";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce9580636";
value = hex"0000000000000000000000000c8b5822b6e02cda722174f19a1439a7495a3fa6";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"e52a667f71ec761b9b381c7b76ca9b852adf7e8905da0e0ad49986a0a6871815"; slot = hex"e52a667f71ec761b9b381c7b76ca9b852adf7e8905da0e0ad49986a0a6871815";
value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb"; value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ac"; slot = hex"4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ac";
value = hex"000000000000000000000000978e3286eb805934215a88694d80b09aded68d90"; value = hex"000000000000000000000000978e3286eb805934215a88694d80b09aded68d90";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"a11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb19f"; slot = hex"a11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb19f";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000069"; slot = hex"0000000000000000000000000000000000000000000000000000000000000069";
value = hex"0000ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00"; value = hex"0000ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(SystemConfigProxyAddress, slot, value); vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005"; slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000004"; value = hex"0000000000000000000000000000000000000000000000000000000000000004";
vm.store(SystemOwnerSafeAddress, slot, value); vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"a8f0d50211ac8ff1a40793a899dff3ced4762e0466f69b0078ab7b00d037835c";
value = hex"0000000000000000000000000000000000000000000000000000000000000002";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000005";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"7cda2d9a7dd1a58982b7fac9315bdc1ed8c92aeb9c22cd8555aaa54972f01ccb";
value = hex"4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000034";
vm.store(proxyAdminAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000005";
value = hex"0000000000000000000000000000000000000000000000000000000000000006";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"515216935740e67dfdda5cf8e248ea32b3277787818ab59153061ac875c9385e";
value = hex"00000000000000000000000071fa82ea96672797954c28032b337aa40aafc99f";
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"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"0000000000000000000000000000000000000000000000000000000000000007";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"0000000000000000000000008887e7568e81405c4e0d4caaabdda949e3b9d4e4"; value = hex"0000000000000000000000008887e7568e81405c4e0d4caaabdda949e3b9d4e4";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000101"; value = hex"0000000000000000000000000000000000000000000000000000000000000101";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000036"; slot = hex"0000000000000000000000000000000000000000000000000000000000000036";
value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb"; value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000037"; slot = hex"0000000000000000000000000000000000000000000000000000000000000037";
value = hex"0000000000000000000000001c23a6d89f95ef3148bcda8e242cab145bf9c0e4"; value = hex"0000000000000000000000001c23a6d89f95ef3148bcda8e242cab145bf9c0e4";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000035"; slot = hex"0000000000000000000000000000000000000000000000000000000000000035";
value = hex"0000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d7080900"; value = hex"0000000000000000000000deb1e9a6be7baf84208bb6e10ac9f9bbe1d7080900";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000032"; slot = hex"0000000000000000000000000000000000000000000000000000000000000032";
value = hex"000000000000000000000000000000000000000000000000000000000000dead"; value = hex"000000000000000000000000000000000000000000000000000000000000dead";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000001"; slot = hex"0000000000000000000000000000000000000000000000000000000000000001";
value = hex"000000000000000100000000000000000000000000000000000000003b9aca00"; value = hex"000000000000000100000000000000000000000000000000000000003b9aca00";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000"; slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001"; value = hex"0000000000000000000000000000000000000000000000000000000000000001";
vm.store(OptimismPortalProxyAddress, slot, value); vm.store(optimismPortalProxyAddress, slot, value);
} }
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -19,7 +19,7 @@ def reverse_json(input_file, output_file): ...@@ -19,7 +19,7 @@ def reverse_json(input_file, output_file):
with open(input_file, 'r') as file: with open(input_file, 'r') as file:
json_data = json.load(file) json_data = json.load(file)
reversed_json = {str(value): key for key, value in json_data.items()} reversed_json = {str(value): key[0].lower() + key[1:] for key, value in json_data.items()}
with open(output_file, 'w') as file: with open(output_file, 'w') as file:
json.dump(reversed_json, file, indent=2) json.dump(reversed_json, file, indent=2)
......
...@@ -58,7 +58,7 @@ else ...@@ -58,7 +58,7 @@ else
pushd "${WORKSPACE_DIR}" > /dev/null pushd "${WORKSPACE_DIR}" > /dev/null
else else
notif "Kontrol version does NOT match ${KONTROLRC}" notif "Kontrol version does NOT match ${KONTROLRC}"
notif "Please run 'kup install kontrol --version ${KONTROLRC}'" notif "Please run 'kup install kontrol --version v${KONTROLRC}'"
blank_line blank_line
exit 1 exit 1
fi fi
...@@ -214,7 +214,7 @@ regen= ...@@ -214,7 +214,7 @@ regen=
max_depth=1000000 max_depth=1000000
max_iterations=1000000 max_iterations=1000000
smt_timeout=100000 smt_timeout=100000
workers=1 workers=2
reinit=--reinit reinit=--reinit
reinit= reinit=
break_on_calls=--no-break-on-calls break_on_calls=--no-break-on-calls
...@@ -233,6 +233,7 @@ state_diff="./snapshots/state-diff/Kontrol-Deploy.json" ...@@ -233,6 +233,7 @@ state_diff="./snapshots/state-diff/Kontrol-Deploy.json"
tests="" tests=""
#tests+="--match-test OptimismPortalKontrol.prove_proveWithdrawalTransaction_paused " #tests+="--match-test OptimismPortalKontrol.prove_proveWithdrawalTransaction_paused "
tests+="--match-test OptimismPortalKontrol.prove_finalizeWithdrawalTransaction_paused " tests+="--match-test OptimismPortalKontrol.prove_finalizeWithdrawalTransaction_paused "
tests+="--match-test L1CrossDomainMessengerKontrol.prove_relayMessage_paused "
############# #############
# RUN TESTS # # RUN TESTS #
......
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
"geth": "v1.13.4", "geth": "v1.13.4",
"nvm": "v20.9.0", "nvm": "v20.9.0",
"slither": "0.10.0", "slither": "0.10.0",
"kontrol": "0.1.121" "kontrol": "0.1.127"
} }
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