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  }