top | item 10636267

(no title)

pilgrim689 | 10 years ago

> - Loses accepted transactions!!! (blockchain forks, orphan blocks, etc) From a distributed database perspective the Bitcoin blockchain is broken and loses data: like a decentralized MongoDB, but slower by several orders of magnitude.

When a block is orphaned or when there is a fork, transactions are not lost, they'll always be present in the main chain. Or said another way, all miners are trying to mine the unconfirmed transactions in their mempool. If one miner ends up finding the winning block, transactions they didn't include that were included in an orphaned block are going to be mined in the next block.

What you may be referencing, though, is not "lost transactions", but rather double spends? What I said above holds true assuming no one else is trying to spend the same outputs. However, if you wait 6 confirmations (the recommended amount before you should consider a transaction "accepted"), you won't see double spends, either.

discuss

order

tveita|10 years ago

The memory pool is not consistent among nodes, and nodes are free to drop or ignore transactions as they see fit. As you say, nodes may have conflicting transactions, a.k.a. double spends. Transactions are not durable in a meaningful way until they have been included in a block.

Waiting for six confirmations is probably enough to prevent accidental reversions, but takes on average an hour, with a fair amount of variance.

pilgrim689|10 years ago

Waiting for six confirmations is enough, as it's been shown both in theory and in practice.

I was correcting the parent as saying Bitcoin loses transactions is false. The network never loses a valid unconfirmed transaction.