If I understand your question right, I think you're looking for the inverse cumulative distribution function (a.k.a. quantile function) of the Erlang distribution.
The random length of time to mine the next block has an exponential distribution with rate parameter 1/t
. The length of time to mine n
blocks has an Erlang distribution with shape parameter n
and rate parameter 1/t
.
The Erlang distribution is a special case of the Gamma distribution. The Erlang distribution's shape parameter must be an integer, but the Gamma distribution's shape parameter can be any positive real number. We can use the Gamma distribution if Erlang isn't given to us by our calculator.
You would compute T
in the R language with:
qgamma(p = p, shape = n, rate = 1/t)/n
The results of this simulation match the closed-form computation:
t <- 120
n <- 15
p <- 0.4
set.seed(314)
mining.times <- matrix(rexp(n * 100000, rate = 1/t), ncol = n)
mining.times <- rowSums(mining.times)
quantile(mining.times/n, probs = p)
qgamma(p = p, shape = n, rate = 1/t)/n
# Divide by n to get the mean instead of the total
Anyone notice more newborn Monero nodes recently?
I've perceived an increase in the number of newborn nodes syncing the blockchain from my nodes. Maybe after the Chainalysis video showed the privacy risks of using remote nodes over clearnet, more people are setting up their own nodes.
If you run your own node, you can make a get_connections
call to monerod's unrestricted RPC port (18081 by default) to get data on the sync status of your peer nodes. I wrote a little script to display this info if anyone is interested.
I'm happy that you are interested in this!
I've put this video on the next Monero Research Lab meeting agenda: https://github.com/monero-project/meta/issues/1070
All are free to join the text-based MRL meetings.