github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/state/genesis/genesis.go (about) 1 package genesis 2 3 import ( 4 _ "embed" 5 6 "github.com/golang/snappy" 7 state "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" 8 pbp2p "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" 9 "github.com/prysmaticlabs/prysm/shared/params" 10 ) 11 12 var ( 13 //go:embed mainnet.ssz.snappy 14 mainnetRawSSZCompressed []byte // 1.8Mb 15 ) 16 17 // State returns a copy of the genesis state from a hardcoded value. 18 func State(name string) (*state.BeaconState, error) { 19 switch name { 20 case params.ConfigNames[params.Mainnet]: 21 return load(mainnetRawSSZCompressed) 22 default: 23 // No state found. 24 return nil, nil 25 } 26 } 27 28 // load a compressed ssz state file into a beacon state struct. 29 func load(b []byte) (*state.BeaconState, error) { 30 st := &pbp2p.BeaconState{} 31 b, err := snappy.Decode(nil /*dst*/, b) 32 if err != nil { 33 return nil, err 34 } 35 if err := st.UnmarshalSSZ(b); err != nil { 36 return nil, err 37 } 38 return state.InitializeFromProtoUnsafe(st) 39 }