Blockchain
O arquivo permanente de transações do 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. Daí, blockchain.
Mas, no fim, a blockchain é o armazenamento permanente das transações de bitcoin.
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 Bitcoin (ex.: Bitcoin Core), o seu nó baixa automaticamente blocos de outros nós da rede até você ter uma cópia atualizada da blockchain no seu computador.
Quando os nós se conectam uns aos outros, eles informam mutuamente a altura da sua cadeia (quantos blocos têm) durante o handshake inicial. Se outro nó tem mais blocos que você, o seu nó solicita esses blocos aos outros nós até você ter uma cópia completa da blockchain.
Como resultado, os nós estão constantemente se comunicando para replicar a blockchain em cada computador da rede.
Não existe uma versão única ou definitiva da "blockchain". Cada nó mantém a sua própria cópia local da blockchain, e ela pode variar de computador para computador a qualquer momento.
Pode levar um tempo para baixar a blockchain completa quando você roda o Bitcoin pela primeira vez. 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, o processo de 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 que esteja abaixo de um valor alvo específico. Isso significa que qualquer nó da rede pode minerar um novo bloco, mas você precisa usar energia para conseguir fazê-lo.
Hash do Bloco
Ajuste de Dificuldade
Quando um nó (ou "minerador") minera um novo bloco com sucesso, ele o compartilha com os outros nós da rede. 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.
Como resultado, os mineradores estão constantemente trabalhando para estender a blockchain com novos blocos de transações.
- Devido ao poder de processamento necessário para minerar um bloco e ao alvo que se ajusta regularmente, novos blocos são adicionados à blockchain a cada 10 minutos (em média).
- Um nó não é obrigado a tentar minerar novos blocos. Em vez disso, ele pode simplesmente manter uma cópia da blockchain e retransmitir novos blocos a outros nós quando os recebe.
Aqui está um vídeo sobre como funciona a mineração no Bitcoin.
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.
Nessa situação, os nós consideram o primeiro bloco que recebem como parte da sua blockchain, mas também guardam o segundo bloco que recebem, por garantia. Porém, o segundo bloco a chegar (e as transações dentro dele) não será considerado parte da sua blockchain ativa.
Consequentemente, os nós da rede ficarão em desacordo temporário sobre qual desses dois blocos pertence ao topo da cadeia.
Esse desacordo é resolvido quando o próximo bloco é minerado. O próximo bloco será construído sobre um desses blocos, criando uma nova cadeia mais longa de blocos, e, por regra, os nós sempre adotam a cadeia conhecida mais longa como a sua blockchain ativa.
Como resultado, os nós com a cadeia mais curta fazem uma reorganização da cadeia para tirar os blocos da sua cadeia ativa antiga em favor dos blocos que formam a nova cadeia mais longa.
Então, embora possa haver desacordos pela rede sobre qual bloco (ou blocos) pertence ao topo da blockchain a qualquer momento, a mineração de novos blocos e a adoção da cadeia mais longa fazem com que os nós sempre acabem sincronizados.
Um fork temporário como esse é raro. Acontece cerca de uma vez por mês (aproximadamente) e geralmente só afeta o bloco do topo da blockchain.
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" da blockchain. Portanto, você poderia sempre tentar construir uma nova cadeia mais longa de blocos para substituir uma existente, e todos os nós da rede a adotariam.
Como resultado, isso permite "desfazer" ou reverter uma transação de bitcoin da blockchain.
Porém, o problema é que todos os mineradores são incentivados a sempre construir sobre a cadeia conhecida mais longa. Isso significa que o poder de processamento combinado dos mineradores da rede estará focado em construir uma única cadeia, que será construída mais rápido do que qualquer cadeia que você pudesse construir sozinho.
Em outras palavras, o poder de processamento combinado da rede trabalhando para construir a blockchain ajuda a proteger os blocos (e transações) que já foram minerados na blockchain.
Então, a única forma de você realizar uma reorganização intencional da cadeia (para "desfazer" uma transação em um bloco existente) seria ter mais poder de processamento que todos os outros mineradores combinados, para conseguir minerar mais rápido que a rede e construir uma cadeia mais longa para todos adotarem. Isso é chamado de "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 no seguinte local do seu computador:
- Linux:
~/.bitcoin/blocks/ - Mac:
~/Library/Application Support/Bitcoin/blocks/ - Windows:
A blockchain é dividida em vários arquivos chamados blk00000.dat, blk00001.dat, blk00002.dat, e assim por diante. Isso porque é mais fácil trabalhar com vários arquivos pequenos do que com um único arquivo gigante. Veja blk.dat para detalhes.
Resumo
A visualização animada da construção da blockchain (incluindo uma reorganização da cadeia) será adicionada posteriormente.
A blockchain é o armazenamento permanente das transações de bitcoin. Novas transações são adicionadas ao arquivo em blocos, e esses blocos são construídos uns sobre os outros para criar uma cadeia.
Novos blocos são adicionados à blockchain por meio da mineração, que envolve o uso de poder de processamento de computador. Isso significa que é preciso energia para minerar um bloco, mas qualquer nó pode trabalhar para tentar adicionar o próximo bloco à cadeia.
Quando um novo bloco é minerado, ele é retransmitido pela rede, e os nós o verificam e o adicionam à sua cadeia. Isso torna a blockchain um livro-razão de transações em constante crescimento, distribuído por vários computadores em uma rede.
Os nós sempre adotam a cadeia mais longa de blocos como a versão ativa da blockchain, o que resolve os desacordos sobre quais blocos pertencem ao topo da cadeia. Isso também protege os blocos que já estão na blockchain, pois exigiria grandes quantidades de energia para construir uma cadeia que substitua blocos mais abaixo na cadeia.
O mecanismo de minerar e adotar a cadeia mais longa permite que vários computadores em uma rede concordem com o mesmo conjunto de blocos e transações, ao mesmo tempo em que torna difícil para qualquer um fazer mudanças históricas nos blocos (e, portanto, nas transações) da blockchain.
Como resultado, a blockchain é um arquivo de transações seguro, distribuído e regularmente atualizado.