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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.