7

When a node receives a transaction it verifies it and then sends it to its neighbors.
My question is: does the node broadcast the transaction right away or is there a delay built in (privacy concerns) and if there is a delay built in can anyone point me to the code where that happens?

1 Answer 1

2

Yes, there is what is called transaction trickling. This is a mechanism to select a random peer for immediate forwarding of all transactions, while others receive the transaction after a random timeout. This is done in order to reduce the chances of fingerprinting the origin of a transaction. Similar to the proposed dandelion paper, it forwards a transaction through a conduit of peers before spreading it widely in the network, and observers cannot identify the origin by simply timing the time peers announce the transaction's availability.

8
  • 8
    Trickling was removed in 0.13.0. All transactions are now delayed until their next broadcast events, which happen at Poisson-distributed times. Sep 7, 2017 at 23:48
  • @PieterWuille can you point me to the implementation of this? Is it the PoissonNextSend() ?
    – Albert S
    Sep 8, 2017 at 17:34
  • 1
    Indeed, that's the function to compute Poisson-distributed intervals between send events. Oct 8, 2017 at 0:39
  • 1
    It's a product with the precomputed inverse, because that is faster. And with u uniform in [0..1], log(u) and log(1-u) are equivalent. +0.5 is for rounding before converting to an integer. Nov 6, 2017 at 15:31
  • 1
    lambda is the rate. rate is the inverse of the time between events. Nov 7, 2017 at 18:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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