O que é um bloco de Bitcoin?

Disponível como podcast
Compartilhe o artigo:

Um dos muitos mecanismos que permitem que o Bitcoin funcione corretamente é o blockchain. Como você deve ter descoberto nos artigos do blog Bitstack, o blockchain permite evitar o gasto duplo da mesma moeda bitcoin (o que é chamado de UTXO).

Como o nome sugere, esse blockchain é composto por blocos. Neste artigo, exploramos o que realmente são os blocos de Bitcoin e como cada bloco é construído.

O que é blockchain?

O blockchain é um registro que lista todas as transações de Bitcoin. Ele é usado no protocolo para que cada usuário esteja ciente das transações anteriores. Graças a isso, podemos provar a inexistência de um gasto anterior de bitcoins e, portanto, evitar gastos duplos.

Esse conceito é explicado de forma muito simples no Livro Branco do Bitcoin de Satoshi Nakamoto com a famosa frase:” A única maneira de confirmar a ausência de uma transação é estar ciente de todas as transações.

O objetivo desse registro é, portanto, registrar a data e hora das transações passadas. Para poder dedicar uma hora a essas informações, nós as agrupamos em blocos. Cada bloco inclui a impressão digital do bloco anterior para torná-lo imutável, criando uma espécie de cadeia. É por isso que falamos de blockchain, ou “blockchain” em inglês.

➤ Saiba mais sobre o papel do blockchain no Bitcoin.

Qual é a estrutura de um bloco no Bitcoin?

Um bloco de Bitcoin é composto principalmente por duas partes distintas. O primeiro é o cabeçalho, que contém 80 bytes de metadados. A segunda é a lista de transações executadas.

Desde a atualização do SegWit de 2017, o tamanho de um bloco é determinado por uma unidade virtual chamada peso. O peso de um bloco é calculado adicionando seu tamanho real a três vezes seu tamanho, mas sem testemunhas (assinaturas). O limite máximo é de 4 milhões de unidades de peso. Em teoria, um bloco Bitcoin SegWit pode, portanto, ter um tamanho real máximo de pouco menos de 4 MB. No entanto, o tamanho médio real do bloco normalmente oscila entre 1 e 2 MB desde 2017.

A chegada do protocolo Ordinals ao Bitcoin no início deste ano de 2023 afetou essa média para o aumento. Desde fevereiro, os blocos de Bitcoin têm um tamanho médio real de cerca de 3 MB.

O cabeçalho do bloco Bitcoin

A parte principal de um bloco de Bitcoin é seu cabeçalho. Quando falamos sobre a impressão digital de um bloco, ou seu hash, é de fato seu cabeçalho que passamos duas vezes na função de hash SHA256.

Para entender a composição do cabeçalho de um bloco, o melhor é estudar um real. Aqui estão as informações sobre o bloco nº 714 254, extraído pela F2Pool em 15 de dezembro de 2021:

Se você quiser fazer o mesmo no seu nó Bitcoin, execute o comando “getblockheader” seguido pela impressão digital do bloco desejado no bitcoin-cli.

Graças a esse comando, descobrimos vários elementos sobre o bloco estudado. Nem todas essas informações estão incluídas no cabeçalho. O cabeçalho real do bloco é composto por apenas 6 elementos:

  • A versão em bloco (”versão”). Isso torna possível acompanhar as atualizações do protocolo Bitcoin;
  • A impressão do bloco anterior (”BlockHash anterior”). É o hash criptográfico do cabeçalho do bloco anterior. Nesse caso, é a impressão do bloco 714 253. Como explicamos a você em nosso artigo sobre como o Bitcoin funciona, cada bloco inclui a impressão digital do bloco anterior;
  • A raiz de Merkle (”Merkleroot”). É a impressão digital criptográfica que está na base da nossa árvore Merkle. Vou explicar o que é na próxima parte;
  • A data e hora do bloco (”Hora”). É uma medida de quanto tempo o bloco foi minerado (de acordo com o minerador). Esta medida é estabelecida noHora Unix, ou seja, o número de segundos decorridos desde 1º de janeiro de 1970. Há alguma flexibilidade nessa medida, pois é suficiente que o carimbo de data/hora seja maior que o tempo médio dos 11 blocos anteriores para que seja válido;
  • O alvo (”Pedaços”). É uma codificação do alvo de dificuldade do bloco usado em Proof-of-Work. Estávamos falando sobre isso em nosso artigo sobre prova de trabalho, a área ocupada deve ser menor ou igual ao valor alvo para que o bloco seja válido;
  • O Núncio (”Núncio”). Esse é o valor que pode ser alterado pelo minerador durante a busca por um hash de prova de trabalho válido.

