Scenario: Alice has a wallet
A1bz (let's say these are the first 4 characters of the private key in wallet import format so we don't have to deal with too many characters) with wallet address
1A1 and 100 mBTC in it. She also has a wallet
A2bz with wallet address
1A2 for change and wants to send 50 mBTC to Bob's wallet with public address
1B1 at 15:00 but only pays 0.01 mBTC fees (as opposed to 0.1 mBTC) which would be the recommended amount. This means that the transaction probably won't go through right away but will have to wait for a few hours.
This means that
transaction1 is built like this:
transaction1: (1A1) -> (1A2(49.99 mBTC), 1B1(50 mBTC), fee(0.01 mBTC))
transaction1 requires that there are 100 mBTC in wallet
However, Carlos comes along and sends 1 mBTC to Alice at 15:05:
transaction2: (1C1) -> (1A1(1 mBTC), 1C2(4.9 mBTC), fee(0.1 mBTC))
transaction2 goes through right away in the block which closes at 15:10.
transaction1 isn't confirmed at that point in time.
Does this mean that Carlos aborted
transaction1? Afaik, the inputs need to be depleted entirely which is why change is needed in the first place.