Ataque de 51%

Reescrever a blockchain construindo uma cadeia mais longa

Diagrama mostrando uma transação sendo removida da blockchain em um ataque de 51%.

Um ataque de 51% se refere ao ato de construir intencionalmente uma nova cadeia mais longa de blocos para substituir blocos já na blockchain. Isso permite substituir transações que já foram mineradas na blockchain.

Esse tipo de ataque é mais fácil de realizar quando você tem a maioria do poder de mineração, e é por isso que é chamado de "ataque da maioria" ou "ataque de 51%".

Método

Como funciona um ataque de 51%?

Os nós sempre aceitam a cadeia conhecida mais longa de blocos como a versão válida da blockchain. Então, se você quer "desfazer" uma transação da blockchain, basta construir uma nova cadeia de blocos mais longa sem aquela transação nela.

Diagrama de um ataque de 51% para substituir uma transação de uma cadeia mais longa anterior.
Digamos que pagamos por um carro em bitcoin e saímos dirigindo com ele.

Quando os nós recebem essa nova cadeia mais longa de blocos, eles fazem uma reorganização da cadeia para desativar os blocos da antiga cadeia mais longa e ativar os blocos da nova cadeia mais longa que você construiu.

Diagrama de um ataque de 51% para substituir uma transação de uma cadeia mais longa anterior.
As transações na antiga cadeia mais longa agora são inválidas. É como se o pagamento do carro nunca tivesse acontecido.

Assim, ao construir uma nova cadeia mais longa para substituir uma existente, você efetivamente reescreve a blockchain e cria um novo histórico de transações que todo nó da rede vai adotar. Como resultado, você reverteu transações que antes pensávamos serem parte permanente da blockchain.

Mas realizar um ataque de 51% com sucesso não é fácil.

Você iria querer incluir uma transação substituta na nova cadeia para enviar os bitcoins a um novo destino (ex.: ao seu endereço, e não ao vendedor do carro). Caso contrário, a transação original poderia ser re-minerada na nova cadeia.

Prevenção

O que impede um ataque de 51%?

Todo minerador é incentivado a construir sobre a cadeia mais longa atual de blocos. Então, se o poder de mineração combinado de todos os outros mineradores da rede for maior que o seu, fica incrivelmente difícil superar os outros mineradores para construir uma cadeia mais longa e substituir a existente.

Diagrama mostrando mineradores trabalhando juntos para estender a cadeia mais longa atual.
Mineradores trabalhando juntos conseguem construir uma cadeia mais rápido do que você sozinho.

Mas, claro, se você conseguir adquirir mais poder de mineração do que todos os outros mineradores combinados, então você tem a capacidade de ultrapassar a cadeia mais longa atual e construir uma nova cadeia mais longa para todos os outros adotarem.

Diagrama mostrando como você pode construir uma cadeia mais longa mais rápido que todos os outros mineradores combinados se tiver a maioria do poder de hash.
Se você tem a maioria do poder de mineração, é só uma questão de tempo até construir uma cadeia mais longa.

Então, para ajudar a impedir que isso aconteça, queremos tornar difícil que um único minerador adquira a maioria do poder de mineração. Isso é alcançado permitindo que qualquer pessoa no mundo minere e oferecendo uma recompensa de bloco como incentivo para construir na cadeia conhecida mais longa.

Diagrama mostrando a recompensa de bloco como incentivo para os mineradores estenderem a cadeia mais longa.
A recompensa de bloco só pode ser gasta quando atinge 100 blocos de profundidade na cadeia mais longa.

Como resultado, os mineradores concentram sua energia em construir a mesma cadeia, tornando difícil (ou ao menos muito caro) que qualquer indivíduo tente reescrever os blocos da blockchain.

Enquanto a maioria do poder de CPU for controlada por nós que não estão cooperando para atacar a rede, eles gerarão a cadeia mais longa e superarão os atacantes.
Satoshi Nakamoto, Whitepaper do Bitcoin

Praticidade

Quão difícil é realizar um ataque de 51%?

A parte mais complicada de realizar um ataque de 51% seria conseguir, em primeiro lugar, todo o hardware necessário para realizar o ataque, pois isso seria incrivelmente caro.

Porém, se você conseguisse adquirir a maioria do poder de mineração, seria só uma questão de tempo até construir uma nova cadeia mais longa.

