github.com/prysmaticlabs/prysm@v1.4.4/slasher/detection/testing/utils.go (about)

     1  // Package testing includes useful helpers for slasher-related
     2  // unit tests.
     3  package testing
     4  
     5  import (
     6  	types "github.com/prysmaticlabs/eth2-types"
     7  	ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
     8  	"github.com/prysmaticlabs/prysm/shared/rand"
     9  )
    10  
    11  // SignedBlockHeader given slot, proposer index this function generates signed block header.
    12  // with random bytes as its signature.
    13  func SignedBlockHeader(slot types.Slot, proposerIdx types.ValidatorIndex) (*ethpb.SignedBeaconBlockHeader, error) {
    14  	sig, err := genRandomByteArray(96)
    15  	if err != nil {
    16  		return nil, err
    17  	}
    18  	root := [32]byte{1, 2, 3}
    19  	return &ethpb.SignedBeaconBlockHeader{
    20  		Header: &ethpb.BeaconBlockHeader{
    21  			ProposerIndex: proposerIdx,
    22  			Slot:          slot,
    23  			ParentRoot:    root[:],
    24  			StateRoot:     root[:],
    25  			BodyRoot:      root[:],
    26  		},
    27  		Signature: sig,
    28  	}, nil
    29  }
    30  
    31  // BlockHeader given slot, proposer index this function generates block header.
    32  func BlockHeader(slot types.Slot, proposerIdx types.ValidatorIndex) (*ethpb.BeaconBlockHeader, error) {
    33  	root := [32]byte{1, 2, 3}
    34  	return &ethpb.BeaconBlockHeader{
    35  		ProposerIndex: proposerIdx,
    36  		Slot:          slot,
    37  		ParentRoot:    root[:],
    38  		StateRoot:     root[:],
    39  		BodyRoot:      root[:],
    40  	}, nil
    41  }
    42  
    43  func genRandomByteArray(length int) ([]byte, error) {
    44  	blk := make([]byte, length)
    45  	randGen := rand.NewDeterministicGenerator()
    46  	_, err := randGen.Read(blk)
    47  	return blk, err
    48  }