For the complete documentation index, see llms.txt. This page is also available as Markdown.

Estrutura de blocos

Estrutura de blocos, Árvores de Merkle e formato de transações


“Os mineradores constroem blocos, mas os nós decidem quais blocos seguir.” — Princípio fundamental do Bitcoin


1. Introdução

Bitcoin é uma rede distribuída cujo funcionamento depende de duas estruturas centrais:

  1. blocos

  2. transações

Ambas estão encadeadas criptograficamente por meio de árvores de Merkle e protegidas por Prova de Trabalho (PoW). Compreender seu desenho é essencial para entender:

  • como a informação é organizada

  • como funcionam os incentivos

  • como a imutabilidade é garantida

  • como se alcança consenso sem autoridade central


2. A cadeia de blocos: estrutura geral

Um bloco de Bitcoin é composto por duas partes principais:

┌────────────────────┐ │ Cabeçalho (80B) │ ← Hash do bloco └────────────────────┘ ┌────────────────────┐ │ Corpo: transações │ └────────────────────┘


2.1. Campos do cabeçalho

O cabeçalho do bloco tem exatamente 80 bytes, estruturados assim:

Campo
Tamanho
Descrição

version

4 bytes

Sinaliza regras de validação

prev_block_hash

32 bytes

Hash do bloco anterior

merkle_root

32 bytes

Raiz da árvore de Merkle

timestamp

4 bytes

Hora aproximada

bits

4 bytes

Alvo de dificuldade

nonce

4 bytes

Contador para PoW

Hash final do bloco:


3. Corpo do bloco: transações

Um bloco contém:

  • 1 transação coinbase (a primeira)

  • N transações normais

Representação conceitual:

Block ├─ Coinbase TX ├─ TX1 ├─ TX2 ├─ ... └─ TXn

O limite atual é um peso máximo de:

4,000,000 unidades de weight\text{4,000,000 unidades de weight}

após a ativação do SegWit (BIP141).


4. Árvores de Merkle no Bitcoin

As árvores de Merkle permitem:

  • demonstrar inclusão de transações

  • reduzir a quantidade de informação necessária para clientes SPV

  • proteger contra modificações

4.1. Construção passo a passo

  1. Tirar o hash de cada transação: hi=SHA256d(txi)h_i = SHA256d(tx_i)

  2. Agrupar pares e hasheá-los novamente:

Hi,j=SHA256d(hihj)H_{i,j} = SHA256d(h_i || h_j)

  1. Repetir até chegar à raiz.


4.2. Representação


4.3. Provas de inclusão (Merkle Proof)

Um cliente SPV pode demonstrar que:

txjbloquetx_j \in \text{bloque}

com uma prova de tamanho O(logn)O(\log n).


5. Transações Bitcoin: estrutura técnica

Uma transação consiste em:

  • inputs (entradas)

  • outputs (saídas)

Os inputs consomem UTXOs anteriores. Os outputs geram novos UTXOs.


5.1. Formato geral

Transaction ├─ Version (4 bytes) ├─ TX_IN_COUNT ├─ [Inputs] ├─ TX_OUT_COUNT ├─ [Outputs] └─ locktime


5.2. UTXO: o modelo contábil do Bitcoin

O Bitcoin não usa contas. Usa um conjunto global de outputs não gastos (Unspent Transaction Outputs).

Vantagens:

  • paralelização

  • facilidade de verificabilidade

  • proteção contra gasto duplo

  • simplicidade na validação

Formalização:

UTXOnew=UTXOoldinputs+outputsUTXO_{new} = UTXO_{old} - inputs + outputs


6. Inputs: consumindo transações anteriores

Um input contém:

Campo
Descrição

prev_txid

hash da transação anterior

prev_index

índice do output consumido

scriptSig

assinatura + dados de desbloqueio

sequence

usado no locktime

O input prova que o usuário possui a chave privada associada ao UTXO.


6.1. scriptSig (clássico)

Exemplo:

<assinatura ECDSA> <chave pública>

Com SegWit, a assinatura vai em um campo diferente (witness).


7. Outputs: criando novos UTXOs

Um output contém:

Campo
Descrição

value

quantidade em satoshis

scriptPubKey

condições de gasto


7.1. scriptPubKey mais comum (P2PKH)

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG


7.2. P2SH

Tipo introduzido pelo BIP16:

OP_HASH160 <hash_do_script> OP_EQUAL


7.3. P2WPKH (SegWit)

Formato witness:

0 <20-byte-key-hash>

Benefícios:

  • menor peso da assinatura

  • elimina maleabilidade

  • reduz taxas


8. Assinaturas em transações

O Bitcoin usa ECDSA sobre a curva secp256k1.

Para assinar uma transação constrói-se uma mensagem:

m=serializacioˊn modificada(TX)m = \text{serialización modificada}(\text{TX})

Depois:

firma=ECDSAsign(privkey,m)firma = ECDSA_sign(privkey, m)


8.1. Tipos de Sighash

O Bitcoin permite diferentes modos de assinar:

Código
Efeito

SIGHASH_ALL

Assina inputs e outputs

SIGHASH_NONE

Assina inputs, outputs livres

SIGHASH_SINGLE

Assina o input correspondente

ANYONECANPAY

Modifica os inputs permitidos


9. A transação coinbase

É a primeira transação em cada bloco.

9.1. Características:

  • não tem inputs válidos

  • cria novos bitcoins

  • inclui recompensa (subsídio + taxas)

  • contém um script arbitrário com mensagens opcionais

Exemplo clássico: a mensagem do bloco gênesis.


9.2. Subsídio

Subsidio actual=502n\text{Subsidio actual} = 50 \cdot 2^{-n}

onde

  • nn = número de halvings transcorridos


10. Como as transações são verificadas

Um nó verifica:

  1. Formato correto

  2. Assinaturas válidas

  3. Existência dos UTXOs

  4. Não haver gasto duplo

  5. Outputs não excederem inputs

  6. Sighash válido

  7. Script executado sem erro


10.1. Avaliação de scripts

Bitcoin Script é uma linguagem simples, não Turing completa.

Exemplo de avaliação P2PKH:

scriptSig: <assinatura> <pubKey> scriptPub: OP_DUP OP_HASH160 <hash> OP_EQUALVERIFY OP_CHECKSIG


11. Validação de blocos

Para aceitar um bloco:

  1. Hash do bloco < Target

  2. Todas as transações válidas

  3. Tamanho correto

  4. Recompensa correta

  5. Prev_block_hash coincide

  6. O Merkle Root coincide

  7. Timestamp razoável


12. Representação matemática do encadeamento

Se:

  • BiB_i = Bloco i

  • H(Bi)H(B_i) = Hash do cabeçalho do bloco i

então:

que produz:

B0B1B2B_0 \rightarrow B_1 \rightarrow B_2 \rightarrow \dots

A segurança depende de:

Costo de reorganizacioˊnPoW acumulado\text{Costo de reorganización} \approx \text{PoW acumulado}


13. Conclusão do capítulo

Neste capítulo vimos:

  • como um bloco está estruturado

  • como as transações são organizadas e verificadas

  • que papel a árvore de Merkle desempenha

  • como a integridade da cadeia é assegurada

  • por que o sistema UTXO é superior a um modelo baseado em contas

Todos esses elementos são a base da camada fundamental do Bitcoin.


Se você entende um bloco, entende o Bitcoin. Se você entende a árvore de Merkle, entende por que é imutável.


Atualizado

Isto foi útil?