Dito isso, é preciso mais trabalho para substituir um número maior de blocos do que apenas alguns. Então, quanto mais fundo uma transação chega na blockchain, mais tempo e energia são necessários para revertê-la.

Diagrama mostrando como é mais difícil substituir blocos quanto mais fundo eles estão na blockchain.
Transações ficam mais difíceis de substituir quanto mais fundo entram na blockchain.

Mas, de novo, isso supõe que você consiga o hardware para atingir 51% ou mais do poder de mineração e superar todos os outros mineradores.

Mesmo assim, você ainda pode tentar realizar esse tipo de ataque com menos de 50% do poder de mineração, mas as probabilidades estão muito contra você…

Probabilidade

Você consegue reescrever a blockchain com menos de 50% do poder?

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.)

%

É possível reescrever a blockchain sem a maioria do poder de mineração, mas você vai precisar de sorte.

A mineração é imprevisível, então, mesmo com pouco poder de mineração, nada impede você de ter sorte e minerar os próximos 2 blocos seguidos. É improvável, mas não impossível. A probabilidade depende de quanto poder de mineração você tem em relação a todos os outros.

Diagrama mostrando como você precisaria de sorte para reescrever a blockchain com uma minoria do poder de mineração.

Claro, quanto mais fundo uma transação está na blockchain, mais sorte você vai precisar para minerar X blocos seguidos. Se ninguém tem a maioria do poder de mineração, fica exponencialmente mais difícil substituir uma transação quanto mais fundo ela chega na blockchain.

Gráfico mostrando a probabilidade de substituir blocos na blockchain com base no poder de mineração.
Se um minerador tem 40% do poder de mineração, ele tem cerca de 50% de chance de substituir uma transação 5 blocos de profundidade na cadeia.

Então, a menos que você tenha uma proporção significativa do poder de mineração total da rede bitcoin, suas chances de substituir uma transação minerada são pequenas, e essas chances diminuem rapidamente conforme a transação avança na cadeia.

Aqui está uma tabela com as suas probabilidades exatas:

Probabilidade de substituir os X blocos do topo da blockchain com base no percentual de poder de mineração.
Blocos 50%+ de controle 40% de controle 30% de controle 20% de controle 10% de controle
1100%73,6%44,6%20,4%5,1%
2100%66,4%32,5%10,3%1,3%
3100%60,3%23,9%5,3%0,4%
4100%55,0%17,7%2,7%0,1%
5100%50,4%13,2%1,4%0,02%
6100%46,2%9,9%0,7%0,006%
7100%42,5%7,4%0,4%0,001%
8100%39,1%5,6%0,2%0,0004%
9100%36,0%4,2%0,1%0,0001%
10100%33,2%3,1%0,06%0,00003%

Os números da tabela acima supõem que você tenta substituir blocos construindo uma cadeia alternativa um bloco mais longa que a cadeia mais longa atual.

Equação

A probabilidade de conseguir reescrever blocos na blockchain é uma função de quanto poder de mineração você tem e quantos blocos você quer tentar substituir.

Aqui está a equação do Whitepaper do Bitcoin (Seção 11):

A equação para atacar a blockchain, retirada do whitepaper do Bitcoin.
A prova de que os blocos ficam mais difíceis de substituir quanto mais fundo estão na cadeia é parte importante da integridade e da segurança do sistema.

De qualquer forma, é assim que essa equação fica em código Ruby:

# p = probabilidade de um nó honesto encontrar o próximo bloco
# q = probabilidade de o atacante encontrar o próximo bloco
# z = número de blocos a recuperar

def attacker_success_probability(q, z)
  p = 1 - q
  lambda = z * (q / p) # número esperado de ocorrências na distribuição de Poisson
  sum = 1.0

  for k in 0..z
    poisson = Math.exp(-lambda) # exp() eleva e (logaritmo natural) a um número
    for i in 1..k
      poisson *= lambda / i
      puts poisson
    end

    sum -= poisson * (1 - (q/p)**(z-k) )
  end

  return sum
end

# Exemplo
puts attacker_success_probability(0.4, 5) #=> 0.5506251290702077

A equação acima calcula a probabilidade de alcançar a cadeia mais longa (estando um número específico de blocos atrás). Se você quer substituir blocos na cadeia, precisa ir um bloco mais longe.

Gráfico

Gráfico mostrando a probabilidade de sucesso ao substituir blocos na blockchain.
Há um decaimento exponencial na probabilidade de substituir uma transação quanto mais fundo ela entra na blockchain.

