Processos Estocásticos

A matemática da incerteza na mineração e segurança do Bitcoin

O Bitcoin é um sistema probabilístico. Blocos são descobertos em intervalos aleatórios, ataques podem ou não ter sucesso, e confirmações são uma aposta calculada — não uma certeza absoluta. A ferramenta matemática que descreve esse tipo de incerteza é o processo estocástico.

Esta página apresenta os processos estocásticos que governam a segurança do Bitcoin: o processo de Poisson (descoberta de blocos), o problema da ruína do jogador (ataque de 51%) e a análise probabilística original de Satoshi no whitepaper.

Conteúdo

O que é um Processo Estocástico?

Aleatoriedade que evolui com o tempo

Um processo estocástico é um modelo matemático de um sistema que evolui ao longo do tempo de maneira parcialmente aleatória. Diferente de um sistema determinístico (onde o estado futuro é completamente determinado pelo estado atual), um processo estocástico incorpora incerteza: você sabe as probabilidades dos possíveis resultados, mas não qual vai acontecer.

Exemplos cotidianos de processos estocásticos incluem:

Todos esses exemplos compartilham uma característica: eventos ocorrem a uma taxa média conhecida, mas o instante exato de cada evento é imprevisível. Essa é a marca de um processo de Poisson, o processo estocástico mais relevante para o Bitcoin.

Processo de Poisson na Mineração

Blocos são descobertos a uma taxa média, mas em instantes aleatórios

A mineração de blocos no Bitcoin é um processo de Poisson. A cada tentativa de hash, um minerador tem uma probabilidade fixa e muito pequena de encontrar um bloco válido. Como bilhões de tentativas são feitas por segundo pela rede, o resultado agregado é que blocos são descobertos a uma taxa média constante — aproximadamente 1 bloco a cada 10 minutos.

Mas "média de 10 minutos" não significa que blocos chegam exatamente de 10 em 10 minutos. Em alguns intervalos podem ser 2 blocos em 1 minuto; em outros, pode levar 40 minutos para encontrar um único bloco. A variabilidade é inerente ao processo.

Por que 10 minutos? O parâmetro mais importante de um processo de Poisson é a taxa λ (lambda). No Bitcoin, a taxa é ajustada pela dificuldade a cada 2016 blocos (~2 semanas) para que o tempo médio entre blocos se mantenha em 10 minutos. Sem esse ajuste, a taxa variaria com o poder de hash total da rede.

Distribuição de Poisson

A probabilidade de encontrar k blocos em um intervalo

A distribuição de Poisson descreve a probabilidade de um dado número de eventos ocorrer em um intervalo fixo de tempo, dado que os eventos acontecem a uma taxa média constante e independentemente uns dos outros.

P(k) = e · λk / k!

Onde λ é o número médio de eventos no intervalo. Para intervalos de 10 minutos, λ = 1 (1 bloco em média). Para intervalos de 1 hora (6 × 10 min), λ = 6.

No caso da mineração de blocos, a probabilidade de encontrar exatamente k blocos em 10 minutos é:

# Probabilidade de encontrar k blocos em 10 minutos
# taxa media (lambda) = 1 bloco a cada 10 min

def poisson(k, lambda_=1.0)
  Math.exp(-lambda_) * (lambda_**k) / (1..k).reduce(1, :*)
end

puts poisson(0) #=> 0.3679 (36.8% — nenhum bloco)
puts poisson(1) #=> 0.3679 (36.8% — exatamente 1 bloco)
puts poisson(2) #=> 0.1839 (18.4% — 2 blocos)
puts poisson(3) #=> 0.0613 ( 6.1% — 3 blocos)
puts poisson(4) #=> 0.0153 ( 1.5% — 4 blocos)

Isso significa que, em qualquer janela de 10 minutos, há 36,8% de chance de não vir bloco nenhum — mesmo sendo a média. É por isso que o tempo entre blocos às vezes é muito maior que 10 minutos.

A probabilidade de pelo menos um bloco em 10 minutos é 1 − P(0) = 63,2%. Em 30 minutos (λ = 3), a chance de nenhum bloco cai para P(0) = e−3 ≈ 5%, e de pelo menos um sobe para 95%.

