Um Block, ou bloco, é o próximo conjunto de transações na história do Bitcoin. Quando seu pagamento entra em um bloco válido da cadeia acompanhada pelo seu nó, recebe a primeira confirmação. Não é uma decisão de um administrador central: um minerador monta o bloco e outros nós verificam as regras do Bitcoin.
Você envia um pagamento em bitcoin e a carteira inicialmente informa que aguarda confirmação. A transação se espalha entre nós e pode entrar em seus mempools, listas locais de transações ainda não confirmadas. Um minerador escolhe algumas para um bloco candidato. Se encontrar o Proof of Work (um resultado da mineração que atende às regras da rede) necessário e os nós aceitarem o bloco na cadeia ativa, o pagamento incluído recebe a primeira confirmação. O bloco seguinte construído sobre ele eleva a contagem para duas. A meta média é aproximadamente dez minutos entre blocos, não a garantia de que todo pagamento passará em dez minutos. [1] [3]
Cada bloco tem um cabeçalho curto e suas transações. O cabeçalho contém, entre outras coisas, a impressão digital criptográfica do bloco anterior: uma referência que muda se os dados daquele bloco mudarem. Assim, os blocos formam um histórico encadeado, não uma pilha de pagamentos soltos. Outra impressão digital no cabeçalho resume as transações do bloco e se chama Merkle root. O minerador testa variantes do cabeçalho até que seu hash, uma impressão digital numérica, cumpra o limite de dificuldade. Isso ainda não prova que os pagamentos são válidos. Um nó completo verifica também assinaturas, permissões de gasto e outras regras: Proof of Work válido não conserta uma transação inválida. [1] [3]
A primeira transação se chama Coinbase Transaction. Nela, o minerador pode reivindicar no máximo a nova emissão permitida e as taxas das transações incluídas. Depois o nó verifica as transações comuns em ordem: valores antes não gastos deixam de estar disponíveis e novos são criados. Esses valores separados são chamados UTXOs. Um pagamento pode gastar a saída de outro anterior no mesmo bloco se cumprir todas as demais condições. Mas a mesma saída não pode ser gasta duas vezes. A nova recompensa da coinbase não pode ser gasta imediatamente nesse bloco: aplica-se uma espera especial de 100 blocos. [1]
Não existe um número fixo de vagas para pagamentos. Transações simples precisam de menos dados do que complexas, então a mesma capacidade pode comportar quantidades diferentes. Desde SegWit (uma atualização das regras do Bitcoin que mudou como os dados das transações são armazenados e contabilizados), ela é contabilizada por peso, limitado a 4.000.000 de unidades: uma medida técnica dos dados, não massa física. Outras regras também se aplicam. O minerador não precisa preencher toda a capacidade. Um bloco chamado vazio pode omitir pagamentos comuns, mas ainda contém uma coinbase. Portanto, vazio não significa sem transações nem automaticamente inválido. [1] [2]
Às vezes dois mineradores encontram blocos quase ao mesmo tempo, ambos ligados ao mesmo anterior. Os dois podem ser válidos, mas criam ramos concorrentes. O nó escolhe entre ramos válidos pelo trabalho total comprovado, não por votação simples nem só pelo número de blocos. A mudança de ramo é uma reorganização. Um pagamento no bloco abandonado pode perder confirmações; se continuar válido e não estiver no novo ramo, poderá aguardar inclusão novamente. Mais confirmações costumam aumentar a confiança, mas não prometem irreversibilidade matemática. Como referência técnica, o cabeçalho tem 80 bytes. A Merkle root é uma impressão digital calculada a partir dos identificadores de transação, chamados txids, na ordem em que aparecem no bloco. Os dados witness do SegWit, como assinaturas necessárias para verificar um gasto, têm outra impressão digital criptográfica registrada por meio da coinbase. Essas ligações permitem ao nó verificar se os dados recebidos pertencem ao bloco. [1] [2]
Para ter uma visão mais completa, leia este verbete junto com Block Header, Transação, Timechain / Blockchain, Mineração. Também há referências a este verbete em Block Header, Merkle Tree, Confirmação, Transação coinbase.