Skip to content

Commit

Permalink
Merge pull request #5589 from ethereum-optimism/feat/check-migration-…
Browse files Browse the repository at this point in the history
…quick

op-chain-ops: check-migration-quick
  • Loading branch information
OptimismBot committed May 3, 2023
2 parents 0706f72 + dbb9204 commit 6d134fc
Showing 1 changed file with 85 additions and 0 deletions.
85 changes: 85 additions & 0 deletions op-chain-ops/cmd/check-migration-quick/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package main

import (
"bytes"
"fmt"
"os"

"github.com/mattn/go-isatty"
"github.com/urfave/cli"

"github.com/ethereum-optimism/optimism/op-chain-ops/db"
"github.com/ethereum-optimism/optimism/op-chain-ops/genesis"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/log"
)

func main() {
log.Root().SetHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(isatty.IsTerminal(os.Stderr.Fd()))))

app := &cli.App{
Name: "check-migration-quick",
Usage: "Quick check for a migrated database that only checks the header magic in the extradata",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "db-path",
Usage: "Path to database",
Required: true,
},
&cli.IntFlag{
Name: "db-cache",
Usage: "LevelDB cache size in mb",
Value: 1024,
},
&cli.IntFlag{
Name: "db-handles",
Usage: "LevelDB number of handles",
Value: 60,
},
},
Action: func(ctx *cli.Context) error {
dbCache := ctx.Int("db-cache")
dbHandles := ctx.Int("db-handles")

ldb, err := db.Open(ctx.String("db-path"), dbCache, dbHandles)
if err != nil {
return err
}

hash := rawdb.ReadHeadHeaderHash(ldb)
log.Info("Reading chain tip from database", "hash", hash)
num := rawdb.ReadHeaderNumber(ldb, hash)
if num == nil {
return fmt.Errorf("cannot find header number for %s", hash)
}

header := rawdb.ReadHeader(ldb, hash, *num)
log.Info("Read header from database", "number", *num)

log.Info(
"Header info",
"parentHash", header.ParentHash.Hex(),
"root", header.Root.Hex(),
"number", header.Number,
"gasLimit", header.GasLimit,
"time", header.Time,
"extra", hexutil.Encode(header.Extra),
)

if !bytes.Equal(header.Extra, genesis.BedrockTransitionBlockExtraData) {
return fmt.Errorf("expected extra data to be %x, but got %x", genesis.BedrockTransitionBlockExtraData, header.Extra)
}

if err := ldb.Close(); err != nil {
return err
}

return nil
},
}

if err := app.Run(os.Args); err != nil {
log.Crit("error in migration", "err", err)
}
}

0 comments on commit 6d134fc

Please sign in to comment.