Eventos raros: A distribuição de Poisson é uma aproximação da distribuição binomial para eventos de probabilidade muito pequena. Cada tentativa de hash individual é um evento binomial (sucesso ou fracasso), mas como a chance de sucesso é infinitesimal e o número de tentativas é enorme, a distribuição de Poisson é a aproximação correta e mais prática.

Tempo entre blocos

Distribuição exponencial e a memória do processo

Uma propriedade fundamental do processo de Poisson é que o tempo entre eventos segue uma distribuição exponencial. Isso significa que o tempo que falta para o próximo bloco ser minerado não depende de quanto tempo já passou desde o último bloco.

Se já se passaram 20 minutos desde o último bloco, o tempo esperado para o próximo bloco continua sendo 10 minutos. O processo não "acumula" tempo — ele não tem memória. Essa propriedade, chamada de falta de memória (memorylessness), é exclusiva da distribuição exponencial.

Na prática, isso significa que esperar um bloco demorado não torna o próximo mais provável de vir rápido. Cada tentativa de hash é independente das anteriores, e a rede coletivamente continua minerando à mesma taxa de sempre.

Forks naturais como eventos de Poisson

Quando dois blocos são encontrados ao mesmo tempo

Como blocos são descobertos em instantes aleatórios, é possível (e esperado) que dois mineradores encontrem um bloco válido quase ao mesmo tempo. Cada um propaga seu bloco pela rede, criando uma bifurcação temporária — um fork natural.

Do ponto de vista estocástico, a probabilidade de dois blocos serem encontrados em um intervalo muito curto (menor que o tempo de propagação na rede, ~segundos) é a cauda superior da distribuição de Poisson. Quanto mais poder de hash a rede tem e mais rápida a propagação, menor a chance de forks naturais. É por isso que blocos grandes (que demoram mais para propagar) aumentam a taxa de forks — e por isso o Bitcoin Core limita o tamanho dos blocos.

Ruína do Jogador

O problema de um apostador contra um oponente com recursos infinitos

