iniciar
iniciar

Se você está interessado em ciência da computação, talvez já tenha ouvido falar do famoso bug do ano de 2038, que afetará todos os sistemas de computador que usam o timestamp Unix armazenado como um inteiro assinado de 32 bits. No Bitcoin, esse bug não nos preocupará. No entanto, os carimbos de data/hora do Bitcoin também têm um valor máximo que não pode ser excedido. Esse limite será atingido em 7 de fevereiro de 2016.
Então, o ano de 2106 significará a sentença de morte para o Bitcoin? Neste artigo, faremos um balanço desse evento relativamente desconhecido com você.
No protocolo Bitcoin, um blockchain é usado para evitar gastos duplos. Cada transação é colocada em um bloco com um período de tempo. Em outras palavras, colocamos uma hora e um dia em cada bloco para poder colocá-los em ordem cronológica. Esse período de tempo é o que chamamos de “carimbo de data/hora”.

Graças a esse mecanismo, quando um node recebe uma nova transação de Bitcoin aguardando confirmação, ele pode verificar que, no passado, esses mesmos Bitcoins ainda não foram gastos. Dessa forma, evitamos gastos duplos com o sistema, sem fazer com que ele dependa de uma autoridade central.
O carimbo de data/hora está no cabeçalho de cada bloco. É um número inteiro de 32 bits baseado na hora do UNIX. Para determinar esse período de tempo, contamos o número de segundos que se passaram desde 1º de janeiro de 1970, e isso nos dá um número inteiro. Por exemplo, quando estou escrevendo este artigo, 1.693.498.694 segundos se passaram desde 1970. Tudo o que preciso fazer é converter esse inteiro em binário para obter meu carimbo de data/hora. Nesse caso, isso nos daria: 01100101110001100100100101011111110. É assim que você marca a data e hora dos blocos no Bitcoin.

O carimbo de data/hora no Bitcoin é feito em números inteiros de 32 bits não assinados. Isso significa que você pode colocar 32 zeros ou um em uma linha para representar o tempo, mas não mais um. Portanto, há um limite na interpretação do tempo dentro do Bitcoin. O valor máximo que pode ser usado é o seguinte: 1111111111111111111111111111111111. Em valor decimal, isso nos dá 4.294.967.295 segundos, e esse tempo corresponde à data 7 de fevereiro de 2106.
Depois que essa data for excedida, o carimbo de data/hora transbordará e será redefinido para zero. Os sistemas de computador que usam esse formato interpretarão a data atual como 1º de janeiro de 1970, quando na realidade será 2106.

Para entender melhor esse fenômeno, vamos fazer uma analogia. Alguns odômetros de carros antigos são limitados a 6 dígitos. Como resultado, o valor máximo que pode ser exibido é 999.999 km. Quando esse limite é atingido, o contador volta a zero e começa a contar novamente desde o início. No entanto, os quilômetros já percorridos pelo carro já ocorreram. Portanto, há uma diferença entre o valor interpretado e o valor real, devido ao número de dígitos que podem ser exibidos. Para o carimbo de data/hora no Bitcoin, é exatamente o mesmo princípio.
Se nada for alterado no protocolo Bitcoin, essa discrepância entre a interpretação do timestamp e a realidade significará que nenhum novo bloco poderá ser publicado. Na verdade, existem duas restrições na data e hora de um bloco para que ele seja aceito pelos nós:
Quando o carimbo de data/hora de 32 bits atingir seu valor máximo em 7 de fevereiro de 2016, você ainda poderá publicar no máximo 6 blocos (isso se deve ao fato de que o limite mínimo é uma mediana). Então, o blockchain deve parar e nenhuma outra transação pode ser confirmada.
Felizmente, existem muitas soluções para contornar essa data e, assim, evitar possíveis repercussões no Bitcoin.
📌 A diferença entre números inteiros de 32 bits assinados e não assinados está no número de bits disponíveis. Os não assinados fazem uso total de 32 bits (é o que temos no Bitcoin), enquanto os assinados reservam um bit para o sinal, deixando 31 bits para representar um número positivo (é o que é usado nos sistemas afetados pelo bug de 2038).
➤ Saiba mais sobre como criar um bloco no Bitcoin.
Não se preocupe, ainda temos mais de 80 anos para resolver esse pequeno problema! Para fazer isso, existem várias soluções. O mais natural seria alterar o tamanho do número inteiro usado para anotar o carimbo de data/hora no Bitcoin. Assim, poderíamos usar números inteiros de 64 bits, o que nos permitiria aumentar o limite de tempo para várias centenas de bilhões de anos no futuro.
Outra solução seria manter um timestamp de 32 bits, mas interpretado como um inteiro de 64 bits. Somente os últimos 32 bits do inteiro seriam anotados no cabeçalho do bloco, mas a cada estouro, os nós adicionariam 2^32 ao valor anotado para obter o valor real. Os estouros podem ser detectados pelos nós assim que o carimbo de data/hora de 32 bits cair drasticamente em comparação com os blocos anteriores.
No entanto, essas duas soluções são garfos rígidos. A comunidade Bitcoin terá que concordar nos próximos 80 anos em prever essa mudança, antes que chegue a data fatídica de 7 de fevereiro de 2016.
➤ Descubra a diferença entre um garfo rígido e um garfo macio.
Nos cabeçalhos de blocos do Bitcoin, o timestamp é um número inteiro de 32 bits sem sinal. Ele permite que você associe um marcador de tempo ao bloco. Dessa forma, podemos determinar a ordem cronológica das transações e, assim, evitar o gasto duplo de moedas bitcoin.
Esse carimbo de data/hora atingirá seu valor máximo em 7 de fevereiro de 2016 e fará com que o blockchain do Bitcoin pare se nada for feito. Felizmente, esse bug não é apenas muito remoto, mas também muito fácil de corrigir. Os operadores de nós completos precisarão atualizar o protocolo por meio de um hard fork antes desse prazo. O objetivo será alterar a interpretação do timestamp inteiro ou estender seu tamanho para 64 bits, permitindo que o Bitcoin funcione por mais algumas centenas de bilhões de anos.
Recursos:
%201.png)
