github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/consensus/bor/merkle.go (about)

     1  package bor
     2  
     3  func appendBytes32(data ...[]byte) []byte {
     4  	var result []byte
     5  
     6  	for _, v := range data {
     7  		paddedV := convertTo32(v)
     8  		result = append(result, paddedV[:]...)
     9  	}
    10  
    11  	return result
    12  }
    13  
    14  func nextPowerOfTwo(n uint64) uint64 {
    15  	if n == 0 {
    16  		return 1
    17  	}
    18  	// http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
    19  	n--
    20  	n |= n >> 1
    21  	n |= n >> 2
    22  	n |= n >> 4
    23  	n |= n >> 8
    24  	n |= n >> 16
    25  	n |= n >> 32
    26  	n++
    27  
    28  	return n
    29  }
    30  
    31  func convertTo32(input []byte) (output [32]byte) {
    32  	l := len(input)
    33  	if l > 32 || l == 0 {
    34  		return
    35  	}
    36  
    37  	copy(output[32-l:], input[:])
    38  
    39  	return
    40  }
    41  
    42  func convert(input [][32]byte) [][]byte {
    43  	output := make([][]byte, 0, len(input))
    44  
    45  	for _, in := range input {
    46  		newInput := make([]byte, len(in[:]))
    47  		copy(newInput, in[:])
    48  		output = append(output, newInput)
    49  	}
    50  
    51  	return output
    52  }