=snip=
- There are no competing transactions received from any of several well distributed nodes
- The transaction has been received from several well distributed nodes
=snip=
Sorry for the stupid. Can you please explain these two? Thank you![/list]
I assume you are asking about the "well distributed nodes" part of the statements? (since "transaction has been received", and "no competing transactions" seems to be pretty self explanatory).
Bitcoin is a peer-to-peer system. This means there is no "official" entity that is in charge of determining what has happened on the system. You can't just ask "the bitcoin corporation" which transactions have occurred and which haven't. Everything that your wallet knows about bitcoin transactions it hears about from the peer nodes that it is connected to.
Lets imagine for a moment that your wallet is connected to ONLY one peer node. How do you know that you can trust that node? Perhaps you are about to be a victim of an attack, and the attacker has managed to get his malicious node to connect to your wallet. Now your wallet won't know anything about what is going on in the rest of the bitcoin network. The attacker's node could send a transaction to your wallet and NOT send it to anywhere else on the network. If your wallet isn't connected to any other node, then your wallet won't know that the rest of the network hasn't heard about the transaction. Meanwhile the attacker could send a completely different transaction to the rest of the network. This different transaction would spend the same bitcoins, but they wouldn't be going to your address. The attacker might even manage to mine a block (or even a few blocks) and have them sent ONLY to your wallet and not the rest of the network. Now your wallet believes that the transaction has multiple confirmations. Eventually the attacker manages to get whatever "thing of value" they are trying to steal and they shut down their node. Your wallet now discovers some other node on the bitcoin network and learns about the longer chain that does not include your transaction. Poof. The transaction disappears out of your wallet and you have nothing.
To prevent this sort of isolation attack, you would want to be running software that connects to multiple peers. You'd want to be relatively confident that those peers are communicating with a substantial portion of the bitcoin network. Then if an attacker sends you a transaction, and transmits a competing transaction to the rest of the network, you'll immediately hear about the competing transaction from one of the other peer nodes. Your software can then alert you to the fact that something unusual is occurring.
So there are three parts to makinging sure that your wallet hasn't been isolated by an attacker.
1. Make sure that you are communicating with several well distributed and well connected nodes. If you are only connected to a few nodes and they are all run by the same entity, then the attacker could either be that entity, or could just isolate that entity.
2. Make sure that none of those well distributed and well connected nodes have received a competing transaction from elsewhere on the bitcoin network. If they have, then the transaction paying you might not be the one to get confirmed and you should NOT exchange anything of value.
3. Make sure that the transaction paying you hasn't just been received from a single node. That single node could be an attacker. You can't be confident that any other nodes on the network have the transaction until you've heard about the transaction from additional nodes. You'll want those additional nodes that tell you about the transaction to be well distributed and well connected so that the attacker won't be able to isolate your wallet and so you can be confident that most of the network is aware of the transaction.
If you can verify the 4 things I listed on my previous post, then the only attack that can prevent you from receiving your bitcoins is a mining attack. The attacker would have to have access to a substantial amount of mining power to mine a block sooner than the rest of the network. Purchasing and operating all of this mining hardware would be expensive. The more they spend the better their chance of successfully mining their own block with a competing transaction. This makes it relatively safe to accept unconfirmed transactions for inexpensive items. It is extremely unlikely that someone is going to spend hundreds of thousands of dollars in an attempt to steal a cup of coffee.