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 }