0

When exactly does the receiving party receives their payment. When the transaction is validated or when the transaction is added to a block?

1

When exactly does the receiving party receives their payment.

This is considered to have happened as soon as the transaction is included in a newly mined block and that block starts to propagate through the Bitcoin network.

The recipient may not find out that they have received the money until their particular node (e.g. wallet) receives a copy of that block to add to its copy of the blockchain. If the recipient's node is turned off and cannot receive blocks, that does not mean they have not received the money. They have as far as everyone else is concerned.

The recipient may not consider that receipt safe until their node (or one they trust, like a blockchain explorer) sees that six confirmations have been received - that is 6 new blocks mined on top of the block that contains the transaction.

Remember that Bitcoins are not really things that move around, they are not really sent places and do not really arrive anywhere. All that happens is that everybody builds identical copies of the journal of transactions - a list of transactions called the blockchain. By inspecting that list of transactions everyone can see that a specific Bitcoin-address or script now has control over a specific amount of money that they didn't have control over before. Nothing else matters.

Since data takes time to bubble and percolate from node to node to node to node through the network, different nodes will have slightly different dates or times on which they became aware of a specific transaction. No one of these is any more correct than any other.

Blocks that fail validation might as well be considered to have never existed. The network does not keep or propagate unvalidated transactions. By design, no-one trusts anyone else, therefore every node does its own validations. Even though it knows the sending node will have already validated the block.

0

The receiver must wait for at least a few blocks to be mined after the transaction is confirmed in a block.

When you relay your transaction to the Bitcoin network, every full node that receives the transaction validates that the transaction meets all the consensus requirements. However, Bitcoin network relays transactions on a best effort basis, which can mean your transaction might have never reached out to a miner for sometime. In that time, you can double spend that transaction by consuming the same UTXO and paying out to a different address (use a higher fee). So, if a receiver runs a full node and if he thinks the payment went through when he sees your transaction he might lose out despite delivering the services.

Also, thinking that the payment is confirmed after one block is mined with the underlying transaction is also incorrect. That is because, there might be two blocks which can be mined at the same time (fork). So now, the network is split which would eventually be converging when the next block is mined. The transaction that you created might not have reached the winning side, and thus is not included in the last two blocks. So although the receiver thought the payment was confirmed (because he was seeing the other version of the block mined) you can now create a double spend transaction. The recommended waiting time is 6 blocks.

  • So the transaction has to be validated by EACH full node? Or just the ones including this transaction in their block? I'm confused on this one – Chinmay Sep 17 at 9:52
  • @Chinmay Unlike other ledger based system, Bitcoin does not operate on validating votes. Only transaction/blocks that meet the pre-defined policies can enter the blockchain. Thus when a full node receives a transaction, it checks if that transaction meets all the consensus requirements and relays it only if it meets them. Transactions that do not meet consensus are discarded and not relayed. – Ugam Kamat Sep 17 at 9:55
  • 1
    @Chinmay Rejection of blocks by full nodes is what keep miners in check from including fraudulent transactions in the their blocks. If say a miner mines a block with a transaction that double spends some bitcoins and relays it to the network, then the full nodes will reject this block as it will not meet the consensus policies (prevent double spending). If the full nodes discard the block, the miner will lose their block rewards and would have wasted its electricity on nothing. – Ugam Kamat Sep 17 at 10:02

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.