How does the transaction signature prevent transaction duplication? Let's say that Alice sends 1 BTC to Bob.
We have then a signature of (Alice sends 1 BTC to Bob) with Alice private key.
What prevents Bob from duplicating this exact same transaction and sending it to the network to get another BTC (or many more), given that he already has Alice's signature of (Alice sends 1 BTC to Bob) ?

Thanks a lot :)
When Alice creates a transaction of 1 BTC to Bob, she is giving him a specific bitcoin, by using an unspent transaction output that she has the key to. The blockchain tracks the flow of coins from transaction to transaction, it does not have 'balances'. So when Alice makes a new transaction, she provides an input to the transaction of at least 1 BTC, and puts Bob's address in an output. This transaction then is mined into a block, and Bob can spend the output he holds the key to, in another transaction, and so forth. But after Alice broadcasts that first transaction, she has spent the outputs she used in it, she can not use them again in another transaction (double spend). Thus if Bob tried to 'replay' that transaction, he would just be resending the same thing as before, nothing would change because the network would already have seen and accepted the transaction and Bob would already 'have' the Bitcoin Alice sent him. In fact, no other node would be interested in the transaction as they can see that it is already written to the blockchain.