Extract state from db (#3889)

This commit is contained in:
Preston Van Loon
2019-10-30 19:05:37 -04:00
committed by GitHub
parent 5f79abd828
commit b2b48c2a4d
4 changed files with 79 additions and 2 deletions

View File

@@ -0,0 +1,20 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
go_library(
name = "go_default_library",
srcs = ["main.go"],
importpath = "github.com/prysmaticlabs/prysm/tools/extractor",
visibility = ["//visibility:public"],
deps = [
"//beacon-chain/core/state/interop:go_default_library",
"//beacon-chain/db:go_default_library",
"//beacon-chain/db/filters:go_default_library",
"//shared/featureconfig:go_default_library",
],
)
go_binary(
name = "extractor",
embed = [":go_default_library"],
visibility = ["//visibility:public"],
)

51
tools/extractor/main.go Normal file
View File

@@ -0,0 +1,51 @@
package main
import (
"context"
"flag"
"fmt"
"github.com/prysmaticlabs/prysm/beacon-chain/core/state/interop"
"github.com/prysmaticlabs/prysm/beacon-chain/db"
"github.com/prysmaticlabs/prysm/beacon-chain/db/filters"
"github.com/prysmaticlabs/prysm/shared/featureconfig"
)
var (
// Required fields
datadir = flag.String("datadir", "", "Path to data directory.")
state = flag.Uint("state", 0, "Extract state at this slot.")
)
func init() {
fc := featureconfig.Get()
fc.WriteSSZStateTransitions = true
featureconfig.Init(fc)
}
func main() {
flag.Parse()
fmt.Println("Starting process...")
d, err := db.NewDB(*datadir)
if err != nil {
panic(err)
}
ctx := context.Background()
slot := uint64(*state)
roots, err := d.BlockRoots(ctx, filters.NewFilter().SetStartSlot(slot).SetEndSlot(slot))
if err != nil {
panic(err)
}
if len(roots) != 1 {
fmt.Printf("Expected 1 block root for slot %d, got %d roots", *state, len(roots))
}
s, err := d.State(ctx, roots[0])
if err != nil {
panic(err)
}
interop.WriteStateToDisk(s)
fmt.Println("done")
}