Transaction inputs involve previous outputs on the chain. If in place of recording these subsequent inputs by value, they were instead only referenced in transaction records, then perhaps their byte size could be reduced significantly.
They already are referred to by reference, not by value. The reference is known as the outpoint, which is the hash of the transaction containing the output and the 0-based index of the output. This is a reference to where a node can find the output, it is not the output itself.
For some reasons, other than reducing tr size, I like the idea of using references to blockchain data instead of the real addresses.
There is no such thing as "real addresses" and Bitcoin already works by using references in many places.
You should be more cautious about calling transaction input (the
outpoint field) a reference, technically it is not.
A reference should encompass a valuable information about an external event/data which is not the case with current bitcoin implementation of input addresses. let's examine it more closely:
First, we have a transaction with output(s) being tweaked (prefixed and padded properly) RIPEMD-160 hash(es) of respected public key(s).
Please note: Once this transaction is propagated in the network resided in the mempool, is nothing more valuable than when it was created.
Now, suppose for some reason we like to 'refer' to one of the outputs by saying that it is the nth output of the transaction (using its hash/id), instead of the original wallet address used for the output (the way bitcoin actually implements inputs and you have correctly mentioned it), is it really a reference?
No! It is not. The hash of a value is not a reference to it, hashes don't contain any information, they don't lead you to a new data/informatio.
Ideally speaking, the hash of a value is nothing other than the value itself, a version of it. Having the id of a transaction won't give you any new information about it, you should have access to the original version and for this you have to find it by applying a search on a data structure, probably.
This is why you can conventionally call bitcoin transaction inputs as 'real address', they are real, an alternative version of the reality but with the same information value, obtainable from the transaction.
I'm not questioning this technique, actually it is good for many reasons but not the only option, neither the best one.
What op suggests is a true reference to the blockchain data. To make it more formal:
A blockchain can be understood and treated as an immutable ordered list of transactions. One can trivially derive an ordered list of input addresses from the transaction list.
Using the absolute position of an input in the derived ordered list of outputs could be considered as an alternative approach to current approach of using the original transaction's address.
My first evaluations, suggest wider consequences than just compression, e.g. it helps security by rendering bootstrap/long range attacks orders of magnitude more difficult.