O mecanismo de consenso do Bitcoin refere-se ao fato de que é muito difícil, pelo menos teoricamente, para um minerador (ou pool de mineração) tentar usar seu próprio poder de aritmética para praticar engano ou sabotagem. O mecanismo de consenso do Bitcoin se baseia na premissa de que a grande maioria dos mineradores, em seu próprio interesse, manterá todo o sistema Bitcoin minerando honestamente. No entanto, quando um minerador ou grupo de mineradores emerge com uma grande quantidade de poder de computação no sistema, eles podem alcançar o objetivo de minar a segurança e confiabilidade da rede Bitcoin atacando o mecanismo de consenso do Bitcoin.
Vale ressaltar que os ataques de consenso só podem afetar o consenso futuro de toda a blockchain, ou, no máximo, o consenso de alguns blocos no passado recente (até 10 blocos no passado). E à medida que o tempo passa, torna-se cada vez menos provável que toda a blockchain do Bitcoin seja adulterada. Na teoria, um fork de blockchain pode se tornar muito longo, mas na prática, o poder de aritmética necessário para implementar um fork de blockchain muito longo é muito, muito grande, e à medida que toda a blockchain do Bitcoin cresce gradualmente, os blocos passados podem basicamente ser considerados inalteráveis pelo fork. Além disso, os ataques de consenso não afetam a chave privada do usuário, bem como o algoritmo de criptografia (ECDSA). Um ataque de consenso não pode roubar bitcoins de outras carteiras, pagar bitcoins sem uma assinatura, redistribuir bitcoins, alterar transações passadas ou alterar registros de posse de bitcoins. O único impacto que um ataque de consenso pode ter é afetar os blocos mais recentes (até 10) e afetar a geração de blocos futuros por meio de negação de serviço.
Um cenário típico de um ataque de consenso é o "ataque de 51%". Imagine um cenário em que um grupo de mineradores controla 51% do poder de computação de toda a rede Bitcoin, e eles se unem com a intenção de atacar todo o sistema Bitcoin. Como esse grupo de mineradores pode gerar a maioria dos blocos, eles podem intencionalmente criar um fork de blockchain para "pagamento duplo" ou bloquear uma transação específica ou atacar um endereço de carteira específico por meio de uma negação de serviço. Um ataque de fork/pagamento duplo de blockchain ocorre quando um atacante renega uma transação recente e reconstrói um novo bloco antes dessa transação, criando assim um novo fork e permitindo o pagamento duplo. Com a garantia de poder de aritmética suficiente, um atacante pode adulterar seis ou mais blocos recentes de uma vez, fazendo com que as transações, que de outra forma seriam inalteráveis, contidas nesses blocos desapareçam. Vale ressaltar que os pagamentos duplos só podem ser feitos em transações que ocorrem em carteiras de propriedade do atacante, pois apenas o proprietário da carteira pode gerar uma assinatura legítima para transações de pagamento duplo. Um atacante só pode realizar um ataque de pagamento duplo em suas próprias transações, mas tal ataque é lucrativo quando a transação corresponde a uma compra irreversível.
Vamos analisar um exemplo real de um "ataque de 51%". No Capítulo 1, falamos sobre uma transação entre Alice e Bob para uma xícara de café usando Bitcoin. Bob, o proprietário da cafeteria, está disposto a fornecer a Alice um café quando sua transferência for confirmada em zero, porque o risco de um "ataque de 51%" em uma transação tão pequena é pequeno em comparação com a imediatidade da compra do cliente (Alice pode pegar o café imediatamente). É da mesma forma que a maioria das cafeterias não se dá ao trabalho de pedir uma assinatura para compras com cartão de crédito abaixo de $25, porque é mais caro pedir uma assinatura de cartão de crédito do que o risco de o cliente revogar o pagamento com cartão de crédito. Portanto, o risco de pagamento duplo para transações grandes pagas com Bitcoin é muito maior, pois o comprador (atacante) pode cancelar a transação real transmitindo uma transação falsificada pela rede que é idêntica ao UTXO da transação real. O pagamento duplo pode ser feito de duas maneiras: antes que a transação seja confirmada ou pelo atacante por meio de um fork de blockchain. A pessoa que realiza o ataque de 51% pode cancelar a transação registrada no fork antigo e depois regenerar uma transação do mesmo valor no novo fork, alcançando assim o pagamento duplo.
Para evitar esse tipo de ataque, os comerciantes que vendem itens em grande quantidade devem esperar até que a transação receba seis confirmações em toda a rede antes de entregar o item. Alternativamente, o comerciante deve usar uma conta de terceiros com múltiplas assinaturas para a transação e também esperar até que a conta da transação tenha recebido múltiplas confirmações em toda a rede antes de entregar o item. Quanto mais confirmações uma transação tiver, mais difícil será para um atacante adulterá-la por meio de um ataque de 51%. Para transações grandes, usar pagamentos em Bitcoin é conveniente e eficiente tanto para compradores quanto para vendedores, mesmo que os produtos sejam enviados 24 horas após o pagamento. Após 24 horas, a transação terá pelo menos 144 confirmações em toda a rede (reduzindo efetivamente a probabilidade de um ataque de 51%).
Além do ataque de "pagamento duplo", outro cenário de ataque no ataque de consenso é a negação de serviço a um endereço de Bitcoin específico. Um atacante que possui a maioria do poder de computação no sistema pode facilmente ignorar uma transação específica. Se a transação existir em um bloco gerado por outro minerador, o atacante pode intencionalmente bifurcar o bloco, regenerá-lo e remover a transação que deseja ignorar do bloco. O resultado desse ataque é que, enquanto esse atacante tiver a vasta maioria do poder de computação no sistema, ele pode interferir continuamente em todas as transações geradas por um endereço de carteira específico ou grupo de endereços com o objetivo de negar serviço a esses endereços.
Observe que o ataque de 51% não requer pelo menos 51% do poder de computação do atacante para ser lançado, como o nome sugere; na verdade, ele ainda pode tentar lançar tal ataque mesmo que tenha menos de 51% do poder de computação do sistema. O motivo pelo qual é chamado de ataque de 51% é simplesmente porque quando o poder de computação do atacante atinge o limite de 51%, sua tentativa de ataque quase certamente terá sucesso. Essencialmente, um ataque de consenso é como um sistema onde toda a aritmética dos mineradores é dividida em dois grupos, um com aritmética honesta e outro com aritmética de atacante, e ambos os grupos competem para ser o primeiro a calcular novos blocos na cadeia de blocos, exceto que a aritmética do atacante calcula blocos cuidadosamente construídos que contêm ou excluem certas transações. Assim, quanto menos poder de computação o atacante tiver, menos provável será que ele vença o duelo. Por outro lado, quanto mais poder de computação um atacante tiver, mais longa será a cadeia de blocos bifurcados que ele pode criar intencionalmente, e mais blocos recentes que podem ser adulterados ou futuros blocos sob seu controle. Alguns grupos de pesquisa de segurança usaram modelos estatísticos para concluir que 30% do poder de computação da rede seria suficiente para lançar um ataque de 51%.
O aumento dramático no poder de computação em toda a rede tornou impossível que o sistema Bitcoin seja atacado por um único minerador, pois não é mais possível para um único minerador ocupar sequer 1% do poder de computação da rede. Mas as pools de mineração controladas centralmente introduzem o risco de que um operador de pool ataque por lucro. O operador de pool controla a geração de blocos candidatos e também controla quais transações são colocadas nos blocos recém-gerados. Dessa forma, o operador de pool tem o poder de excluir transações específicas ou pagamentos duplos. Se esse poder for abusado pelo operador de pool de forma sutil e medida, então o operador de pool pode lançar ataques de consenso e se beneficiar deles sem ser notado.
No entanto, nem todos os atacantes estão atrás de lucro. Um cenário possível é que o atacante esteja lançando um ataque simplesmente para perturbar todo o sistema Bitcoin, em vez de por lucro. Um atacante com a intenção de perturbar o sistema Bitcoin exigiria um grande investimento e planejamento cuidadoso, então é concebível que tal ataque provavelmente viria de uma organização financiada pelo governo. Da mesma forma, tais atacantes podem comprar máquinas de mineração, operar pools de mineração e realizar ataques de consenso, como negação de serviço, abusando do poder mencionado do operador de pool. No entanto, à medida que o poder de computação da rede Bitcoin cresce geometricamente e rapidamente, esses cenários de ataque teoricamente viáveis tornaram-se cada vez mais difíceis de implementar na prática. Atualizações recentes no sistema Bitcoin, como o protocolo de mineração P2Pool, que visa descentralizar ainda mais o controle de mineração, também estão tornando esses ataques teoricamente viáveis cada vez mais difíceis.
Não há dúvida de que um ataque sério de consenso certamente reduzirá a confiança no sistema Bitcoin, o que, por sua vez, poderia levar a uma queda no preço do Bitcoin. No entanto, o sistema Bitcoin e o software relacionado também estão constantemente melhorando, então a comunidade Bitcoin também está destinada a responder rapidamente a qualquer ataque de consenso para tornar o sistema Bitcoin inteiro mais robusto e confiável do que nunca.