I'm reading through each blk*.dat file in order.
As I'm reading through each transaction, is it possible that I will read a transaction that is referencing an output (as an input) that I haven't encountered yet?
For example:
|--------|
| header |
|--------|
| tx1 |
| tx2 | <- This transaction is referencing inputs I haven't encountered...
| tx3 |
| tx4 | <- ...because the outputs are created in this transaction.
| tx5 |
|--------|
Furthermore, if this is true, it possible that the required inputs will be found in a transaction in a future block (and not just in a transaction further down the current block)?