Blockchain

O arquivo permanente de transações do Bitcoin

Diagrama mostrando a blockchain como um arquivo armazenado pelos nós da rede bitcoin.

A blockchain é um arquivo de transações. É o arquivo mais importante que um nó bitcoin mantém.

Ela é chamada de "blockchain" (cadeia de blocos) porque novas transações são adicionadas ao arquivo em blocos, e esses blocos são construídos um sobre o outro para criar uma cadeia de blocos.

Mas, no fim, a blockchain é o armazenamento permanente das transações de bitcoin.

Blockchain ao vivo — o explorador de blocos em tempo real será disponibilizado na Fase 3 (reconstruído sobre uma API pública). Por enquanto, este é um marcador.

Download

Como você obtém uma cópia da blockchain?

A forma mais fácil de obter uma cópia da blockchain é rodar um nó Bitcoin. Quando você roda o programa (ex.: Bitcoin Core), seu nó baixa automaticamente blocos de outros nós da rede até ter uma cópia atualizada no seu computador.

Quando os nós se conectam, eles informam uns aos outros a altura da sua cadeia durante o handshake inicial. Se outro nó tem mais blocos que você, seu nó solicita esses blocos até ter uma cópia completa. Não existe uma versão única ou definitiva da "blockchain": cada nó mantém sua própria cópia local.

Pode levar um tempo para baixar a blockchain completa na primeira vez que você roda o Bitcoin. Isso é chamado de Initial Block Download (IBD).

Mineração

Como novos blocos são adicionados à blockchain?

Novos blocos de transações precisam ser minerados na blockchain. Em resumo, a mineração envolve coletar transações do memory pool em um bloco candidato e então usar poder de processamento para produzir um hash de bloco abaixo de um valor alvo específico. Qualquer nó pode minerar um novo bloco, mas precisa usar energia para isso.

Ícone Ferramenta Hash do Bloco
Ícone Ferramenta

Cabeçalho do Bloco

Monte os 80 bytes do cabeçalho e calcule o hash do bloco (HASH256 do cabeçalho, em ordem de bytes invertida).

Ícone Ferramenta Ajuste de Dificuldade
Ícone Ferramenta

Ajuste de Dificuldade

Calcule o novo alvo a partir do alvo atual e do tempo real de mineração de um período de 2016 blocos.

0x
0 bytes
Tempo (segundos)
0d
0d

O período de ajuste de dificuldade é de 2016 blocos. Em média, um bloco é minerado a cada 600 segundos (10 minutos), então o tempo esperado é 2016 × 600 = 1.209.600 segundos.

Razão

O tempo real dividido pelo tempo esperado. Multiplicamos o alvo atual por essa razão para obter o novo alvo.

0x
0x
0 bytes

Nota: esse valor de alvo é levemente truncado para ser armazenado no campo bits do cabeçalho do bloco, e é esse o alvo de fato usado na mineração.

Quando um nó (ou "minerador") minera um novo bloco com sucesso, ele o compartilha com os outros nós. Ao receberem esse novo bloco, os outros nós o adicionam à sua blockchain, e os mineradores começam a tentar minerar um novo bloco em cima dele. Assim, novos blocos são adicionados à blockchain a cada 10 minutos (em média).

Reorganizações da Cadeia

Dois blocos podem ser minerados ao mesmo tempo?

Enquanto a blockchain é construída, é perfeitamente normal que dois blocos sejam minerados ao mesmo tempo, o que causa um "fork" temporário na cadeia. Nessa situação, os nós consideram o primeiro bloco que recebem como parte da sua blockchain, mas também guardam o segundo, por garantia.

Essa discordância é resolvida quando o próximo bloco é minerado: ele é construído sobre um desses blocos, criando uma nova cadeia mais longa, e os nós sempre adotam a cadeia conhecida mais longa. Os nós com a cadeia mais curta fazem uma reorganização da cadeia. Esse tipo de fork temporário é raro (acontece cerca de uma vez por mês) e geralmente só afeta o bloco do topo.

Cadeia Mais Longa

Blocos na blockchain podem ser substituídos?

Devido à forma como a blockchain é construída, é possível que blocos no topo da cadeia sejam substituídos. Os nós sempre adotam a cadeia mais longa como a versão "verdadeira", então você poderia tentar construir uma nova cadeia mais longa para substituir uma existente.

Porém, todos os mineradores são incentivados a sempre construir sobre a cadeia conhecida mais longa, então o poder de processamento combinado da rede protege os blocos (e transações) já minerados. A única forma de fazer uma reorganização intencional seria ter mais poder que todos os outros mineradores combinados — o chamado ataque de 51%. Ninguém realizou um ataque de 51% bem-sucedido na blockchain do Bitcoin.

Localização

Onde a blockchain é armazenada?

Se você roda um nó Bitcoin Core, os arquivos da blockchain ficam em:

Linux:   ~/.bitcoin/blocks/
Mac:     ~/Library/Application Support/Bitcoin/blocks/
Windows: C:\Users\[usuario]\AppData\Roaming\Bitcoin\blocks\ (v27.2 e abaixo)
         C:\Users\[usuario]\AppData\Local\Bitcoin\blocks\ (v28.0 em diante)

A blockchain é dividida em vários arquivos chamados blk00000.dat, blk00001.dat, etc., porque é mais fácil trabalhar com vários arquivos pequenos do que com um único arquivo gigante. Veja blk.dat para detalhes.

Resumo

A blockchain é o armazenamento permanente das transações de bitcoin. Novas transações são adicionadas em blocos, que são construídos uns sobre os outros para criar uma cadeia.

Novos blocos são adicionados pela mineração, que usa poder de processamento. Quando um novo bloco é minerado, ele é retransmitido pela rede, e os nós o verificam e adicionam à sua cadeia. Isso torna a blockchain um livro-razão de transações em constante crescimento, distribuído por vários computadores.

Os nós sempre adotam a cadeia mais longa como a versão ativa, o que resolve discordâncias e protege os blocos já existentes. O mecanismo de mineração e adoção da cadeia mais longa permite que vários computadores concordem com o mesmo conjunto de blocos e transações, ao mesmo tempo em que torna difícil fazer mudanças históricas. Como resultado, a blockchain é um arquivo de transações seguro, distribuído e regularmente atualizado.