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 }