github.com/ImPedro29/bor@v0.2.7/consensus/bor/merkle.go (about)

     1  package bor
     2  
     3  func appendBytes32(data ...[]byte) []byte {
     4  	var result []byte
     5  	for _, v := range data {
     6  		paddedV, err := convertTo32(v)
     7  		if err == nil {
     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  	return n
    28  }
    29  
    30  func convertTo32(input []byte) (output [32]byte, err error) {
    31  	l := len(input)
    32  	if l > 32 || l == 0 {
    33  		return
    34  	}
    35  	copy(output[32-l:], input[:])
    36  	return
    37  }
    38  
    39  func convert(input []([32]byte)) [][]byte {
    40  	var output [][]byte
    41  	for _, in := range input {
    42  		newInput := make([]byte, len(in[:]))
    43  		copy(newInput, in[:])
    44  		output = append(output, newInput)
    45  
    46  	}
    47  	return output
    48  }