Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/zkevm' into zkevm-2.60
Browse files Browse the repository at this point in the history
  • Loading branch information
cffls committed Sep 26, 2024
2 parents 55ed010 + 883ed2b commit 32d0174
Show file tree
Hide file tree
Showing 23 changed files with 131 additions and 37 deletions.
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ base and run `go run cmd/hack/allocs/main.go [your-file-name]` to convert it to
**Tip**: the contract addresses in the `dynamic-{network}.yaml` can be found in the files output when launching the network:
- zkevm.address-sequencer => create_rollup_output.json => `sequencer`
- zkevm.address-zkevm => create_rollup_output.json => `rollupAddress`
- zkevm.address-admin => deploy_output.json => `admin`
- zkevm.address-rollup => deploy_output.json => `polygonRollupManagerAddress`
- zkevm.address-ger-manager => deploy_output.json => `polygonZkEVMGlobalExitRootAddress`

Expand Down Expand Up @@ -191,7 +190,6 @@ For a full explanation of the config options, see below:
- `zkevm.l1-rpc-url`: L1 Ethereum RPC URL.
- `zkevm.address-sequencer`: The contract address for the sequencer
- `zkevm.address-zkevm`: The address for the zkevm contract
- `zkevm.address-admin`: The address for the admin contract
- `zkevm.address-rollup`: The address for the rollup contract
- `zkevm.address-ger-manager`: The address for the GER manager contract
- `zkevm.rpc-ratelimit`: Rate limit for RPC calls.
Expand Down
2 changes: 1 addition & 1 deletion cmd/utils/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ var (
}
AddressAdminFlag = cli.StringFlag{
Name: "zkevm.address-admin",
Usage: "Admin address",
Usage: "Admin address (Deprecated)",
Value: "",
}
AddressRollupFlag = cli.StringFlag{
Expand Down
14 changes: 14 additions & 0 deletions core/rawdb/accessors_chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,20 @@ func ReadBodyWithTransactions(db kv.Getter, hash common.Hash, number uint64) (*t
return body, err
}

func ReadCanonicalBodyWithTransactions(db kv.Getter, hash common.Hash, number uint64) *types.Body {
body, baseTxId, txAmount := ReadBody(db, hash, number)
if body == nil {
return nil
}
var err error
body.Transactions, err = CanonicalTransactions(db, baseTxId, txAmount)
if err != nil {
log.Error("failed ReadTransactionByHash", "hash", hash, "block", number, "err", err)
return nil
}
return body
}

func RawTransactionsRange(db kv.Getter, from, to uint64) (res [][]byte, err error) {
blockKey := make([]byte, dbutils.NumberLength+length.Hash)
encNum := make([]byte, 8)
Expand Down
4 changes: 2 additions & 2 deletions core/rawdb/accessors_chain_zkevm.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ func WriteBodyAndTransactions(db kv.RwTx, hash libcommon.Hash, number uint64, tx
}
transactionV3, _ := kvcfg.TransactionsV3.Enabled(db.(kv.Tx))
if transactionV3 {
err = OverwriteTransactions(db, txs, data.BaseTxId, &hash)
err = OverwriteTransactions(db, txs, data.BaseTxId+1, &hash)
} else {
err = OverwriteTransactions(db, txs, data.BaseTxId, nil)
err = OverwriteTransactions(db, txs, data.BaseTxId+1, nil)
}
if err != nil {
return fmt.Errorf("failed to WriteTransactions: %w", err)
Expand Down
96 changes: 96 additions & 0 deletions core/rawdb/accessors_chain_zkevm_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package rawdb

import (
"testing"

libcommon "github.com/ledgerwatch/erigon-lib/common"
"github.com/ledgerwatch/erigon-lib/kv/dbutils"
"github.com/ledgerwatch/erigon-lib/kv/memdb"
"github.com/ledgerwatch/erigon/common/u256"
"github.com/ledgerwatch/erigon/core/types"
"github.com/ledgerwatch/erigon/crypto"
"github.com/ledgerwatch/erigon/params"
"github.com/ledgerwatch/erigon/rlp"
"github.com/stretchr/testify/require"
"golang.org/x/crypto/sha3"
)

func TestBodyStorageZkevm(t *testing.T) {
_, tx := memdb.NewTestTx(t)
require := require.New(t)

var testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
testAddr := crypto.PubkeyToAddress(testKey.PublicKey)

mustSign := func(tx types.Transaction, s types.Signer) types.Transaction {
r, err := types.SignTx(tx, s, testKey)
require.NoError(err)
return r
}

// prepare db so it works with our test
signer1 := types.MakeSigner(params.HermezMainnetChainConfig, 1, 1)
body := &types.Body{
Transactions: []types.Transaction{
mustSign(types.NewTransaction(1, testAddr, u256.Num1, 1, u256.Num1, nil), *signer1),
mustSign(types.NewTransaction(2, testAddr, u256.Num1, 2, u256.Num1, nil), *signer1),
},
Uncles: []*types.Header{{Extra: []byte("test header")}},
}

// Create a test body to move around the database and make sure it's really new
hasher := sha3.NewLegacyKeccak256()
_ = rlp.Encode(hasher, body)
hash := libcommon.BytesToHash(hasher.Sum(nil))

if entry := ReadCanonicalBodyWithTransactions(tx, hash, 0); entry != nil {
t.Fatalf("Non existent body returned: %v", entry)
}
require.NoError(WriteBody(tx, hash, 0, body))
if entry := ReadCanonicalBodyWithTransactions(tx, hash, 0); entry == nil {
t.Fatalf("Stored body not found")
} else if types.DeriveSha(types.Transactions(entry.Transactions)) != types.DeriveSha(types.Transactions(body.Transactions)) || types.CalcUncleHash(entry.Uncles) != types.CalcUncleHash(body.Uncles) {
t.Fatalf("Retrieved body mismatch: have %v, want %v", entry, body)
}
if entry := ReadBodyRLP(tx, hash, 0); entry == nil {
t.Fatalf("Stored body RLP not found")
} else {
hasher := sha3.NewLegacyKeccak256()
hasher.Write(entry)

if calc := libcommon.BytesToHash(hasher.Sum(nil)); calc != hash {
t.Fatalf("Retrieved RLP body mismatch: have %v, want %v", entry, body)
}
}

// zkevm check with overwriting transactions
bodyForStorage, err := ReadBodyForStorageByKey(tx, dbutils.BlockBodyKey(0, hash))
if err != nil {
t.Fatalf("ReadBodyForStorageByKey failed: %s", err)
}
// overwrite the transactions using the new code from zkevm
require.NoError(WriteBodyAndTransactions(tx, hash, 0, body.Transactions, bodyForStorage))

// now re-run the checks from above after reading the body again
if entry := ReadCanonicalBodyWithTransactions(tx, hash, 0); entry == nil {
t.Fatalf("Stored body not found")
} else if types.DeriveSha(types.Transactions(entry.Transactions)) != types.DeriveSha(types.Transactions(body.Transactions)) || types.CalcUncleHash(entry.Uncles) != types.CalcUncleHash(body.Uncles) {
t.Fatalf("Retrieved body mismatch: have %v, want %v", entry, body)
}
if entry := ReadBodyRLP(tx, hash, 0); entry == nil {
t.Fatalf("Stored body RLP not found")
} else {
hasher := sha3.NewLegacyKeccak256()
hasher.Write(entry)

if calc := libcommon.BytesToHash(hasher.Sum(nil)); calc != hash {
t.Fatalf("Retrieved RLP body mismatch: have %v, want %v", entry, body)
}
}

// Delete the body and verify the execution
DeleteBody(tx, hash, 0)
if entry := ReadCanonicalBodyWithTransactions(tx, hash, 0); entry != nil {
t.Fatalf("Deleted body returned: %v", entry)
}
}
10 changes: 3 additions & 7 deletions eth/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -2083,20 +2083,16 @@ func setBorDefaultTxPoolPriceLimit(chainConfig *chain.Config, config txpoolcfg.C
func l1ContractAddressCheck(ctx context.Context, cfg *ethconfig.Zk, l1BlockSyncer *syncer.L1Syncer) (bool, error) {
l1AddrRollup, err := l1BlockSyncer.CallRollupManager(ctx, &cfg.AddressZkevm)
if err != nil {
log.Warn("L1 contract address check failed (RollupManager)", "err", err)
return false, err
}
if l1AddrRollup != cfg.AddressRollup {
log.Warn("L1 contract address check failed (AddressRollup)", "expected", cfg.AddressRollup, "actual", l1AddrRollup)
return false, nil
}

l1AddrAdmin, err := l1BlockSyncer.CallAdmin(ctx, &cfg.AddressZkevm)
if err != nil {
return false, err
}
if l1AddrAdmin != cfg.AddressAdmin {
log.Warn("L1 contract address check failed (AddressAdmin)", "expected", cfg.AddressAdmin, "actual", l1AddrAdmin)
return false, nil
if cfg.AddressAdmin != (libcommon.Address{}) {
log.Warn("🚨 zkevm.address-admin configuration parameter is deprecated and it will be removed in upcoming releases")
}

l1AddrGerManager, err := l1BlockSyncer.CallGlobalExitRootManager(ctx, &cfg.AddressZkevm)
Expand Down
3 changes: 1 addition & 2 deletions hermezconfig-bali.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.sepolia.org

zkevm.address-sequencer: "0x9aeCf44E36f20DC407d1A580630c9a2419912dcB"
zkevm.address-zkevm: "0x89BA0Ed947a88fe43c22Ae305C0713eC8a7Eb361"
zkevm.address-admin: "0x229A5bDBb09d8555f9214F7a6784804999BA4E0D"
zkevm.address-rollup: "0xE2EF6215aDc132Df6913C8DD16487aBF118d1764"
zkevm.address-ger-manager: "0x2968D6d736178f8FE7393CC33C87f29D9C287e78"

Expand All @@ -32,4 +31,4 @@ http.api: [eth, debug, net, trace, web3, erigon, zkevm]
http.addr: 0.0.0.0
http.vhosts: any
http.corsdomain: any
ws: true
ws: true
1 change: 0 additions & 1 deletion hermezconfig-cardona.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.sepolia.org

zkevm.address-sequencer: "0x761d53b47334bee6612c0bd1467fb881435375b2"
zkevm.address-zkevm: "0xA13Ddb14437A8F34897131367ad3ca78416d6bCa"
zkevm.address-admin: "0xff6250d0e86a2465b0c1bf8e36409503d6a26963"
zkevm.address-rollup: "0x32d33d5137a7cffb54c5bf8371172bcec5f310ff"
zkevm.address-ger-manager: "0xAd1490c248c5d3CbAE399Fd529b79B42984277DF"

Expand Down
1 change: 0 additions & 1 deletion hermezconfig-dev.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.eu-central-1.gateway.fm/v4/ethereum/non-archival/s

zkevm.address-sequencer: "0xfa3b44587990f97ba8b6ba7e230a5f0e95d14b3d"
zkevm.address-zkevm: "0x31A6ae85297DD0EeBD66D7556941c33Bd41d565C"
zkevm.address-admin: "0x9EA9db6af0FEfd30d22F813bE32E4E17A3189E6a"
zkevm.address-rollup: "0x9fB0B4A5d4d60aaCfa8DC20B8DF5528Ab26848d3"
zkevm.address-ger-manager: "0x76216E45Bdd20022eEcC07999e50228d7829534B"

Expand Down
1 change: 0 additions & 1 deletion hermezconfig-estest-syncer.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: "https://rpc.eu-central-1.gateway.fm/v4/ethereum/non-archival/

zkevm.address-sequencer: "0x7597b12b953bffe1457d89e7e4fe3da149b45d88"
zkevm.address-zkevm: "0x9b2e7dC74B5a1Ecb894F0BAAe99a9F3CB60FC455"
zkevm.address-admin: "0xa0ee057f2746d3282a10b8cd26a351b5ca121e8d"
zkevm.address-rollup: "0x7DFba61a337741a3d2F99Cc73069c9D0De8aa933"
zkevm.address-ger-manager: "0x0FE6A2FcF455b9B8004fd625909857933d3c7494"

Expand Down
1 change: 0 additions & 1 deletion hermezconfig-mainnet-shadowfork.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.eu-central-1.gateway.fm/v4/ethereum/non-archival/s

zkevm.address-sequencer: ""
zkevm.address-zkevm: ""
zkevm.address-admin: "0x9fB0B4A5d4d60aaCfa8DC20B8DF5528Ab26848d3"
zkevm.address-rollup: "0x31A6ae85297DD0EeBD66D7556941c33Bd41d565C"
zkevm.address-ger-manager: "0x76216E45Bdd20022eEcC07999e50228d7829534B"

Expand Down
1 change: 0 additions & 1 deletion hermezconfig-mainnet.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.eth.gateway.fm/

zkevm.address-sequencer: "0x148Ee7dAF16574cD020aFa34CC658f8F3fbd2800"
zkevm.address-zkevm: "0x519E42c24163192Dca44CD3fBDCEBF6be9130987"
zkevm.address-admin: "0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
zkevm.address-rollup: "0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
zkevm.address-ger-manager: "0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb"

Expand Down
1 change: 0 additions & 1 deletion turbo/cli/flags_zkevm.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@ func ApplyFlagsForZkConfig(ctx *cli.Context, cfg *ethconfig.Config) {
}

checkFlag(utils.AddressSequencerFlag.Name, cfg.AddressSequencer)
checkFlag(utils.AddressAdminFlag.Name, cfg.AddressAdmin)
checkFlag(utils.AddressRollupFlag.Name, cfg.AddressRollup)
checkFlag(utils.AddressZkevmFlag.Name, cfg.AddressZkevm)
checkFlag(utils.AddressGerManagerFlag.Name, cfg.AddressGerManager)
Expand Down
2 changes: 1 addition & 1 deletion turbo/jsonrpc/eth_call.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func (api *APIImpl) EstimateGas(ctx context.Context, argsOrNil *ethapi2.CallArgs
}
engine := api.engine()

latestCanBlockNumber, latestCanHash, isLatest, err := rpchelper.GetCanonicalBlockNumber(latestNumOrHash, dbtx, api.filters) // DoCall cannot be executed on non-canonical blocks
latestCanBlockNumber, latestCanHash, isLatest, err := rpchelper.GetCanonicalBlockNumber(bNrOrHash, dbtx, api.filters) // DoCall cannot be executed on non-canonical blocks
if err != nil {
return 0, err
}
Expand Down
3 changes: 1 addition & 2 deletions xlayerconfig-mainnet.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.ankr.com/eth/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

zkevm.address-sequencer: "0xAF9d27ffe4d51eD54AC8eEc78f2785D7E11E5ab1"
zkevm.address-zkevm: "0x2B0ee28D4D51bC9aDde5E58E295873F61F4a0507"
zkevm.address-admin: "0x491619874b866c3cDB7C8553877da223525ead01"
zkevm.address-rollup: "0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
zkevm.address-ger-manager: "0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb"

Expand All @@ -23,4 +22,4 @@ zkevm.datastream-version: 3

http.api: [eth, debug, net, trace, web3, erigon, zkevm]
http.addr: 0.0.0.0
http.port: 8545
http.port: 8545
1 change: 0 additions & 1 deletion xlayerconfig-testnet.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: https://rpc.ankr.com/eth_sepolia/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

zkevm.address-sequencer: "0xD6DdA5AA7749142B7fDa3Fe4662C9f346101B8A6"
zkevm.address-zkevm: "0x01469dACfDDA885D68Ff0f8628F2629c14F95a20"
zkevm.address-admin: "0xC432168eF74A83c6E6C76f2c1b42F875E1A223CD"
zkevm.address-rollup: "0x6662621411A8DACC3cA7049C8BddABaa9a999ce3"
zkevm.address-ger-manager: "0x66E61bA00F58b857A9DD2C500F3aBc424A46BD20"

Expand Down
17 changes: 9 additions & 8 deletions zk/stages/stage_batches.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,8 @@ LOOP:
return err
}

if entry.BatchNumber != dbBatchNum {
// if the bath number mismatches, it means that we need to trigger an unwinding of blocks
if entry.BatchNumber > dbBatchNum {
// if the batch number is higher than the one we know about, it means that we need to trigger an unwinding of blocks
log.Warn(fmt.Sprintf("[%s] Batch number mismatch detected. Triggering unwind...", logPrefix),
"block", entry.L2BlockNumber, "ds batch", entry.BatchNumber, "db batch", dbBatchNum)
if err := rollback(logPrefix, eriDb, hermezDb, dsQueryClient, entry.L2BlockNumber, tx, u); err != nil {
Expand Down Expand Up @@ -406,7 +406,13 @@ LOOP:

// skip if we already have this block
if entry.L2BlockNumber < lastBlockHeight+1 {
log.Warn(fmt.Sprintf("[%s] Unwinding to block %d", logPrefix, entry.L2BlockNumber))
log.Warn(fmt.Sprintf("[%s] Skipping block %d, already processed", logPrefix, entry.L2BlockNumber))
continue
}

// check for sequential block numbers
if entry.L2BlockNumber > lastBlockHeight+1 {
log.Warn(fmt.Sprintf("[%s] Stream skipped ahead, unwinding to block %d", logPrefix, entry.L2BlockNumber))
badBlock, err := eriDb.ReadCanonicalHash(entry.L2BlockNumber)
if err != nil {
return fmt.Errorf("failed to get bad block: %v", err)
Expand All @@ -415,11 +421,6 @@ LOOP:
return nil
}

// check for sequential block numbers
if entry.L2BlockNumber != lastBlockHeight+1 {
return fmt.Errorf("block number is not sequential, expected %d, got %d", lastBlockHeight+1, entry.L2BlockNumber)
}

// batch boundary - record the highest hashable block number (last block in last full batch)
if entry.BatchNumber > highestSeenBatchNo {
highestHashableL2BlockNo = entry.L2BlockNumber - 1
Expand Down
3 changes: 3 additions & 0 deletions zk/stages/stage_sequence_execute_transactions.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ func getNextPoolTransactions(ctx context.Context, cfg SequenceBlockCfg, executio

gasLimit := utils.GetBlockGasLimitForFork(forkId)

ti := utils.StartTimer("txpool", "get-transactions")
defer ti.LogTimer()

if err := cfg.txPoolDb.View(ctx, func(poolTx kv.Tx) error {
slots := types2.TxsRlp{}
if allConditionsOk, _, err = cfg.txPool.YieldBest(cfg.yieldSize, &slots, poolTx, executionAt, gasLimit, 0, alreadyYielded); err != nil {
Expand Down
1 change: 0 additions & 1 deletion zk/tests/nightly-l1-recovery/network5-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ zkevm.l1-rpc-url: "http://cache:6969?endpoint=https://rpc.sepolia.org&chainid=82

zkevm.address-sequencer: "0xC9c0DDBAD778A58ac078975Cc7847dD1DEaF2B0A"
zkevm.address-zkevm: "0x1FAC2D008A7987ED9Eb3eBCd2d95791cC341AB6f"
zkevm.address-admin: "0x406C6e412895f32573442365d0BA5027ae369cC7"
zkevm.address-rollup: "0xBFA50869D87f5Fdee35F60ab31Dc5a347ab6d7f4"
zkevm.address-ger-manager: "0x3134D060b2b2B47477e8f75537B2047606c5a8cc"

Expand Down
1 change: 0 additions & 1 deletion zk/tests/nightly-l1-recovery/network5-sync-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: "http://cache:6969?endpoint=https://rpc.sepolia.org&chainid=82

zkevm.address-sequencer: "0xC9c0DDBAD778A58ac078975Cc7847dD1DEaF2B0A"
zkevm.address-zkevm: "0x1FAC2D008A7987ED9Eb3eBCd2d95791cC341AB6f"
zkevm.address-admin: "0x406C6e412895f32573442365d0BA5027ae369cC7"
zkevm.address-rollup: "0xBFA50869D87f5Fdee35F60ab31Dc5a347ab6d7f4"
zkevm.address-ger-manager: "0x3134D060b2b2B47477e8f75537B2047606c5a8cc"

Expand Down
1 change: 0 additions & 1 deletion zk/tests/nightly-l1-recovery/network8-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: "http://cache:6969?endpoint=https://rpc.sepolia.org&chainid=77

zkevm.address-sequencer: "0x153724F17B1eb206e31CAbA82f6b45E865879D94"
zkevm.address-zkevm: "0xA24686d989DCd70fBb4D8311694820d74872f061"
zkevm.address-admin: "0xe859276098f208D003ca6904C6cC26629Ee364Ce"
zkevm.address-rollup: "0xeE6F5B532b67ee594B372f7a3eBD276A45Ea6777"
zkevm.address-ger-manager: "0x33ff0546a9ce00D9b2B43Fe52Eab336D919eAD36"

Expand Down
1 change: 0 additions & 1 deletion zk/tests/nightly-l1-recovery/network8-sync-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: "http://cache:6969?endpoint=https://rpc.sepolia.org&chainid=77

zkevm.address-sequencer: "0x153724F17B1eb206e31CAbA82f6b45E865879D94"
zkevm.address-zkevm: "0xA24686d989DCd70fBb4D8311694820d74872f061"
zkevm.address-admin: "0xe859276098f208D003ca6904C6cC26629Ee364Ce"
zkevm.address-rollup: "0xeE6F5B532b67ee594B372f7a3eBD276A45Ea6777"
zkevm.address-ger-manager: "0x33ff0546a9ce00D9b2B43Fe52Eab336D919eAD36"

Expand Down
1 change: 0 additions & 1 deletion zk/tests/unwinds/config/dynamic-integration8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ zkevm.l1-rpc-url: "https://rpc.eu-central-1.gateway.fm/v4/ethereum/non-archival/

zkevm.address-sequencer: "0x153724F17B1eb206e31CAbA82f6b45E865879D94"
zkevm.address-zkevm: "0xA24686d989DCd70fBb4D8311694820d74872f061"
zkevm.address-admin: "0xe859276098f208D003ca6904C6cC26629Ee364Ce"
zkevm.address-rollup: "0xeE6F5B532b67ee594B372f7a3eBD276A45Ea6777"
zkevm.address-ger-manager: "0x33ff0546a9ce00D9b2B43Fe52Eab336D919eAD36"

Expand Down

0 comments on commit 32d0174

Please sign in to comment.