code: function merkle (values, digestFn) {
    if (!Array.isArray(values)) throw TypeError('Expected values Array')
    if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
    if (values.length === 1) return values.concat()
  
    var levels = [values]
    var level = values
  
    do {
      level = _derive(level, digestFn)
      levels.push(level)
    } while (level.length > 1)
  
    return [].concat.apply([], levels)
  }
docs: returns the merkle tree