Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1920450
concensus: pbft to single sequencer, include P2P & block produce
Dec 30, 2025
d5b4920
Merge branch 'main' into feat/pbft_to_singleSeq
tomatoishealthy Dec 30, 2025
7b0d2e1
Merge branch 'main' into feat/pbft_to_singleSeq
Jan 22, 2026
ac56b04
feature: support sequencer rotate
Feb 4, 2026
2ac7b67
add consensus switch flag
Feb 26, 2026
29db6e5
Merge branch 'test_3_13' into feat/sequencer-rotate-pr
tomatoishealthy Feb 26, 2026
511c280
Feat/sequencer rotate pr (#887)
tomatoishealthy Feb 26, 2026
4ed91d5
Merge branch 'main' into test_3_13
Feb 27, 2026
6692c86
MorphTx enhances and updates Jade upgrades (#890)
SegueII Feb 27, 2026
3cf24c2
update go mod
SegueII Feb 27, 2026
123d3eb
chore: upgrade go-ethereum to fix MorphTx version JSON unmarshaling
panos-xyz Mar 2, 2026
4d6329b
Merge pull request #894 from morph-l2/fix/morph-tx-version-json
panos-xyz Mar 3, 2026
eaaba81
update go mod
SegueII Mar 3, 2026
da69753
update go mod
SegueII Mar 3, 2026
a195d1f
Test submitter batch (#896)
Kukoomomo Mar 4, 2026
8913394
fix morph tx type
Kukoomomo Mar 4, 2026
8634094
fix: update tendermint to 200f21adf with blocksync and consensus fixes
Mar 12, 2026
af51dc3
fix: update tendermint to 57e39802d with blocksync and consensus fixes
Mar 12, 2026
34727aa
feat: update geth to 280bfb9c and add timestamp to AssembleL2BlockV2
Mar 12, 2026
1a20a0f
Merge remote-tracking branch 'origin/main' into feat/sequencer-rotate-pr
Mar 12, 2026
4cc03d3
feat: update geth to 280bfb9c and add timestamp to AssembleL2BlockV2
Mar 12, 2026
456e451
Merge branch 'test_3_13' into feat/sequencer-rotate-pr
Mar 12, 2026
0a57bcf
chore: remove redundant tendermint replace from go.work
Mar 12, 2026
12f01af
chore: clean up go.work.sum stale tendermint entry
Mar 12, 2026
a534982
chore: update tendermint to 999449fd4 (ValidateMsg upgrade height check)
Mar 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
################## update dependencies ####################
ETHEREUM_SUBMODULE_COMMIT_OR_TAG := morph-v2.1.2
ETHEREUM_TARGET_VERSION := morph-v2.1.2
TENDERMINT_TARGET_VERSION := v0.3.3
ETHEREUM_SUBMODULE_COMMIT_OR_TAG := test_3_13
ETHEREUM_TARGET_VERSION := v1.10.14-0.20260303114154-29281e501802
TENDERMINT_TARGET_VERSION := v0.3.4-0.20260226093240-9be76fe518c2


ETHEREUM_MODULE_NAME := github.com/morph-l2/go-ethereum
Expand Down
820 changes: 820 additions & 0 deletions bindings/bindings/l1sequencer.go

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions bindings/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ module morph-l2/bindings

go 1.24.0

replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.3
replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.4-0.20260313040448-999449fd4d23

require github.com/morph-l2/go-ethereum v1.10.14-0.20260211074551-4f0f6e6bd141
require github.com/morph-l2/go-ethereum v1.10.14-0.20260312125309-280bfb9cfd1d

require (
github.com/VictoriaMetrics/fastcache v1.12.2 // indirect
Expand Down
4 changes: 2 additions & 2 deletions bindings/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/morph-l2/go-ethereum v1.10.14-0.20260211074551-4f0f6e6bd141 h1:A8eygErKU6WKMipGWIemzwLeYkIGLd9yb/Ry3x+J9PQ=
github.com/morph-l2/go-ethereum v1.10.14-0.20260211074551-4f0f6e6bd141/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/morph-l2/go-ethereum v1.10.14-0.20260312125309-280bfb9cfd1d h1:Qy3ytYw/PGnrPDAWen1MsMUhUXclk1F2Q36A07+bBv4=
github.com/morph-l2/go-ethereum v1.10.14-0.20260312125309-280bfb9cfd1d/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
Expand Down
58 changes: 58 additions & 0 deletions contracts/contracts/l1/L1Sequencer.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// SPDX-License-Identifier: MIT
pragma solidity =0.8.24;

import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

/// @title L1Sequencer
/// @notice L1 contract for managing the sequencer address.
/// The sequencer address can be updated by the owner (multisig recommended).
contract L1Sequencer is OwnableUpgradeable {
// ============ Storage ============

/// @notice Current sequencer address
address public sequencer;

// ============ Events ============

/// @notice Emitted when sequencer is updated
event SequencerUpdated(address indexed oldSequencer, address indexed newSequencer);

// ============ Initializer ============

/// @notice Initialize the contract
/// @param _owner Contract owner (multisig recommended)
/// @param _initialSequencer Initial sequencer address (can be address(0) to set later)
function initialize(address _owner, address _initialSequencer) external initializer {
require(_owner != address(0), "invalid owner");

__Ownable_init();
_transferOwnership(_owner);

// Set initial sequencer if provided
if (_initialSequencer != address(0)) {
sequencer = _initialSequencer;
emit SequencerUpdated(address(0), _initialSequencer);
}
}

// ============ Admin Functions ============

/// @notice Update sequencer address (takes effect immediately)
/// @param newSequencer New sequencer address
function updateSequencer(address newSequencer) external onlyOwner {
require(newSequencer != address(0), "invalid sequencer");
require(newSequencer != sequencer, "same sequencer");

address oldSequencer = sequencer;
sequencer = newSequencer;

emit SequencerUpdated(oldSequencer, newSequencer);
}

// ============ View Functions ============

/// @notice Get current sequencer address
function getSequencer() external view returns (address) {
return sequencer;
}
}
9 changes: 9 additions & 0 deletions contracts/deploy/013-DeployProxys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export const deployContractProxies = async (

const RollupProxyStorageName = ProxyStorageName.RollupProxyStorageName
const L1StakingProxyStorageName = ProxyStorageName.L1StakingProxyStorageName
const L1SequencerProxyStorageName = ProxyStorageName.L1SequencerProxyStorageName

const L1GatewayRouterProxyStorageName = ProxyStorageName.L1GatewayRouterProxyStorageName
const L1ETHGatewayProxyStorageName = ProxyStorageName.L1ETHGatewayProxyStorageName
Expand Down Expand Up @@ -112,6 +113,13 @@ export const deployContractProxies = async (
return err
}

// ************************ sequencer contracts deploy ************************
// L1SequencerProxy deploy
err = await deployContractProxyByStorageName(hre, path, deployer, L1SequencerProxyStorageName)
if (err != "") {
return err
}

// ************************ rollup contracts deploy ************************
// RollupProxy deploy
err = await deployContractProxyByStorageName(hre, path, deployer, RollupProxyStorageName)
Expand Down Expand Up @@ -274,6 +282,7 @@ export const deployContractProxiesConcurrently = async (
ProxyStorageName.L1CrossDomainMessengerProxyStorageName,
ProxyStorageName.L1MessageQueueWithGasPriceOracleProxyStorageName,
ProxyStorageName.L1StakingProxyStorageName,
ProxyStorageName.L1SequencerProxyStorageName,
ProxyStorageName.RollupProxyStorageName,
ProxyStorageName.L1GatewayRouterProxyStorageName,
ProxyStorageName.L1ETHGatewayProxyStorageName,
Expand Down
20 changes: 20 additions & 0 deletions contracts/deploy/014-DeployImpls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,11 @@ export const deployContractImplsConcurrently = async (

deployPromises.push(deployContract(L1StakingFactoryName, StakingImplStorageName, [L1CrossDomainMessengerProxyAddress]))

// L1Sequencer deploy (no constructor args)
const L1SequencerFactoryName = ContractFactoryName.L1Sequencer
const L1SequencerImplStorageName = ImplStorageName.L1SequencerStorageName
deployPromises.push(deployContract(L1SequencerFactoryName, L1SequencerImplStorageName))

const results = await Promise.all(deployPromises)

for (const result of results) {
Expand Down Expand Up @@ -382,6 +387,21 @@ export const deployContractImpls = async (
return err
}

// ************************ sequencer contracts deploy ************************
// L1Sequencer deploy
const L1SequencerFactoryName = ContractFactoryName.L1Sequencer
const L1SequencerImplStorageName = ImplStorageName.L1SequencerStorageName
Factory = await hre.ethers.getContractFactory(L1SequencerFactoryName)
contract = await Factory.deploy()
await contract.deployed()
console.log("%s=%s ; TX_HASH: %s", L1SequencerImplStorageName, contract.address.toLocaleLowerCase(), contract.deployTransaction.hash)
blockNumber = await hre.ethers.provider.getBlockNumber()
console.log("BLOCK_NUMBER: %s", blockNumber)
err = await storage(path, L1SequencerImplStorageName, contract.address.toLocaleLowerCase(), blockNumber || 0)
if (err != '') {
return err
}

// return
return ''
}
Expand Down
9 changes: 9 additions & 0 deletions contracts/deploy/019-AdminTransfer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ export const AdminTransferConcurrently = async (
ProxyStorageName.L1CrossDomainMessengerProxyStorageName,
ProxyStorageName.L1MessageQueueWithGasPriceOracleProxyStorageName,
ProxyStorageName.L1StakingProxyStorageName,
ProxyStorageName.L1SequencerProxyStorageName, // Added L1Sequencer
ProxyStorageName.RollupProxyStorageName,
ProxyStorageName.L1GatewayRouterProxyStorageName,
ProxyStorageName.L1ETHGatewayProxyStorageName,
Expand Down Expand Up @@ -159,6 +160,7 @@ export const AdminTransfer = async (

const RollupProxyStorageName = ProxyStorageName.RollupProxyStorageName
const L1StakingProxyStorageName = ProxyStorageName.L1StakingProxyStorageName
const L1SequencerProxyStorageName = ProxyStorageName.L1SequencerProxyStorageName

const L1GatewayRouterProxyStorageName = ProxyStorageName.L1GatewayRouterProxyStorageName
const L1ETHGatewayProxyStorageName = ProxyStorageName.L1ETHGatewayProxyStorageName
Expand Down Expand Up @@ -192,6 +194,13 @@ export const AdminTransfer = async (
return err
}

// ************************ sequencer contracts admin change ************************
// L1SequencerProxy admin change
err = await AdminTransferByProxyStorageName(hre, path, deployer, L1SequencerProxyStorageName)
if (err != '') {
return err
}

// ************************ rollup contracts admin change ************************
// RollupProxy admin change
err = await AdminTransferByProxyStorageName(hre, path, deployer, RollupProxyStorageName)
Expand Down
14 changes: 14 additions & 0 deletions contracts/deploy/020-ContractInit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,32 @@ export const ContractInit = async (
// submitter and challenger
const submitter: string = config.rollupProposer
const challenger: string = config.rollupChallenger
const rollupDelayPeriod: number = config.rollupDelayPeriod

if (!ethers.utils.isAddress(submitter)
|| !ethers.utils.isAddress(challenger)
) {
console.error('please check your address')
return ''
}
if (rollupDelayPeriod==0){
console.error('rollupDelayPeriod cannot set zero')
return ''
}
let res = await Rollup.importGenesisBatch(batchHeader)
let rec = await res.wait()
console.log(`importGenesisBatch(%s) ${rec.status == 1 ? "success" : "failed"}`, batchHeader)
res = await Rollup.addChallenger(challenger)
rec = await res.wait()
console.log(`addChallenger(%s) ${rec.status == 1 ? "success" : "failed"}`, challenger)

res =await Rollup.initialize2("0x0000000000000000000000000000000000000000000000000000000000000001")
rec = await res.wait()
console.log(`initialize2(%s) ${rec.status == 1 ? "success" : "failed"}`)

res = await Rollup.initialize3(rollupDelayPeriod)
rec = await res.wait()
console.log(`initialize3(%s) ${rec.status == 1 ? "success" : "failed"}`)
}

// ------------------ staking init -----------------
Expand Down
89 changes: 89 additions & 0 deletions contracts/deploy/022-SequencerInit.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import "@nomiclabs/hardhat-web3";
import "@nomiclabs/hardhat-ethers";
import "@nomiclabs/hardhat-waffle";

import {
HardhatRuntimeEnvironment
} from 'hardhat/types';
import { assertContractVariable, getContractAddressByName, awaitCondition } from "../src/deploy-utils";
import { ethers } from 'ethers'

import {
ImplStorageName,
ProxyStorageName,
ContractFactoryName,
} from "../src/types"

export const SequencerInit = async (
hre: HardhatRuntimeEnvironment,
path: string,
deployer: any,
configTmp: any
): Promise<string> => {
// L1Sequencer addresses
const L1SequencerProxyAddress = getContractAddressByName(path, ProxyStorageName.L1SequencerProxyStorageName)
const L1SequencerImplAddress = getContractAddressByName(path, ImplStorageName.L1SequencerStorageName)
const L1SequencerFactory = await hre.ethers.getContractFactory(ContractFactoryName.L1Sequencer)

const IL1SequencerProxy = await hre.ethers.getContractAt(ContractFactoryName.DefaultProxyInterface, L1SequencerProxyAddress, deployer)

if (
(await IL1SequencerProxy.implementation()).toLocaleLowerCase() !== L1SequencerImplAddress.toLocaleLowerCase()
) {
console.log('Upgrading the L1Sequencer proxy...')

// Owner is the deployer (will be transferred to multisig in production)
const owner = await deployer.getAddress()

// Get initial sequencer address from config (first sequencer address)
// Note: l2SequencerAddresses is defined in contracts/src/deploy-config/l1.ts
const initialSequencer = (configTmp.l2SequencerAddresses && configTmp.l2SequencerAddresses.length > 0)
? configTmp.l2SequencerAddresses[0]
: ethers.constants.AddressZero

console.log('Initial sequencer address:', initialSequencer)

// Upgrade and initialize the proxy with owner and initial sequencer
// Note: We set sequencer in initialize() to avoid TransparentUpgradeableProxy admin restriction
await IL1SequencerProxy.upgradeToAndCall(
L1SequencerImplAddress,
L1SequencerFactory.interface.encodeFunctionData('initialize', [owner, initialSequencer])
)

await awaitCondition(
async () => {
return (
(await IL1SequencerProxy.implementation()).toLocaleLowerCase() === L1SequencerImplAddress.toLocaleLowerCase()
)
},
3000,
1000
)

const contractTmp = new ethers.Contract(
L1SequencerProxyAddress,
L1SequencerFactory.interface,
deployer,
)

await assertContractVariable(
contractTmp,
'owner',
owner,
)

if (initialSequencer !== ethers.constants.AddressZero) {
await assertContractVariable(
contractTmp,
'sequencer',
initialSequencer,
)
console.log('L1SequencerProxy upgrade success, initial sequencer set:', initialSequencer)
} else {
console.log('L1SequencerProxy upgrade success (no initial sequencer set)')
}
}
return ''
}

export default SequencerInit
4 changes: 3 additions & 1 deletion contracts/deploy/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import StakingInit from './018-StakingInit'
import {AdminTransfer,AdminTransferByProxyStorageName, AdminTransferConcurrently} from './019-AdminTransfer'
import ContractInit from './020-ContractInit'
import StakingRegister from './021-StakingRegister'
import SequencerInit from './022-SequencerInit'


export {
Expand All @@ -28,5 +29,6 @@ export {
AdminTransferByProxyStorageName,
AdminTransferConcurrently,
ContractInit,
StakingRegister
StakingRegister,
SequencerInit
}
4 changes: 2 additions & 2 deletions contracts/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ module morph-l2/contract

go 1.24.0

replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.3
replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.4-0.20260313040448-999449fd4d23

require (
github.com/iden3/go-iden3-crypto v0.0.16
github.com/morph-l2/go-ethereum v1.10.14-0.20260211074551-4f0f6e6bd141
github.com/morph-l2/go-ethereum v1.10.14-0.20260312125309-280bfb9cfd1d
github.com/stretchr/testify v1.10.0
)

Expand Down
4 changes: 2 additions & 2 deletions contracts/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/morph-l2/go-ethereum v1.10.14-0.20260211074551-4f0f6e6bd141 h1:A8eygErKU6WKMipGWIemzwLeYkIGLd9yb/Ry3x+J9PQ=
github.com/morph-l2/go-ethereum v1.10.14-0.20260211074551-4f0f6e6bd141/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/morph-l2/go-ethereum v1.10.14-0.20260312125309-280bfb9cfd1d h1:Qy3ytYw/PGnrPDAWen1MsMUhUXclk1F2Q36A07+bBv4=
github.com/morph-l2/go-ethereum v1.10.14-0.20260312125309-280bfb9cfd1d/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
Expand Down
4 changes: 3 additions & 1 deletion contracts/src/deploy-config/l1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ const config = {
finalizationPeriodSeconds: 10,
rollupProofWindow: 86400,
proofRewardPercent: 70,
rollupDelayPeriod: 86400,

// challenge config
rollupProposer: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
rollupChallenger: '0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65',
// genesis config
batchHeader: '0x0000000000000000000000000000000000000000000000000043a758882ae97327ffcc63373e26fcd144a5a738eac834c167175d69713780c0010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c444014000000000000000000000000000000000000000000000000000000000000000020cd420e20d610897b8f2c5ac5259ab8b57cce1074212cec2815b2b73ff93d9f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
batchHeader: '0x00000000000000000000000000000000000000000000000000886e14341b355178d11a2c9f985f60a1a195973078b688a11aeaebb0c95db595010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401400000000000000000000000000000000000000000000000000000000000000002d20dde82426d971e398b3cba11ebb60d0d740b799f85e2f95fd12a1faad8e2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',

// staking config
// staking Cross-Chain config
Expand Down
6 changes: 6 additions & 0 deletions contracts/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ const ContractFactoryName = {
MultipleVersionRollupVerifier: 'MultipleVersionRollupVerifier',
// staking
L1Staking: 'L1Staking',
// L1 sequencer
L1Sequencer: 'L1Sequencer',
// gateway
L1GatewayRouter: 'L1GatewayRouter',
L1StandardERC20Gateway: 'L1StandardERC20Gateway',
Expand All @@ -40,6 +42,8 @@ const ProxyStorageName = {
RollupProxyStorageName: 'Proxy__Rollup',
// staking
L1StakingProxyStorageName: 'Proxy__L1Staking',
// L1 sequencer
L1SequencerProxyStorageName: 'Proxy__L1Sequencer',
// gateway
L1GatewayRouterProxyStorageName: 'Proxy__L1GatewayRouter',
L1StandardERC20GatewayProxyStorageName: 'Proxy__L1StandardERC20Gateway',
Expand Down Expand Up @@ -71,6 +75,8 @@ const ImplStorageName = {
MultipleVersionRollupVerifierStorageName: 'Impl__MultipleVersionRollupVerifier',
// staking
L1StakingStorageName: 'Impl__L1Staking',
// L1 sequencer
L1SequencerStorageName: 'Impl__L1Sequencer',
// gateway
L1GatewayRouterStorageName: 'Impl__L1GatewayRouter',
L1StandardERC20GatewayStorageName: 'Impl__L1StandardERC20Gateway',
Expand Down
Loading
Loading