Write a Python script to parse, clean, and aggregate a mock stream of cryptocurrency transaction logs.
Each log is a pipe-delimited string with the format timestamp|transaction_id|asset|side|amount|price|status. Implement aggregate_transactions(logs) to ignore malformed records, normalize asset and status casing, accept only positive numeric amounts and prices with buy or sell sides, include only completed transactions, and ignore duplicate valid transaction IDs. Return a dictionary keyed by uppercase asset, with volume and notional totals rounded to 8 decimal places. Output keys must be inserted in sorted asset order.
def aggregate_transactions(logs):