O Bitcoin não é estritamente BFT: troca pressupostos sobre poder computacional por um consenso probabilístico e aberto
O mecanismo de consenso do Bitcoin não é uma replicação de máquina de estados com tolerância bizantina a falhas (BFT-SMR) estrita no sentido tradicional, mas uma implementação assíncrona aproximada, baseada na teoria das probabilidades. Essa diferença decorre da busca extrema do Bitcoin pela abertura: qualquer nó pode entrar ou sair livremente da rede, o que invalida diretamente os pressupostos dos protocolos BFT clássicos, que dependem de um conjunto fixo de nós e de comunicação síncrona. Para resistir a falhas bizantinas num ambiente aberto — ou, mais precisamente, para oferecer resistência a ataques Sybil —, o Bitcoin substitui os pressupostos tradicionais de segurança por pressupostos sobre o poder computacional. O ponto central dessa mudança é estabelecer uma forte ligação entre o poder computacional e o trabalho computacional efetivamente realizado; a lógica subjacente está profundamente enraizada na teoria da complexidade computacional. No modelo do oráculo aleatório (Random Oracle Model, RO), o protocolo usa o número de consultas a funções hash como unidade de recursos e pressupõe que cada consulta produz uma saída independente e uniformemente distribuída. Nesse ambiente idealizado, a probabilidade de encontrar uma prova de trabalho (PoW) válida é determinada inteiramente pela dificuldade da rede, de modo que o orçamento de consultas do atacante limita diretamente a quantidade de trabalho válido que pode produzir. Por mais identidades falsas que o atacante crie, não consegue ultrapassar esse limite de orçamento computacional, o que estabelece a resistência a ataques Sybil. Contudo, o mundo real não corresponde ao modelo idealizado de RO. Ao sair desse enquadramento abstrato, o protocolo tem de recorrer a pressupostos concretos de dificuldade computacional para quantificar a capacidade de aceleração do atacante. É precisamente neste ponto que intervém a complexidade de granularidade fina (Fine-grained Complexity): precisamos de garantias quantitativas sobre os custos computacionais, e a diferença de eficiência entre o algoritmo honesto e o melhor algoritmo de ataque determina diretamente a proporção máxima de recursos maliciosos que o protocolo consegue tolerar. Um trabalho de 2024 baseado em Beacon desenvolve ainda mais a PoW nesta linha: o Beacon fornece, em momentos determinados, material aleatório para gerar novos desafios, e a sua segurança assenta em pressupostos de dificuldade computacional, em vez de depender apenas da imprevisibilidade das funções hash.
Para transformar uma tarefa computacional em segurança de consenso, é essencial definir a natureza de uma «cadeia» e a sua relação de vinculação ao registo histórico. Na abstração clássica de BFT-SMR, o objetivo do protocolo é estabelecer uma ordem total (Total Order) de operações. Cada nó honesto determina localmente o prefixo do registo que pode confirmar, com base nas mensagens do protocolo, e o consenso garante que essas decisões locais são compatíveis. Nesse contexto, o número de sequência representa diretamente a ordem de execução das operações, pois o protocolo garante que o conteúdo confirmado em cada posição é o mesmo. No Bitcoin, porém, a cadeia é uma representação ordenada do histórico, construída por meio de trabalho computacional, e é necessário especificar claramente que parte do histórico é apoiada por cada prova de trabalho. Se os blocos fossem identificados apenas pela altura, não seria possível determinar a que cadeia pertencem: a que bloco de altura 99 se liga um bloco de altura 100? Isso determina o ramo do histórico que ele herda. O Bitcoin resolve esta questão incluindo o hash do bloco anterior (Previous Hash) na entrada da PoW, obrigando cada bloco a referenciar explicitamente o seu bloco pai. Seguindo essas referências de hash até ao bloco génese, é possível determinar de forma única todo o histórico herdado pelo bloco e definir a sua altura na cadeia. O mecanismo de Previous Hash organiza trabalhos de mineração independentes numa cadeia, vinculando cada prova de trabalho a um ramo específico do histórico e permitindo acumular o trabalho realizado nesse mesmo ramo.
Este mecanismo de vinculação também define as regras de extensão da cadeia e a sua resistência à pré-mineração. Suponhamos que a cabeça da cadeia atual está na altura h. Para prolongá-la, é necessário minerar o bloco seguinte usando como entrada o hash desse bloco. Se for usado o hash do bloco pai de altura h-1, o bloco minerado fará parte de um ramo concorrente de altura h e não aumentará o comprimento nem o trabalho acumulado da cadeia principal atual. Para herdar o trabalho já acumulado pela cadeia mais longa atual, é necessário continuar a calcular sobre a cabeça dessa cadeia. Este mecanismo implica uma importante restrição de segurança: os nós maliciosos não conseguem obter uma vantagem adicional por meio de previsões ou pré-mineração. No modelo RO, não é possível prever eficazmente o hash de um bloco concreto que ainda não foi produzido e, por isso, também não é possível preparar antecipadamente o trabalho para o seu sucessor. Embora o atacante possa minerar antecipadamente a sua própria bifurcação, não pode, depois de os nós honestos produzirem um novo bloco, «transferir» para depois dele o trabalho pré-minerado, de modo a herdar o trabalho mais recente. Para herdar o trabalho do bloco mais recente, é necessário calcular em tempo real sobre a cabeça atual da cadeia. Esta propriedade garante a atualidade e a impossibilidade de transferência das provas de trabalho, impedindo que o armazenamento de recursos distorça o processo de consenso.
Numa perspetiva geral, o consenso de Nakamoto articula a complexidade computacional, a criptografia e a computação distribuída numa cadeia lógica completa. A complexidade computacional fornece uma base quantitativa para o custo do trabalho, garantindo que o atacante tem de despender recursos proporcionais aos dos nós honestos para influenciar o consenso. A criptografia cria credenciais de trabalho verificáveis publicamente e demonstra que essas credenciais continuam a implicar os custos computacionais correspondentes em cenários de seleção maliciosa de instâncias, pré-processamento e reutilização, impedindo a falsificação ou a reutilização ineficiente de provas de trabalho. A computação distribuída, por sua vez, define a rede síncrona e o modelo do adversário, estabelece regras de seleção da cadeia (a regra da cadeia mais longa) e mecanismos de confirmação, convertendo as restrições de recursos em capacidade de tolerância a falhas no quadro BFT-SMR. A lógica central de todo o sistema consiste em converter a proporção dos recursos computacionais do atacante em restrições de falhas que o protocolo distribuído consegue gerir e, com base nisso, estabelecer o consenso. O sucesso ou insucesso do Bitcoin não depende, em última análise, de conseguir alcançar tolerância bizantina absoluta a falhas, mas de conseguir manter, de forma continuada, a validade dos pressupostos sobre o poder computacional e uma relação estável entre os custos computacionais e a segurança do consenso num ambiente aberto e descentralizado. Com a melhoria da eficiência do hardware e as mudanças na distribuição do poder computacional, a estabilidade desta relação continuará a ser posta à prova. Ainda assim, a lógica subjacente — trocar custos computacionais por confiança — permanece uma das bases arquitetónicas mais resilientes dos sistemas monetários descentralizados atuais.
Siga-me para não perder a próxima leitura rápida do mercado.
O mecanismo de consenso do Bitcoin não é uma replicação de máquina de estados com tolerância bizantina a falhas (BFT-SMR) estrita no sentido tradicional, mas uma implementação assíncrona aproximada, baseada na teoria das probabilidades. Essa diferença decorre da busca extrema do Bitcoin pela abertura: qualquer nó pode entrar ou sair livremente da rede, o que invalida diretamente os pressupostos dos protocolos BFT clássicos, que dependem de um conjunto fixo de nós e de comunicação síncrona. Para resistir a falhas bizantinas num ambiente aberto — ou, mais precisamente, para oferecer resistência a ataques Sybil —, o Bitcoin substitui os pressupostos tradicionais de segurança por pressupostos sobre o poder computacional. O ponto central dessa mudança é estabelecer uma forte ligação entre o poder computacional e o trabalho computacional efetivamente realizado; a lógica subjacente está profundamente enraizada na teoria da complexidade computacional. No modelo do oráculo aleatório (Random Oracle Model, RO), o protocolo usa o número de consultas a funções hash como unidade de recursos e pressupõe que cada consulta produz uma saída independente e uniformemente distribuída. Nesse ambiente idealizado, a probabilidade de encontrar uma prova de trabalho (PoW) válida é determinada inteiramente pela dificuldade da rede, de modo que o orçamento de consultas do atacante limita diretamente a quantidade de trabalho válido que pode produzir. Por mais identidades falsas que o atacante crie, não consegue ultrapassar esse limite de orçamento computacional, o que estabelece a resistência a ataques Sybil. Contudo, o mundo real não corresponde ao modelo idealizado de RO. Ao sair desse enquadramento abstrato, o protocolo tem de recorrer a pressupostos concretos de dificuldade computacional para quantificar a capacidade de aceleração do atacante. É precisamente neste ponto que intervém a complexidade de granularidade fina (Fine-grained Complexity): precisamos de garantias quantitativas sobre os custos computacionais, e a diferença de eficiência entre o algoritmo honesto e o melhor algoritmo de ataque determina diretamente a proporção máxima de recursos maliciosos que o protocolo consegue tolerar. Um trabalho de 2024 baseado em Beacon desenvolve ainda mais a PoW nesta linha: o Beacon fornece, em momentos determinados, material aleatório para gerar novos desafios, e a sua segurança assenta em pressupostos de dificuldade computacional, em vez de depender apenas da imprevisibilidade das funções hash.
Para transformar uma tarefa computacional em segurança de consenso, é essencial definir a natureza de uma «cadeia» e a sua relação de vinculação ao registo histórico. Na abstração clássica de BFT-SMR, o objetivo do protocolo é estabelecer uma ordem total (Total Order) de operações. Cada nó honesto determina localmente o prefixo do registo que pode confirmar, com base nas mensagens do protocolo, e o consenso garante que essas decisões locais são compatíveis. Nesse contexto, o número de sequência representa diretamente a ordem de execução das operações, pois o protocolo garante que o conteúdo confirmado em cada posição é o mesmo. No Bitcoin, porém, a cadeia é uma representação ordenada do histórico, construída por meio de trabalho computacional, e é necessário especificar claramente que parte do histórico é apoiada por cada prova de trabalho. Se os blocos fossem identificados apenas pela altura, não seria possível determinar a que cadeia pertencem: a que bloco de altura 99 se liga um bloco de altura 100? Isso determina o ramo do histórico que ele herda. O Bitcoin resolve esta questão incluindo o hash do bloco anterior (Previous Hash) na entrada da PoW, obrigando cada bloco a referenciar explicitamente o seu bloco pai. Seguindo essas referências de hash até ao bloco génese, é possível determinar de forma única todo o histórico herdado pelo bloco e definir a sua altura na cadeia. O mecanismo de Previous Hash organiza trabalhos de mineração independentes numa cadeia, vinculando cada prova de trabalho a um ramo específico do histórico e permitindo acumular o trabalho realizado nesse mesmo ramo.
Este mecanismo de vinculação também define as regras de extensão da cadeia e a sua resistência à pré-mineração. Suponhamos que a cabeça da cadeia atual está na altura h. Para prolongá-la, é necessário minerar o bloco seguinte usando como entrada o hash desse bloco. Se for usado o hash do bloco pai de altura h-1, o bloco minerado fará parte de um ramo concorrente de altura h e não aumentará o comprimento nem o trabalho acumulado da cadeia principal atual. Para herdar o trabalho já acumulado pela cadeia mais longa atual, é necessário continuar a calcular sobre a cabeça dessa cadeia. Este mecanismo implica uma importante restrição de segurança: os nós maliciosos não conseguem obter uma vantagem adicional por meio de previsões ou pré-mineração. No modelo RO, não é possível prever eficazmente o hash de um bloco concreto que ainda não foi produzido e, por isso, também não é possível preparar antecipadamente o trabalho para o seu sucessor. Embora o atacante possa minerar antecipadamente a sua própria bifurcação, não pode, depois de os nós honestos produzirem um novo bloco, «transferir» para depois dele o trabalho pré-minerado, de modo a herdar o trabalho mais recente. Para herdar o trabalho do bloco mais recente, é necessário calcular em tempo real sobre a cabeça atual da cadeia. Esta propriedade garante a atualidade e a impossibilidade de transferência das provas de trabalho, impedindo que o armazenamento de recursos distorça o processo de consenso.
Numa perspetiva geral, o consenso de Nakamoto articula a complexidade computacional, a criptografia e a computação distribuída numa cadeia lógica completa. A complexidade computacional fornece uma base quantitativa para o custo do trabalho, garantindo que o atacante tem de despender recursos proporcionais aos dos nós honestos para influenciar o consenso. A criptografia cria credenciais de trabalho verificáveis publicamente e demonstra que essas credenciais continuam a implicar os custos computacionais correspondentes em cenários de seleção maliciosa de instâncias, pré-processamento e reutilização, impedindo a falsificação ou a reutilização ineficiente de provas de trabalho. A computação distribuída, por sua vez, define a rede síncrona e o modelo do adversário, estabelece regras de seleção da cadeia (a regra da cadeia mais longa) e mecanismos de confirmação, convertendo as restrições de recursos em capacidade de tolerância a falhas no quadro BFT-SMR. A lógica central de todo o sistema consiste em converter a proporção dos recursos computacionais do atacante em restrições de falhas que o protocolo distribuído consegue gerir e, com base nisso, estabelecer o consenso. O sucesso ou insucesso do Bitcoin não depende, em última análise, de conseguir alcançar tolerância bizantina absoluta a falhas, mas de conseguir manter, de forma continuada, a validade dos pressupostos sobre o poder computacional e uma relação estável entre os custos computacionais e a segurança do consenso num ambiente aberto e descentralizado. Com a melhoria da eficiência do hardware e as mudanças na distribuição do poder computacional, a estabilidade desta relação continuará a ser posta à prova. Ainda assim, a lógica subjacente — trocar custos computacionais por confiança — permanece uma das bases arquitetónicas mais resilientes dos sistemas monetários descentralizados atuais.
Siga-me para não perder a próxima leitura rápida do mercado.