Perguntas Frequentes

Alguém já realizou um ataque de 51% no Bitcoin com sucesso?

Não, ainda não.

Alguns mineradores chegaram perto de 50% ou mais do poder total de mineração ao longo da história do Bitcoin, mas ninguém realizou de fato um ataque de 51% bem-sucedido.

O caso mais famoso foi o da GHash.io, que em 2014 chegou perto de 50% do poder de mineração, acendendo um alerta na comunidade. Desde então, o poder de mineração se distribuiu entre vários pools, e hoje nenhum deles isolado chega perto desse limite. O paralelo abaixo mostra essa evolução da descentralização da mineração:

Gráfico de pizza da distribuição da mineração de Bitcoin em 2014, com a GHash.io ocupando perto de 50% do poder de mineração.
2014: a GHash.io chegou perto de 50% do poder de mineração.
github.com/in3rsha/bitcoin-mining-distribution
Gráfico de pizza da distribuição da mineração de Bitcoin em junho de 2026, com a Foundry USA liderando com cerca de 25% e o poder dividido entre vários pools.
2026: o poder está distribuído entre vários pools (o maior, ~25%).
mempool.space/mining

Mesmo que um minerador passe de 50% do poder de mineração, isso não significa necessariamente que vá realizar um ataque; significa só que ele pode. Aliás, com tanto poder, provavelmente é mais lucrativo continuar minerando blocos e coletando recompensas de bloco do que reverter uma única transação (e afundar o valor do bitcoin por causa do seu ataque).

Quanto poder de hash eu preciso para um ataque de 51%?

Você pode usar o valor de alvo atual para estimar quanto poder de hash precisaria para obter o controle da maioria.

O alvo sobe e desce conforme a rapidez com que todos os mineradores da rede conseguem minerar novos blocos. Podemos, portanto, usá-lo para descobrir quão rápido precisamos fazer hash para superar a velocidade atual da rede.

1. Obtenha o alvo atual

Primeiro, podemos obter o alvo atual olhando o campo "bits" dentro do cabeçalho do bloco minerado mais recentemente.

$ bitcoin-cli getblockcount
953548

$ bitcoin-cli getblockhash 953548
0000000000000000000109034ee4e258865d51a6a37f9de255a9534f04dab40b

$ bitcoin-cli getblockheader 0000000000000000000109034ee4e258865d51a6a37f9de255a9534f04dab40b | grep bits
"bits": "1702068f",

Agora, esse valor de "bits" é apenas o alvo em formato compacto. Então, convertendo de bits para alvo, temos:

0x00000000000000000002068f0000000000000000000000000000000000000000
Ícone Ferramenta Bits do Alvo

Target Bits

Converta entre um alvo (target) e sua representação compacta bits.

0x
0 bytes 0 bytes

E esse é o número abaixo do qual todos os mineradores precisam obter um hash de bloco para minerar um bloco.

2. Calcule o número médio de hashes necessários para minerar o próximo bloco

Podemos calcular quantos hashes precisaríamos realizar (em média) para ficar abaixo desse valor de alvo dividindo a faixa de todos os resultados de hash possíveis pelo alvo:

hashes = (2**256) / 0x00000000000000000002068f0000000000000000000000000000000000000000
hashes = 596817820688841040723968

Isso nos diz que precisamos fazer 596817820688841040723968 hashes em média para minerar o próximo bloco.

Ou, em outras palavras, esse é aproximadamente o número combinado de hashes que todos os mineradores da rede estão realizando a cada 10 minutos.

Veja a explicação do cálculo do chainwork para mais informações sobre como obtemos esse "número esperado de hashes".

3. Converta para hashes por segundo

De qualquer forma, usando esse número podemos calcular os hashes por segundo da rede:

hashes por segundo = 596817820688841040723968 / 600 # há 600 segundos em 10 minutos
hashes por segundo = 994696367814735036416

Então, a taxa de hash combinada atual de todos os mineradores da rede bitcoin é de 994696367814735036416 hashes/seg.

Convertendo isso para TH/s (terahashes por segundo), temos:

terahashes por segundo = 994696367814735036416 / 10**12
terahashes por segundo = 994696367

Portanto, para adquirir 50% de controle sobre a mineração de blocos, precisaríamos construir uma fazenda de mineração capaz de realizar mais de 994.696.367 TH/s.

Recursos