5
1
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?
6Trickling was removed in 0.13.0. All transactions are now delayed until their next broadcast events, which happen at Poisson-distributed times. – Pieter Wuille – 2017-09-07T23:48:11.110
@PieterWuille can you point me to the implementation of this? Is it the PoissonNextSend() ? – Albert s – 2017-09-08T17:34:12.527
1Indeed, that's the function to compute Poisson-distributed intervals between send events. – Pieter Wuille – 2017-10-08T00:39:46.730
@PieterWuille Could you elaborate further? The function returns
– tnull – 2017-11-06T14:01:37.613nNow + (int64_t)(log1p(GetRand(1ULL << 48) * -0.0000000000000035527136788 ) * average_interval_seconds * -1000000.0 + 0.5). I decipher the step overnNowas-log (1 - u) * lambda + 0.5, given thatuis a uniform variable in[0,1]and the interval is accounted in seconds. This is close to-log(1-u) / lambdawhich can be used to simulate a poisson process. However, I wonder where the product (instead of division) and the+0.5come from?1It'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. – Pieter Wuille – 2017-11-06T15:31:53.280
@PieterWuille Thank you for clarification. I get that the
log1p(...)part is actually log(1-u) for a u in [0,1]. And, as theaverage_interval_secondsis in seconds and the calculation is done in microseconds,-1000000.0is a conversion factor, also correcting the negative outcomes of thelog. Okay, the+0.5is for rounding. But I still struggle to see howaverage_interval_secondsaka lambda is equivalent with 1 / lambda?! What am I missing? – tnull – 2017-11-07T15:40:49.9971lambda is the rate. rate is the inverse of the time between events. – Pieter Wuille – 2017-11-07T18:00:18.123
Ah, lol. You're totally right, how did I not get that... Sorry for the inconvenience, and thank you very much for clearing this up! – tnull – 2017-11-08T08:01:17.533