func NewMerkle(hashs [][]byte) *Merkle {
	n := len(hashs)
	depth := int(math.Ceil(math.Log2(float64(n))))
	pow2 := int(math.Pow(2, float64(depth)))
	levels := make([][][]byte, depth+1)
	levels[depth] = make([][]byte, pow2)
	copy(levels[depth], hashs)
	for i := depth; i > 0; i-- {
		offset := 0
		level := levels[i]
		next := make([][]byte, len(level)/2)
		for j := 0; j < len(level); j += 2 {
			left := level[j]
			right := level[j+1]
			if right == nil {
				next[offset] = merkleNode(left, left)
				break
			} else {
				next[offset] = merkleNode(left, right)
			}
			offset++
		}
		levels[i-1] = next
	}
	return &Merkle{levels: levels}
}
NewMerkle -- create new Merkle.
children nodes.  A diagram depicting how this works for bitcoin transactions
where h(x) is a double sha256 follows:

root = h1234 = h(h12 + h34)
/                           \
h12 = h(h1 + h2)            h34 = h(h3 + h4)
/            \              /            \
h1 = h(tx1)  h2 = h(tx2)    h3 = h(tx3)  h4 = h(tx4)

If the right is nil(the size is not power of 2), hashed with itself.
package xcrypto
import (
	"bytes"
	"math"
)
const (
	merkleHashSize = 32
	positionLeft   = "left"
	positionRight  = "right"
)
type Node struct {
	Hash     []byte
	Parent   []byte
	Position string
}
type Merkle struct {
	levels [][][]byte
}