mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 23:18:15 -05:00
Extract state from db (#3889)
This commit is contained in:
@@ -8,7 +8,10 @@ go_library(
|
||||
"write_state_to_disk.go",
|
||||
],
|
||||
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/core/state/interop",
|
||||
visibility = ["//beacon-chain:__subpackages__"],
|
||||
visibility = [
|
||||
"//beacon-chain:__subpackages__",
|
||||
"//tools:__subpackages__",
|
||||
],
|
||||
deps = [
|
||||
"//proto/beacon/p2p/v1:go_default_library",
|
||||
"//proto/eth/v1alpha1:go_default_library",
|
||||
|
||||
@@ -4,7 +4,10 @@ go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["filter.go"],
|
||||
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/db/filters",
|
||||
visibility = ["//beacon-chain:__subpackages__"],
|
||||
visibility = [
|
||||
"//beacon-chain:__subpackages__",
|
||||
"//tools:__subpackages__",
|
||||
],
|
||||
)
|
||||
|
||||
go_test(
|
||||
|
||||
20
tools/extractor/BUILD.bazel
Normal file
20
tools/extractor/BUILD.bazel
Normal 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
51
tools/extractor/main.go
Normal 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")
|
||||
}
|
||||
Reference in New Issue
Block a user