github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/core/blocks/genesis.go (about)

     1  // Package blocks contains block processing libraries according to
     2  // the Ethereum beacon chain spec.
     3  package blocks
     4  
     5  import (
     6  	ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
     7  	"github.com/prysmaticlabs/prysm/shared/bytesutil"
     8  	"github.com/prysmaticlabs/prysm/shared/params"
     9  )
    10  
    11  // NewGenesisBlock returns the canonical, genesis block for the beacon chain protocol.
    12  func NewGenesisBlock(stateRoot []byte) *ethpb.SignedBeaconBlock {
    13  	zeroHash := params.BeaconConfig().ZeroHash[:]
    14  	block := &ethpb.SignedBeaconBlock{
    15  		Block: &ethpb.BeaconBlock{
    16  			ParentRoot: zeroHash,
    17  			StateRoot:  bytesutil.PadTo(stateRoot, 32),
    18  			Body: &ethpb.BeaconBlockBody{
    19  				RandaoReveal: make([]byte, 96),
    20  				Eth1Data: &ethpb.Eth1Data{
    21  					DepositRoot: make([]byte, 32),
    22  					BlockHash:   make([]byte, 32),
    23  				},
    24  				Graffiti: make([]byte, 32),
    25  			},
    26  		},
    27  		Signature: params.BeaconConfig().EmptySignature[:],
    28  	}
    29  	return block
    30  }