Nope, it's valid. The rule pretty much only dictates that the inputs must be referenced and confirmed. It's fine to have an unconfirmed input as long as it is confirmed in the same block.
Ok, so what happened here is that the moment he receipt/hacker/script got the unconfirmed outputs, they immediately spent it to 1GpXLNYGfi7jWgZxn7hDaQs39VD59WYtvg and since both transactions are signed properly then they can be confirmed in the same block by the nodes.
As long as the coin is confirmed and sent to the specified address, the deal is complete. I regard any deal which has a valid transaction to the specified address as complete. Whatever happens after that is out of the control of the sender. What wallet is the recipient using?
This was my initial guess, I just thought there could be something that I don't know about and it wouldn't be fair to just tell him to ask the buyer to go figure.
It's a Blockchain wallet, so my guess is that someone else might have full access to his wallet.
You can always spend unconfirmed outputs. But they won't be confirmed as long as the the previous transaction is unconfirmed.
Yup, I am aware of that, it's all about whether or not it's considered valid, what I initially thought is that this can't be done in the same block, but now after reading's comment and when I think about it, nothing is stopping them from sending raw transactions to spend unconfirmed outputs.
Which address your friend was given?
My friend is neither the sender nor the recipient, he is just trying to solve a dispute between two parties so he only knows as much as we all now know, both parties agreed that the buyer's address was > 1GpuDxXn9mYUf3fiMy4YpvTgx7AKUsZbbV , they also agree on the amount received which was 0.09xx
BTC, the buyer says his wallet is still empty while the seller says the transaction to 1GpuDxXn9mYUf3fiMy4YpvTgx7AKUsZbbV was confirmed so he says "I should take my money and leave".
It seems the buyer's given address was 1GpuDxXn9mYUf3fiMy4YpvTgx7AKUsZbbV which means the BTC were sent to his given address. From the blockchain evidence it's clear so the seller gets his USD/fiat (if that was the transection form)
Yup seems like the only fair way to go about this, get the seller out of the equation, and start figuring out what went wrong with the buyer's wallet, since this is a shitty web-based wallet, many things could have gone wrong, so a lot of digging on the buyer's wallet needs to be done.
Anyway, I have gotten the answer, I will keep this topic open for further discussion, I am sure other members will come up with different theories on what could have gone wrong with the buyer's wallet.
Thank you all.