Visão Geral
Um bloco é a unidade fundamental da blockchain do Bitcoin. Cada bloco agrupa um conjunto de transações validadas, vincula-se ao bloco anterior por meio do seu hash e contém uma solução de prova de trabalho que demonstra o esforço computacional empregado para criá-lo. Uma vez aceito pela rede, um bloco se torna parte permanente do histórico de transações.
Estrutura do Bloco
┌─────────────────────────────────────────┐
│ Block Header (80 bytes) │
│ ┌─────────────────────────────────────┐ │
│ │ Version (4 bytes) │ │
│ │ Previous Block Hash (32 bytes) │ │
│ │ Merkle Root (32 bytes) │ │
│ │ Timestamp (4 bytes) │ │
│ │ Difficulty Target (4 bytes) │ │
│ │ Nonce (4 bytes) │ │
│ └─────────────────────────────────────┘ │
│ │
│ Transaction Counter (variable) │
│ │
│ Transactions │
│ ┌──────────────────────┐ │
│ │ Coinbase Transaction │ (always first) │
│ │ TX 1 │ │
│ │ TX 2 │ │
│ │ ... │ │
│ │ TX n │ │
│ └──────────────────────┘ │
└─────────────────────────────────────────┘
Como os Blocos São Criados
- Os mineradores coletam transações não confirmadas do mempool
- Constroem um bloco candidato com uma transação coinbase
- Calculam a raiz de Merkle de todas as transações incluídas
- Fazem hashes repetidos do cabeçalho do bloco com diferentes valores de nonce
- Quando um hash abaixo do alvo de dificuldade é encontrado, o bloco é transmitido para a rede
- Os outros nós verificam o bloco e o adicionam à sua cópia da blockchain
Propriedades Principais
- Ordenado: As transações dentro de um bloco têm uma ordem definida, com a transação coinbase sempre em primeiro lugar
- Imutável: Uma vez enterrado sob blocos subsequentes, alterar um bloco exigiria refazer a prova de trabalho daquele bloco e de todos os blocos seguintes
- Limitado em tamanho: Os blocos são limitados a um peso máximo de 4 milhões de unidades de peso, equivalente a aproximadamente 1-4 MB dependendo da composição das transações