def tx_parse(raw_tx, blockchain='bitcoin', **blockchain_opts):
    """
    Parse a raw transaction, based on the type of blockchain it's from
    Returns a tx dict on success (see get_virtual_transactions)
    Raise ValueError for unknown blockchain
    Raise some other exception for invalid raw_tx (implementation-specific)
    """
    if blockchain == 'bitcoin':
        return btc_tx_deserialize(raw_tx, **blockchain_opts)
    else:
        raise ValueError("Unknown blockchain {}".format(blockchain))