prysm-pulse/beacon-chain/state/genesis/genesis.go

40 lines
931 B
Go
Raw Normal View History

package genesis
import (
_ "embed"
"github.com/golang/snappy"
state "github.com/prysmaticlabs/prysm/beacon-chain/state/stateV0"
pbp2p "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/params"
)
var (
//go:embed mainnet.ssz.snappy
mainnetRawSSZCompressed []byte // 1.8Mb
)
// State returns a copy of the genesis state from a hardcoded value.
func State(name string) (*state.BeaconState, error) {
switch name {
case params.ConfigNames[params.Mainnet]:
return load(mainnetRawSSZCompressed)
default:
// No state found.
return nil, nil
}
}
// load a compressed ssz state file into a beacon state struct.
func load(b []byte) (*state.BeaconState, error) {
st := &pbp2p.BeaconState{}
b, err := snappy.Decode(nil /*dst*/, b)
if err != nil {
return nil, err
}
if err := st.UnmarshalSSZ(b); err != nil {
return nil, err
}
return state.InitializeFromProtoUnsafe(st)
}