Let's say A is trying to double spend by sending bitcoins to B,C (A->B) and (A->C) and let's say A tried to relay (A->B) transaction to honest Node - 8 and at this point let's assume that current time is 6'o clock(might be any time zone). So at 6:00 A relayed its transaction (A->B) to honest Node-8. let's say at 6:02 (exactly after 2 mins) A tries to double spend that bitcoin and sends that bitcoin (A->C) to honest Node - 5 and at 6:04 let's say honest Node-5 validates all transaction to be valid since A's Input UTXOs are not broadcasted to network until now.
At the same time let Node-8 also validates all transaction in its block to be valid, since A's Input UTXOs still exist. let's say at 6:05 Node-5 and Node-8 are trying to solve hash puzzle to mine a their block and at 6:08 lets say Node-5 solved the puzzle and broadcasted it's block to network. While Node-8 is trying to solve the puzzle with the transactions it has**(A->B)**. Let's say at 6:14 Node-8 solved the puzzle and tried to broadcast its block which contains (A->B which is double spending). Then the peer-nodes will reject the block that Node-8 has broadcasted because it has an invalid transaction(Double spent transaction).
- Here the fault is not Node-8, Node-8 is honest doing its work by following protocol. Even though peer-nodes in this case has rejected honest Node-8's Block and Node-8 has lost a lot of computation power, which is very unfair?
- How Bitcoin protocol solves/help this issue for Node-8?
Correct me if I am wrong...