Tempo (Time)
O timestamp aproximado de criação de um bloco
O campo tempo (time) no cabeçalho do bloco indica a hora aproximada em que um bloco foi criado.
Os mineradores colocam a hora atual no cabeçalho ao construir o bloco candidato. Ele contém um Timestamp Unix (segundos desde 01 de janeiro de 1970), que é o que os programas de computador normalmente usam para armazenar pontos específicos no tempo.
Por exemplo, o bloco gênese contém o timestamp 1231006505, que representa a data 03 de janeiro de 2009, 18:15:05.
Ordem dos Blocos
O tempo do bloco influencia a ordem dos blocos?
Os timestamps não influenciam a ordem dos blocos na blockchain. Na verdade, é possível que um bloco tenha um timestamp anterior ao do bloco sobre o qual ele se constrói. Então, embora os timestamps sejam geralmente bastante precisos, às vezes os blocos não estão em ordem "cronológica", e isso é perfeitamente normal.
O timestamp de cada bloco é geralmente bem próximo da hora atual, mas você não deve confiar que ele seja 100% correto. Blocos "fora de ordem" aparecem na blockchain algumas vezes por mês.
Requisitos
Qual é o tempo máximo e mínimo de um bloco?
O timestamp precisa estar dentro de um certo intervalo para ser válido:
- Mínimo: precisa ser maior que a mediana dos timestamps dos últimos 11 blocos.
- Máximo: não pode ser mais de 2 horas no futuro em relação ao tempo ajustado da rede.
Então há alguma flexibilidade: para um bloco recém-minerado, o campo de tempo pode estar entre cerca de −1 e +2 horas do tempo atual e ainda ser válido. Essa flexibilidade permite que um nó tenha uma configuração de hora incorreta e considera a latência na transmissão de blocos pela rede.
Não há justificativa matemática para o intervalo ser entre a mediana dos últimos 11 blocos e +2 horas no futuro. São valores "bons o suficiente" que o Satoshi escolheu ao codificar a primeira versão do bitcoin, e ainda os usamos hoje.
Tempo Ajustado da Rede
O tempo ajustado da rede (network adjusted time) é a sua hora local mais a mediana das diferenças de hora de todos os nós aos quais você está conectado. Por exemplo:
Hora Local = 1685010124
Nós Conectados:
Nó 1 = 1685010121 (-3 segundos)
Nó 2 = 1685010122 (-2 segundos)
Nó 4 = 1685010125 (+1 segundo)
Nó 7 = 1685010128 (+3600 segundos)
Diferença Mediana = +1 segundo
Tempo Ajustado da Rede = 1685010125
Usamos o tempo ajustado da rede porque é difícil para computadores em uma rede descentralizada concordarem sobre a hora exata atual. Ele permite que os nós concordem em uma hora entre si, limitando a capacidade de qualquer nó isolado manipular a hora "atual" acordada.
Uso
Para que serve o campo de tempo?
Além de ser um indicador aproximado de quando o bloco foi minerado, o timestamp é usado no recálculo do alvo: os timestamps dos cabeçalhos são usados para calcular se os blocos estão sendo minerados mais rápido ou mais devagar que o esperado em um período de 2016 blocos, e o alvo é ajustado conforme isso.