Um cabeçalho de bloco Bitcoin contém apenas esses 6 elementos. O pedido obter cabeçalho de bloco No entanto, recebemos outras informações que podem ser interessantes de analisar, mas que na verdade não fazem parte do cabeçalho em si:

  • A pegada do bloco (”Hash”). Esse é o resultado do hash criptográfico do cabeçalho. Se o bloco for válido, essa pegada deve ser menor ou igual à meta de dificuldade para prova de trabalho (mineração);
  • O número de confirmações de bloqueio (”confirmações”). Isso indica o número de blocos válidos extraídos acima deste no momento em que o comando é executado;
  • A altura do bloco (”Altura”). Esse é o lugar do bloco na blockchain. Aqui, temos o bloco 714.254º de Bitcoin;
  • O tempo médio dos últimos 11 blocos (”Tempo médio”). Essa é a informação usada para verificar se a data e hora do bloco está de acordo com o protocolo;
  • Trabalho acumulado (”Cadeia”). É a soma do trabalho de todos os blocos dessa cadeia. Lembre-se de que a cadeia válida no Bitcoin é aquela com a maior quantidade de trabalho acumulado;
  • A impressão do próximo bloco (”Próximo blockhash”). É o hash criptográfico do cabeçalho do próximo bloco. Nesse caso, é a impressão do bloco 714 255.

Agora que estudamos a primeira parte do bloco, ou seja, seu cabeçalho, vamos analisar a segunda parte do bloco Bitcoin juntos.

As árvores Merkle de um bloco de Bitcoin

As transações em um bloco de Bitcoin não são listadas simplesmente uma após a outra. Em vez disso, eles são organizados em um acumulador criptográfico chamado “árvore Merkle”. Isso possibilita a produção de uma raiz de Merkle, que é um resumo muito pequeno de todas as transações no bloco.

Seu princípio é bem simples de entender. Cada transação é passada primeiro por meio de uma função hash. Os hashes resultantes são concatenados dois a dois (ou seja, colocados de ponta a ponta). Em seguida, eles são passados por uma função hash novamente. Continuamos esse processo assim até obtermos um único hash chamado “raiz de Merkle”.

Como visto anteriormente, essa raiz de Merkle é então incluída no cabeçalho do bloco. Isso permite que todas as transações sejam representadas de forma condensada no cabeçalho. Assim, a menor modificação de uma transação passada altera a árvore Merkle, portanto, também altera a raiz de Merkle e, portanto, altera o cabeçalho do bloco e sua pegada. Como essa impressão digital é usada no próximo bloco, a menor modificação de uma transação anterior finalmente quebra o blockchain do Bitcoin.

Desde 2017 e a introdução do SegWit, os blocos de Bitcoin na verdade contêm 2 árvores Merkle. O primeiro contém as transações sem sua testemunha e o segundo contém a testemunha de cada transação. A raiz da segunda árvore Merkle é incluída na transação da Coinbase para que as alterações possam ser detectadas.

📌 A transação coinbase é a primeira transação no bloco Bitcoin. Ele permite que o minerador vencedor colete os bitcoins que lhe são devidos como recompensa por seu trabalho de mineração. É composto pela recompensa coinbase, que emite novos bitcoins, e pelas taxas de transação incluídas no bloco.

É daí que vem o nome “SegWit”, que é a sigla para “Segregated Witness”, que em francês significa “testemunha separada”.

No diagrama acima, podemos ver que as testemunhas, conhecidas como “WTX”, têm sua própria árvore Merkle. A raiz dessa árvore é colocada na transação coinbase. As transações sem suas testemunhas também têm sua própria árvore Merkle. A raiz da segunda árvore é colocada no cabeçalho do bloco. Então, todas as partes de todas as transações no bloco são condensadas no cabeçalho.

Conclusão

O Blockchain é usado no Bitcoin para evitar gastos duplos. Ele funciona como um servidor de carimbo de data/hora. Portanto, um bloco é simplesmente um agrupamento de transações de Bitcoin com alguns metadados. Sua estrutura é dividida principalmente em dois espaços: o cabeçalho e as árvores Merkle.

O cabeçalho de um bloco é composto por 6 elementos: a versão, a impressão do bloco anterior, a raiz de Merkle, o timestamp, o alvo de dificuldade e o nonce.

As transações, por outro lado, são agrupadas em uma árvore de Merkle. Esse acumulador criptográfico produz uma raiz que é incrementada no cabeçalho do bloco para vincular tudo.

Disponível como podcast

Resumo

Compartilhe o artigo:

Você pode gostar desses itens

Bitstack Digital Assets SAS, société immatriculée au registre du commerce et des sociétés de Aix-en-Provence sous le numéro 899 125 090, exploitant le nom commercial Bitstack, est enregistré en tant qu’agent de Xpollens - établissement de monnaie électronique agréé par l’ACPR (CIB 16528 - RCS Nanterre n°501586341, 110 Avenue de France 75013 Paris) - auprès de l’Autorité de Contrôle Prudentiel et de Résolution (“ACPR”) sous le numéro 747088 et agréé en tant que Prestataire de Services sur Crypto-Actif (“PSCA”) auprès de l’Autorité des Marchés Financiers (“AMF”) au titre d’échange de crypto-actifs contre des fonds, d’échange de crypto-actifs contre d’autres crypto-actifs, d’exécution d’ordres sur crypto-actifs pour le compte de clients, la conservation et l’administration de crypto-actifs pour le compte de clients et la fourniture de services de transfert de crypto-actifs pour le compte de clients sous le numéro A2025-003, dont le siège social est situé 100 impasse des Houillères 13590 Meyreuil.

L'investissement dans les actifs numériques comporte un risque de perte partielle ou totale du capital investi.
Les performances passées ne préjugent pas des performances futures.
BAIXAR
Bitstack