1

To clarify, if person A sends bitcoins to person B, and person C sends bitcoins to person D, 1 second (or less), AFTER person A, can person C's transaction show up on the network BEFORE person A's? If so can you explain how?

Edit: By "show up on the network" i mean get on the blockchain. Example: If A and C both sent to the same address, but C sent his 1 second (or less) later, then if i go to blockchain.info and look at the recipients transactions, is it possible to see C's transaction before A's (even if it is unconfirmed)

0

It is not clear what you mean with "show up on the network". I will assume that you mean "included in the blockchain" rather than "submitted to the network".

Transactions are spread peer to peer.

When a users sends a transaction, he transmits it to all the peers he is connected to. All these peers will then propagate it to their peers, and the recipients will repeat so again until all nodes in the network have received the transmission.

An exaggerated example

Let's imagine the following (hypothetic) situation:
A has only one peer, who in turn only has only one other peer. Let's say A is connected to the network in a very long chain of weakly connected nodes, which then at some point leads to the "well-connected network".
On the other hand C has ten peers, of which one is very well connected such as a mining pool operator.

Now, when A sends his transaction, it is transmitted to one other node in the network, then a second is notified, in the next step only a third. Obviously, it will take some time until the transaction will spread to the whole network. On the other hand, when C sends his transaction, it is immediately received by 10 other nodes. Each of those sends it to ten other nodes, the mining pool might even send it to hundreds. The network will be notified very quickly of that transaction.

We can see different propagation times, but the effect isn't that huge

According to BitcoinStats, it takes about 0.651 seconds for a transaction to be seen by 50% of the network, and about 2.761 seconds to be seen by 90% of the network.
Also, the above example is exaggerated: Usually, every node will try to connect to several nodes. However, the effect that some transactions will spread faster due to being submitted to well-connected nodes still exists. If a miner finds a block and had already received the transaction of C but not A's. C's might be included in a block before A's transaction. However, the window is pretty small, since the block interval is much bigger than the propagation time.
The effect would be especially pronounced, if A's transaction didn't include a transaction fee, or was non-standard, and therefore not propagated by all nodes.

  • So it is possible then if C is connected to 'better'/more nodes. Is there anyway a normal user like me can connect to 'well connected'/more nodes other than the standard 8? – kev Feb 22 '15 at 18:30
  • We are talking about a fraction of a second advantage. If you would perhaps explain why you are worried, I could perhaps give a better answer. AFAIK you are limited to 8 outbound connections, however, if you enable port forwarding, you can maintain more connections. The limit used to be 125 connections, but I am not sure if that is still the case. – Murch Feb 22 '15 at 23:32
  • Thank you Murch. I am not worried I'm just trying to learn in detail how the transactions enter the network(for a personal reason). One more question. Do all 8 nodes(or however many) get the transaction details at the same EXACT time or does it take some time for all 8 to get it? (I noticed in your answer you said "immediately received by 10 other nodes". Just want to clarify if the 10 receive at same time or is there a time difference (even if it is a fraction of a second) – kev Feb 23 '15 at 3:21
  • I've read up on the communication protocol a bit more. It appears that after a node has verified a transaction, it sends an "inventory message" to its peers. The inventory message contains a hash of the transaction, and the peers can then request the transaction with a "getdata message" if they don't have it already. So, the peers don't get the information at the same time, but rather as they request it, and since there is some back and forth included, nodes with a higher latency will probably get it (some hundredth seconds) later, nodes that get more messages might request it later as well. – Murch Feb 23 '15 at 7:53

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.