code: def merkleroot(hashes):
      
      # XXX TEMPORARY -- MUST REVIEW and possibly CHANGE
      # The idea here is that the UTXO SET would be empty and this function
      # would be invoked to compute the merkle root, and since there is nothing,
      # i.e. an empty list, then the hash of the empty string is returned.
      # This seems too easy but maybe that is good enough? TO REVIEW!
      if not hashes:
          return sha3_256(b'').hexdigest()
      # XXX END TEMPORARY -- MUST REVIEW ...
      if len(hashes) == 1:
          return hexlify(hashes[0]).decode()
      if len(hashes) % 2 == 1:
          hashes.append(hashes[-1])
      parent_hashes = [
          sha3_256(hashes[i] + hashes[i+1]).digest()
          for i in range(0, len(hashes)-1, 2)
      ]
      return merkleroot(parent_hashes)
docs: Computes the merkle root for a given list.
  
      Args:
          hashes (:obj:`list` of :obj:`bytes`): The leaves of the tree.
  
      Returns:
          str: Merkle root in hexadecimal form.