O segundo processo estocástico fundamental para a segurança do Bitcoin é o problema da ruína do jogador (gambler's ruin). Imagine um apostador com fichas finitas jogando contra um cassino com recursos virtualmente infinitos. O apostador quebra se perder todas as fichas. Qual a probabilidade de ele dobrar seu dinheiro antes de quebrar?

No Bitcoin, o "apostador" é o atacante tentando construir uma cadeia mais longa que a cadeia honesta. A "fortuna" de cada lado é a vantagem em blocos que ele já tem. O atacante está atrás por z blocos e precisa alcançar e ultrapassar os mineradores honestos.

A corrida atacante × rede honesta

A probabilidade de o atacante alcançar a cadeia honesta

Suponha que o atacante tenha uma fração q do poder de hash total (q < 0,5 para que o ataque não seja trivial). Os honestos têm p = 1 − q. A cada bloco, a vantagem do atacante muda como uma caminhada aleatória (random walk): ele ganha 1 bloco com probabilidade q, perde 1 bloco com probabilidade p.

A probabilidade de o atacante, partindo de 0 blocos de vantagem, algum dia alcançar uma vantagem de z blocos é análoga à probabilidade de sucesso na ruína do jogador. No caso do ataque de 51%, o atacante está atrás por z blocos e precisa alcançar os honestos (vantagem = 0).

Quando q < p (atacante com menos da metade do poder de hash), a probabilidade de ele eventualmente alcançar a cadeia honesta diminui exponencialmente com z:

# p = prob. de um nó honesto encontrar o prox. bloco
# q = prob. de o atacante encontrar o prox. bloco
# z = blocos de vantagem que o atacante precisa recuperar

def attacker_catch_up(q, z)
  p = 1 - q
  # probabilidade de o atacante nunca alcançar
  # (forma simplificada: razao (q/p)^(z+1) para q < 0.5)
  (q / p)**(z + 1)
end

# Com 10% do poder de hash (q=0.1):
puts attacker_catch_up(0.1, 0) # 0.1111 — 11% alcanca de 1 bloco
puts attacker_catch_up(0.1, 1) # 0.0123 —  1% alcanca de 2 blocos
puts attacker_catch_up(0.1, 5) # 1.9e-06 — 0.0002%

Isso mostra que mesmo um atacante com 10% do poder de hash total tem 11% de chance de alcançar a cadeia honesta se estiver apenas 1 bloco atrás. Mas essa chance cai rapidamente: para 6 blocos atrás, é de apenas 1 em 50.000.

A forma simplificada (q/p)^(z+1) é uma aproximação válida quando z é pequeno e q << p. Para valores precisos, usa-se a equação completa de Satoshi, que incorpora a distribuição de Poisson dos blocos encontrados pelo atacante.

A Análise de Satoshi

Seção 11 do whitepaper: a probabilidade de um ataque reverter confirmações

Na seção 11 do whitepaper do Bitcoin, Satoshi Nakamoto combinou os dois processos — Poisson e ruína do jogador — em uma única equação que calcula a probabilidade de um atacante conseguir substituir z blocos da blockchain.

A intuição é: o atacante segue uma distribuição de Poisson com taxa λ = z · q/p (o número esperado de blocos que ele consegue minerar enquanto os honestos mineram z blocos). Para cada possível número de blocos k que ele pode minerar nesse período, calculamos a probabilidade de ele conseguir alcançar os honestos a partir desse ponto. Somamos tudo.

# p = prob. de um nó honesto encontrar o prox. bloco
# q = prob. de o atacante encontrar o prox. bloco
# z = blocos que o atacante precisa recuperar

def attacker_success_probability(q, z)
  p = 1 - q
  lambda = z * (q / p)
  sum = 1.0

  for k in 0..z
    poisson = Math.exp(-lambda)
    for i in 1..k
      poisson *= lambda / i
    end
    sum -= poisson * (1 - (q / p)**(z - k))
  end

  return sum
end

# Tabela de probabilidades (fonte: whitepaper §11):
# q=0.1, z=0 => 100%
# q=0.1, z=1 => 20.4%
# q=0.1, z=2 => 5.7%
# q=0.1, z=3 => 1.8%
# q=0.1, z=4 => 0.6%
# q=0.1, z=5 => 0.2%
# q=0.1, z=6 => 0.06%  <--- 6 confirmacoes
# q=0.3, z=6 => 11.7%  <--- 30% do hash ainda tem 12% de chance

O significado de 6 confirmações

Por que 6 blocos é o padrão da indústria

A tabela gerada pela equação de Satoshi mostra que, para um atacante com 10% do poder de hash (q=0,1), a probabilidade de reverter uma transação após 6 confirmações é de aproximadamente 0,06% — ou 1 em 1.667.

Esse é o motivo pelo qual a maioria das exchanges e serviços espera 6 confirmações (≈1 hora) para aceitar um pagamento como final. Não é uma certeza absoluta, mas um risco aceitável para a maioria dos cenários.

Para diferentes níveis de poder de hash do atacante, o número de confirmações necessário para atingir o mesmo nível de segurança varia dramaticamente:

Para uma transação de alto valor, você pode esperar mais confirmações. Para uma compra de café, zero confirmações (transação vista na rede, mas ainda não minerada) pode ser aceitável — o risco de um ataque de 51% específico para essa transação é menor que o custo de realizá-lo.

Você pode testar diferentes cenários com o simulador interativo abaixo:

Ícone Ferramenta Simulador de Ataque

Probabilidade de Ataque

Dado o seu poder de mineração, qual a chance de você alcançar (e substituir) a cadeia honesta estando alguns blocos atrás? (fórmula da Seção 11 do whitepaper.)

%

Limitações do modelo

O mundo real não é uma equação

A análise de Satoshi, embora elegantemente matemática, faz algumas simplificações que nem sempre se sustentam na prática:

Apesar dessas limitações, o modelo estocástico continua sendo a base da nossa compreensão da segurança do Bitcoin. Ele fornece uma estrutura quantitativa para responder à pergunta mais fundamental do sistema: quando uma transação é realmente final?

Recursos