Distribuição de Poisson
O modelo matemático da descoberta de blocos no Bitcoin
A distribuição de Poisson é o modelo matemático que descreve a probabilidade de um determinado número de eventos ocorrer em um intervalo fixo de tempo, quando os eventos acontecem a uma taxa média constante e independentemente uns dos outros. No Bitcoin, ela é a ferramenta essencial para entender quando blocos são minerados, com que frequência forks naturais ocorrem, e quanto tempo se deve esperar por uma confirmação.
Esta página aprofunda a matemática da distribuição de Poisson aplicada ao Bitcoin, desde a derivação a partir da distribuição binomial até o cálculo da probabilidade de forks e tempos de espera.
Conteúdo
Definição
A probabilidade de k eventos em um intervalo
A distribuição de Poisson é definida pela fórmula:
P(k) = e−λ · λk / k!
Onde:
- λ (lambda) é o número médio de eventos no intervalo considerado
- k é o número de eventos cuja probabilidade queremos calcular
- e é a constante de Euler (~2,71828)
- k! é o fatorial de k
Duas propriedades fundamentais da distribuição de Poisson:
- A média é λ. O valor esperado de k é λ.
- A variância também é λ. A incerteza cresce com a média — diferente da distribuição normal, onde média e variância são independentes.
Para a mineração de Bitcoin no intervalo de 10 minutos, λ = 1. Portanto, a média e a variância do número de blocos por janela de 10 minutos são ambas 1 — um desvio padrão de ±1 bloco, o que significa que janelas com 0, 1 ou 2 blocos são igualmente comuns.
Derivação da distribuição binomial
De Bernoulli a Poisson: o limite dos eventos raros
A distribuição de Poisson emerge como um caso limite da distribuição binomial quando o número de tentativas N é muito grande e a probabilidade de sucesso p é muito pequena, mantendo o produto N·p = λ constante.
No Bitcoin, cada tentativa individual de hash é um evento de Bernoulli (sucesso ou fracasso) com probabilidade p extremamente pequena (da ordem de 2−256 vezes o alvo). O número de tentativas por segundo N é enorme (da ordem de 1020). O produto N·p é o número esperado de blocos por segundo — aproximadamente 1/600.
Neste regime (N enorme, p ínfimo), calcular a binomial diretamente é computacionalmente inviável, mas a aproximação de Poisson é essencialmente exata:
# Comparacao: Binomial vs Poisson para encontrar blocos
# N = numero de tentativas de hash por segundo (aproximado)
# p_prob = probabilidade de uma unica tentativa ser bem-sucedida
N = 5e18 # 5 exahashes/s (rede inteira)
p_success = 1 / (2**256) * 0x00000000000000000002068f0000000000000000000000000000000000000000
# Distribuicao Binomial: P(k) = C(N,k) * p^k * (1-p)^(N-k)
# (impraticavel de calcular para N enorme)
# Distribuicao de Poisson (aproximacao):
lambda = N * p_success # = 1 bloco a cada 10 min (λ ≈ 1)
puts lambda
# Probabilidade de k blocos em 10 min via Poisson:
(0..5).each do |k|
poisson = Math.exp(-lambda) * (lambda**k) / (1..k).reduce(1, :*)
puts "P(#{k}) = #{poisson.round(4)}"
end
# Resultado:
# P(0) = 0.3679
# P(1) = 0.3679
# P(2) = 0.1839
# P(3) = 0.0613
# P(4) = 0.0153
# P(5) = 0.0031 A precisão da aproximação é notável: para os parâmetros do Bitcoin, o erro entre a binomial e a Poisson é menor que uma parte em 1010. Na prática, são indistinguíveis.
Aplicação à Mineração
Como a Poisson descreve a descoberta de blocos
A mineração de blocos segue um processo de Poisson: a cada instante, a probabilidade de um novo bloco ser encontrado é constante e independente do passado. Isso gera previsões específicas sobre o comportamento observável da rede.
Em qualquer janela de 10 minutos (λ = 1):
- 36,8% das janelas terão 0 blocos
- 36,8% terão exatamente 1 bloco
- 18,4% terão 2 blocos
- 6,1% terão 3 blocos
- 1,5% terão 4 blocos
- 0,3% terão 5 ou mais blocos
Em uma janela de 1 hora (λ = 6):
- 0,25% das horas terão 0 blocos (cerca de 2 horas por mês sem bloco nenhum)
- 16,7% das horas terão 6 blocos (o valor mais provável individualmente)
- ~1% das horas terão 12 ou mais blocos (picos de mineração)
A cauda da distribuição é longa: embora a média seja 6 blocos por hora, ocasionalmente a rede produz 10 ou mais blocos em uma hora — sem que nada especial tenha acontecido. É apenas a natureza aleatória do processo.
O parâmetro λ (lambda)
O ajuste da taxa pela dificuldade
O parâmetro λ determina completamente a distribuição de Poisson. No Bitcoin, λ para o período de 10 minutos é mantido em ≈ 1 pelo ajuste de dificuldade a cada 2016 blocos.
Se a taxa de hash da rede dobra, a dificuldade dobra no próximo ajuste, e λ retorna a 1. Sem esse ajuste, λ cresceria (ou diminuiria) com o poder de hash, e os tempos entre blocos se desviariam do alvo de 10 minutos.
A Lei dos Pequenos Números. A distribuição de Poisson é às vezes chamada de "lei dos pequenos números" porque descreve eventos raros em um grande número de tentativas. No Bitcoin, cada tentativa de hash individual é um evento extremamente raro (probabilidade ~10−20), mas o número de tentativas é tão grande que o resultado agregado é estável e previsível.
Distribuição Exponencial e Tempo entre Blocos
O intervalo entre blocos segue uma exponencial
O tempo entre eventos em um processo de Poisson segue a distribuição exponencial:
P(T > t) = e−λt
Esta é uma das distribuições mais importantes para entender o comportamento da rede Bitcoin. Ela responde a perguntas como: qual a probabilidade de esperar mais de 30 minutos por um bloco?
# Probabilidade de esperar mais de t minutos pelo proximo bloco
# Distribuicao exponencial: P(T > t) = e^(-t/10)
def prob_wait_longer_than(t_minutes)
Math.exp(-t_minutes / 10.0)
end
puts "Esperar >10 min: #{prob_wait_longer_than(10)}" # 0.3679 (36.8%)
puts "Esperar >30 min: #{prob_wait_longer_than(30)}" # 0.0498 (5.0%)
puts "Esperar >60 min: #{prob_wait_longer_than(60)}" # 0.0025 (0.25%)
puts "Esperar >120 min: #{prob_wait_longer_than(120)}" # 6.1e-06 (0.0006%) A probabilidade de esperar mais de 10 minutos pelo próximo bloco é de 36,8%. Isso pode parecer contraditório: "se a média é 10 minutos, por que é tão comum esperar mais de 10 minutos?"
A resposta está na assimetria da distribuição exponencial. Diferente da distribuição normal (que é simétrica em torno da média), a exponencial é fortemente assimétrica à direita. A mediana do tempo entre blocos é de aproximadamente 6,93 minutos — metade dos blocos chega em menos de 7 minutos. Mas os valores extremos (30, 40, 60 minutos) puxam a média para 10 minutos.
A propriedade mais contra-intuitiva da distribuição exponencial é a falta de memória:
P(T > t + s | T > s) = P(T > t)
Em português: se você já esperou s minutos sem um bloco, a probabilidade de esperar mais t minutos é a mesma de quando você começou a esperar. O tempo de espera restante não depende de quanto tempo já passou. Se já se passaram 20 minutos, o tempo esperado restante para o próximo bloco continua sendo 10 minutos.
A falta de memória significa que longos períodos sem blocos não são "compensados" por períodos mais rápidos depois. Cada hash é independente — não há um "acúmulo de sorte" a ser compensado. Um período de 40 minutos sem blocos é seguido pelo mesmo processo de Poisson de sempre, com o mesmo λ.
Probabilidade de Forks Naturais
Quando dois blocos são minerados quase ao mesmo tempo
Como a mineração é um processo de Poisson, é inevitável que dois mineradores encontrem blocos válidos em instantes muito próximos. A probabilidade de um fork natural depende do tempo de propagação de blocos na rede:
# Probabilidade de um fork natural
# lambda = taxa de blocos por segundo = 1/600
# t = tempo de propagacao (segundos)
def fork_probability(t, lambda_per_sec=1.0/600)
# chance de outro bloco ser encontrado
# enquanto o primeiro ainda esta se propagando
1 - Math.exp(-lambda_per_sec * t)
end
puts fork_probability(1) # 0.0017 (0.17%)
puts fork_probability(10) # 0.0165 (1.65%)
puts fork_probability(30) # 0.0488 (4.88%)
puts fork_probability(60) # 0.0952 (9.52%)
# Com blocos maiores (mais transacoes, mais tempo de propagacao):
puts fork_probability(120) # 0.1813 (18.13%) Para blocos típicos de ~1 MB, o tempo de propagação é de alguns segundos, resultando em uma taxa de forks de cerca de 1-2%. Blocos maiores (que demoram mais para se propagar) aumentam a janela de vulnerabilidade. É por isso que o limite de tamanho de bloco (e, mais recentemente, a segregação de testemunhas via SegWit) ajuda a manter a taxa de forks baixa: blocos menores se propagam mais rápido, reduzindo a probabilidade de dois blocos concorrentes.
A taxa de forks observada na rede Bitcoin é consistente com o modelo de Poisson — mais uma confirmação de que a mineração se comporta como um processo de Poisson real.
Poisson na Análise de Satoshi
A distribuição usada na Seção 11 do whitepaper
Na seção 11 do whitepaper, Satoshi Nakamoto usou a distribuição de Poisson como parte central do cálculo da probabilidade de sucesso de um ataque de 51%. Especificamente, ele modelou o número de blocos que o atacante consegue minerar enquanto a rede honesta minera z blocos como uma variável aleatória de Poisson com taxa:
λ = z · q / p
Onde q é o poder de hash do atacante e p = 1 − q é o poder de hash dos honestos. Quanto maior a vantagem z da cadeia honesta, maior o λ — e menor a probabilidade de o atacante conseguir minerar blocos suficientes para alcançá-la.
A equação completa de Satoshi combina a distribuição de Poisson (número de blocos do atacante) com a ruína do jogador (probabilidade de ele alcançar os honestos dado que minerou k blocos). O resultado é uma função que decai exponencialmente com z, a menos que q se aproxime de 0,5.
A análise detalhada, com a equação completa e exemplos numéricos, está na página de Processos Estocásticos.
A genialidade da abordagem de Satoshi foi reconhecer que a mineração de Bitcoin podia ser modelada por uma das distribuições mais bem estudadas da probabilidade — a Poisson — e usar isso para quantificar a segurança do sistema.
Recursos
- Bitcoin: A Peer-to-Peer Electronic Cash System — Seção 11, onde Satoshi aplica a distribuição de Poisson à segurança do Bitcoin.
- Processos Estocásticos — Visão geral dos modelos probabilísticos do Bitcoin, incluindo Poisson e ruína do jogador.
- Passeio Aleatório — O modelo complementar: a corrida entre atacante e rede honesta como uma caminhada aleatória.
- Poisson Distribution — Verbete na Wikipedia com a teoria matemática completa.
- Exponential Distribution — A distribuição do tempo entre eventos em um processo de Poisson.