mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 21:38:05 -05:00
Compare commits
3 Commits
v5.0.2
...
genesis-fr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d95522fa3 | ||
|
|
d8cfcf2442 | ||
|
|
0b4f9089c0 |
@@ -18,6 +18,7 @@ go_library(
|
||||
"//beacon-chain:__subpackages__",
|
||||
"//testing/spectest:__subpackages__",
|
||||
"//testing/util:__pkg__",
|
||||
"//tools:__subpackages__",
|
||||
"//validator/client:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
|
||||
@@ -7,6 +7,7 @@ go_library(
|
||||
visibility = [
|
||||
"//beacon-chain:__subpackages__",
|
||||
"//testing/spectest:__subpackages__",
|
||||
"//tools:__subpackages__",
|
||||
"//validator/client:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
|
||||
@@ -40,6 +40,7 @@ go_library(
|
||||
"//proto/migration:__subpackages__",
|
||||
"//testing/spectest:__subpackages__",
|
||||
"//testing/util:__pkg__",
|
||||
"//tools:__subpackages__",
|
||||
],
|
||||
deps = [
|
||||
"//beacon-chain/state:go_default_library",
|
||||
|
||||
@@ -40,8 +40,7 @@ go_library(
|
||||
"//testing/benchmark:__pkg__",
|
||||
"//testing/spectest:__subpackages__",
|
||||
"//testing/util:__pkg__",
|
||||
"//tools/benchmark-files-gen:__pkg__",
|
||||
"//tools/pcli:__pkg__",
|
||||
"//tools:__subpackages__",
|
||||
],
|
||||
deps = [
|
||||
"//beacon-chain/state:go_default_library",
|
||||
|
||||
@@ -10,10 +10,15 @@ go_library(
|
||||
importpath = "github.com/prysmaticlabs/prysm/tools/genesis-state-gen",
|
||||
visibility = ["//visibility:private"],
|
||||
deps = [
|
||||
"//beacon-chain/core/altair:go_default_library",
|
||||
"//beacon-chain/core/execution:go_default_library",
|
||||
"//beacon-chain/state/state-native/v2:go_default_library",
|
||||
"//beacon-chain/state/v1:go_default_library",
|
||||
"//config/params:go_default_library",
|
||||
"//io/file:go_default_library",
|
||||
"//proto/prysm/v1alpha1:go_default_library",
|
||||
"//runtime/interop:go_default_library",
|
||||
"@com_github_ferranbt_fastssz//:go_default_library",
|
||||
"@com_github_ghodss_yaml//:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -11,7 +11,12 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
ssz "github.com/ferranbt/fastssz"
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/altair"
|
||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/execution"
|
||||
v2 "github.com/prysmaticlabs/prysm/beacon-chain/state/state-native/v2"
|
||||
v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
|
||||
"github.com/prysmaticlabs/prysm/config/params"
|
||||
"github.com/prysmaticlabs/prysm/io/file"
|
||||
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
||||
@@ -40,6 +45,13 @@ var (
|
||||
sszOutputFile = flag.String("output-ssz", "", "Output filename of the SSZ marshaling of the generated genesis state")
|
||||
yamlOutputFile = flag.String("output-yaml", "", "Output filename of the YAML marshaling of the generated genesis state")
|
||||
jsonOutputFile = flag.String("output-json", "", "Output filename of the JSON marshaling of the generated genesis state")
|
||||
forkName = flag.String("fork", "phase0", "Fork name to use for genesis state generation")
|
||||
)
|
||||
|
||||
const (
|
||||
phase0Fork = iota
|
||||
altairFork
|
||||
bellatrixFork
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -54,7 +66,7 @@ func main() {
|
||||
if !*useMainnetConfig {
|
||||
params.OverrideBeaconConfig(params.MinimalSpecConfig())
|
||||
}
|
||||
var genesisState *ethpb.BeaconState
|
||||
var phase0Genesis *ethpb.BeaconState
|
||||
var err error
|
||||
if *depositJSONFile != "" {
|
||||
inputFile := *depositJSONFile
|
||||
@@ -74,7 +86,7 @@ func main() {
|
||||
}
|
||||
}()
|
||||
log.Printf("Generating genesis state from input JSON deposit data %s", inputFile)
|
||||
genesisState, err = genesisStateFromJSONValidators(inputJSON, *genesisTime)
|
||||
phase0Genesis, err = genesisStateFromJSONValidators(inputJSON, *genesisTime)
|
||||
if err != nil {
|
||||
log.Printf("Could not generate genesis beacon state: %v", err)
|
||||
return
|
||||
@@ -85,13 +97,66 @@ func main() {
|
||||
return
|
||||
}
|
||||
// If no JSON input is specified, we create the state deterministically from interop keys.
|
||||
genesisState, _, err = interop.GenerateGenesisState(context.Background(), *genesisTime, uint64(*numValidators))
|
||||
phase0Genesis, _, err = interop.GenerateGenesisState(context.Background(), *genesisTime, uint64(*numValidators))
|
||||
if err != nil {
|
||||
log.Printf("Could not generate genesis beacon state: %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Upgrade genesis state.
|
||||
var genesisState ssz.Marshaler
|
||||
ctx := context.Background()
|
||||
var fork int
|
||||
switch *forkName {
|
||||
case "phase0":
|
||||
fork = phase0Fork
|
||||
case "altair":
|
||||
fork = altairFork
|
||||
case "bellatrix":
|
||||
fork = bellatrixFork
|
||||
default:
|
||||
log.Fatalf("Unknown fork name %s", *forkName)
|
||||
}
|
||||
if *forkName != "phase0" {
|
||||
log.Printf("Upgrading genesis state to fork %s.", *forkName)
|
||||
} else {
|
||||
genesisState = phase0Genesis
|
||||
}
|
||||
if fork >= altairFork {
|
||||
wrappedGenesisState, err := v1.InitializeFromProtoUnsafe(phase0Genesis)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not initialize genesis state: %v", err)
|
||||
return
|
||||
}
|
||||
altairState, err := altair.UpgradeToAltair(ctx, wrappedGenesisState)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not upgrade genesis state: %v", err)
|
||||
return
|
||||
}
|
||||
var ok bool
|
||||
genesisState, ok = altairState.InnerStateUnsafe().(*ethpb.BeaconStateAltair)
|
||||
if !ok {
|
||||
log.Fatalf("Could not convert to altair state")
|
||||
return
|
||||
}
|
||||
}
|
||||
if fork >= bellatrixFork {
|
||||
altairState, err := v2.InitializeFromProtoUnsafe(genesisState.(*ethpb.BeaconStateAltair))
|
||||
if err != nil {
|
||||
log.Fatalf("Could not initialize genesis state: %v", err)
|
||||
}
|
||||
bellatrixState, err := execution.UpgradeToBellatrix(ctx, altairState)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not upgrade genesis state: %v", err)
|
||||
}
|
||||
var ok bool
|
||||
genesisState, ok = bellatrixState.InnerStateUnsafe().(*ethpb.BeaconStateBellatrix)
|
||||
if !ok {
|
||||
log.Fatalf("Could not convert to bellatrix state")
|
||||
}
|
||||
}
|
||||
|
||||
if *sszOutputFile != "" {
|
||||
encodedState, err := genesisState.MarshalSSZ()
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user