github.com/prysmaticlabs/prysm@v1.4.4/tools/interop/export-genesis/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "os" 7 8 "github.com/prysmaticlabs/prysm/beacon-chain/db" 9 "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" 10 "github.com/prysmaticlabs/prysm/shared/fileutil" 11 ) 12 13 // A basic tool to extract genesis.ssz from existing beaconchain.db. 14 // ex: 15 // bazel run //tools/interop/export-genesis:export-genesis -- /tmp/data/beaconchaindata /tmp/genesis.ssz 16 func main() { 17 if len(os.Args) < 3 { 18 fmt.Println("Usage: ./main /path/to/datadir /path/to/output/genesis.ssz") 19 os.Exit(1) 20 } 21 22 fmt.Printf("Reading db at %s and writing ssz output to %s.\n", os.Args[1], os.Args[2]) 23 24 d, err := db.NewDB(context.Background(), os.Args[1], &kv.Config{}) 25 if err != nil { 26 panic(err) 27 } 28 defer func() { 29 if err := d.Close(); err != nil { 30 panic(err) 31 } 32 }() 33 gs, err := d.GenesisState(context.Background()) 34 if err != nil { 35 panic(err) 36 } 37 if gs == nil || gs.IsNil() { 38 panic("nil genesis state") 39 } 40 b, err := gs.MarshalSSZ() 41 if err != nil { 42 panic(err) 43 } 44 if err := fileutil.WriteFile(os.Args[2], b); err != nil { 45 panic(err) 46 } 47 fmt.Println("done") 48 }