Timeline for What percentage of mined nonces fail to join the consensus blockchain?
Current License: CC BY-SA 4.0
20 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Nov 23, 2023 at 6:08 | comment | added | MWB | You don't need the probability that N=2 are found in 0.5s. You need a conditional probability, that a block will be found within 0.5s, given that another block has just been found. And since they are largely independent, you basically need N=1. 0.5/600 seems like the correct estimate here, or very close to correct. | |
Nov 22, 2023 at 14:31 | comment | added | Pieter Wuille | I'm wrong. 1-exp(-lambda L) is the probability that at least one PoW-valid block is found in a window of length L after a given accepted block. But that's not what we want; there could be multiple such blocks in that window, and their expected value is just lambda L. Therefore, the percentage of discarded blocks per total PoW-valid blocks is (1 - 1 / (1 + lambda L)). Still 0.166% for L=1 though. | |
Nov 22, 2023 at 13:48 | comment | added | Lee | @PieterWuille neatly done, thank you. Perhaps you should add it onto your answer.. | |
Nov 21, 2023 at 16:55 | comment | added | Pieter Wuille | The time between blocks is a Poisson process, so follows an exponential distribution (with lambda=1/600s). If latency is L seconds, and every block found within L seconds of an accepted block is discarded, then taking the CDF (1- exp(-lambda x)) in x=0 and x=L, we obtain the difference 1 - exp(-lambda L) discarded blocks per accepted block, or (exp(lambda L) - 1) / (2 exp(lambda L) - 1) discarded blocks per total blocks, which is 0.166% for L=1. | |
Nov 21, 2023 at 15:18 | history | edited | Lee | CC BY-SA 4.0 |
added 3 characters in body
|
Nov 21, 2023 at 15:12 | history | edited | Lee | CC BY-SA 4.0 |
added 118 characters in body
|
Nov 21, 2023 at 14:58 | history | edited | Lee | CC BY-SA 4.0 |
added 118 characters in body
|
Nov 21, 2023 at 14:40 | history | edited | Lee | CC BY-SA 4.0 |
added 116 characters in body
|
Nov 21, 2023 at 14:32 | comment | added | Lee | @PieterWuille thanks, will check for rounding errors etc in the Python code. | |
Nov 21, 2023 at 14:19 | comment | added | Pieter Wuille | Hmm, yes, I'm wrong in my reasoning, sorry. Still, the number you obtain is clearly wildly off. You expect something in the order of 1/600 (or 0.5/600, for half a second propagation time). | |
Nov 21, 2023 at 14:13 | comment | added | Lee |
@PieterWuille agree on OP, but forgive me, the valid_block_failure_probability value is not per second. The time units drop out on multiplication by the period, in this case the mean_block_propagation_time (units of seconds).
|
|
Nov 21, 2023 at 14:09 | comment | added | Pieter Wuille | OP is asking for the percentage of successful PoW hashes that don't get included. You're computing the rate at which successful but discarded hashes happen per second, but you need to divide that by the rate of successful hashes per second, to obtain the ratio of discarded hashes per successful ones. 0.000007% is just far too low; with 1s propagation delay and 600s blocks, you expect a number with an order of magnitude close to 1/600. | |
Nov 21, 2023 at 14:06 | comment | added | Lee | @PieterWuille I'd add that the per block aspect is included via the hashrate estimation and target values. | |
Nov 21, 2023 at 13:55 | comment | added | Lee | @PieterWuille Paraphrasing OP "Given a miner has found a valid block, what is likelihood it fails to reach consensus chain"? The per second value can be modified to any period by multiplying by a number of seconds. I chose the mean block propagation time as a modifier as this approximates the time a rival has to "gazump" the successful block. You could well be right about the factor of 2; I'm thinking on it.... | |
Nov 21, 2023 at 13:42 | comment | added | Pieter Wuille | You have computed the probability that in a given 1s interval two get computed, but that's not what OP is asking for. You need the frequency of that happening per block, not per second. Also, you need to divide by two because the order of the two found hashes within the 1s interval does not matter. | |
Nov 21, 2023 at 13:24 | history | edited | Lee | CC BY-SA 4.0 |
added 436 characters in body
|
Nov 21, 2023 at 13:10 | history | edited | Lee | CC BY-SA 4.0 |
added 135 characters in body
|
Nov 21, 2023 at 13:05 | history | edited | Lee | CC BY-SA 4.0 |
added 135 characters in body
|
Nov 21, 2023 at 11:55 | history | edited | Lee | CC BY-SA 4.0 |
deleted 82 characters in body
|
Nov 21, 2023 at 11:40 | history | answered | Lee | CC BY-SA 4.0 |