2020-04-28 20:55:49 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"io/ioutil"
|
|
|
|
"log"
|
|
|
|
|
|
|
|
"github.com/prysmaticlabs/go-ssz"
|
|
|
|
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
|
|
|
|
"github.com/prysmaticlabs/prysm/shared/roughtime"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
genesisTime = flag.Uint64("genesis-time", 0, "Unix timestamp used as the genesis time in the generated genesis state (defaults to now)")
|
|
|
|
inputSSZState = flag.String("input-ssz-state", "", "Input filename of the SSZ marshaling of the genesis state")
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
flag.Parse()
|
|
|
|
if *inputSSZState == "" {
|
|
|
|
log.Fatal("Expected --input-ssz-state")
|
|
|
|
}
|
|
|
|
|
|
|
|
beaconState := &pb.BeaconState{}
|
|
|
|
if err := unmarshalFile(*inputSSZState, beaconState); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
if *genesisTime == 0 {
|
|
|
|
log.Print("No --genesis-time specified, defaulting to now")
|
|
|
|
beaconState.GenesisTime = uint64(roughtime.Now().Unix())
|
|
|
|
} else {
|
|
|
|
beaconState.GenesisTime = *genesisTime
|
|
|
|
}
|
|
|
|
|
2020-06-05 13:48:40 +00:00
|
|
|
encodedState, err := beaconState.MarshalSSZ()
|
2020-04-28 20:55:49 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("Could not ssz marshal the beacon state: %v", err)
|
|
|
|
}
|
|
|
|
if err := ioutil.WriteFile(*inputSSZState, encodedState, 0644); err != nil {
|
|
|
|
log.Fatalf("Could not write encoded beacon state to file: %v", err)
|
|
|
|
}
|
|
|
|
log.Printf("Done writing to %s", *inputSSZState)
|
|
|
|
}
|
|
|
|
|
|
|
|
func unmarshalFile(fPath string, data interface{}) error {
|
|
|
|
rawFile, err := ioutil.ReadFile(fPath)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return ssz.Unmarshal(rawFile, data)
|
|
|
|
}
|