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 := ðpb.SignedBeaconBlock{ 15 Block: ðpb.BeaconBlock{ 16 ParentRoot: zeroHash, 17 StateRoot: bytesutil.PadTo(stateRoot, 32), 18 Body: ðpb.BeaconBlockBody{ 19 RandaoReveal: make([]byte, 96), 20 Eth1Data: ðpb.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 }