Skip to main content

SHA-256 | Bitcoin Glossary | Mapping Bitcoin

SHA-256

Criptografia

Also known as: SHA256, Secure Hash Algorithm

Algoritmo de Hash Seguro de 256 bits usado na mineração Bitcoin, produzindo digest de 32 bytes aplicado duplamente nos cabeçalhos de cada bloco da cadeia.

Visão geral

O SHA-256 (Algoritmo de Hash Seguro de 256 bits) é a função hash criptográfica que sustenta a mineração de prova de trabalho do Bitcoin, a identificação de transações e muitas outras operações do protocolo. Projetado pela NSA e publicado pelo NIST em 2001, o SHA-256 recebe uma entrada de qualquer tamanho e produz uma saída fixa de 256 bits (32 bytes) chamada digest ou hash. É uma função unidirecional: dado um hash, é computacionalmente inviável determinar a entrada original.

Propriedades do SHA-256

Propriedades do SHA-256:

Entrada: "Hello"
Saída: 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Entrada: "hello" (diferente maiúscula/minúscula)
Saída: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Propriedades chave:
┌─────────────────────────────────────────────────┐
│ 1. Determinístico  A mesma entrada sempre =      │
│                    mesma saída                   │
│ 2. Rápido          Eficiente de calcular         │
│ 3. Efeito avalanche Pequena mudança de entrada = │
│                     saída completamente diferente│
│ 4. Resistente a    Não é possível reverter o     │
│    pré-imagem      hash para encontrar a entrada │
│ 5. Resistente a    É inviável encontrar duas     │
│    colisões        entradas com o mesmo hash     │
│ 6. Tamanho fixo    Sempre 256 bits (32 bytes)   │
└─────────────────────────────────────────────────┘

SHA-256 no Bitcoin

O Bitcoin usa SHA-256 em múltiplas operações críticas:

  • Mineração — Os cabeçalhos de bloco são hasheados com SHA-256 duplo (SHA-256 aplicado duas vezes). Os mineradores buscam um nonce que produza um hash abaixo do alvo de dificuldade.
  • IDs de transação — Cada transação é identificada pelo hash SHA-256 duplo de seus dados serializados.
  • Árvores Merkle — As transações dentro de um bloco são organizadas em uma árvore Merkle usando SHA-256 duplo, produzindo uma única raiz Merkle armazenada no cabeçalho do bloco.
  • Geração de endereços — O SHA-256 é usado como parte da operação HASH160 (SHA-256 seguido de RIPEMD-160) para derivar endereços a partir de chaves públicas.

SHA-256 Duplo

O Bitcoin usa SHA-256 duas vezes em sucessão (frequentemente escrito como SHA-256d ou HASH256) para mineração e IDs de transação. Esse hash duplo fornece proteção contra certos ataques teóricos, incluindo ataques de extensão de comprimento, onde um atacante poderia anexar dados a uma mensagem e calcular um hash válido sem conhecer a mensagem original.

SHA-256 Duplo:

  Dados de Entrada
      │
      ▼
  ┌────────┐     ┌────────┐
  │SHA-256 │────>│SHA-256 │────> Hash Final
  │ Passo 1│     │ Passo 2│     (usado para mineração,
  └────────┘     └────────┘      TXIDs, etc.)

Mineração e SHA-256

A mineração do Bitcoin é essencialmente uma computação SHA-256 massiva e paralela. Os mineradores hasheiam cabeçalhos de bloco bilhões de vezes por segundo, incrementando o nonce e outros campos, buscando um hash que comece com zeros suficientes para satisfazer o alvo de dificuldade atual. A rede global do Bitcoin realiza coletivamente na ordem de centenas de exahashes (10^18 hashes) por segundo.

Equívoco comum

O SHA-256 às vezes é confundido com criptografia, mas hashing e criptografia são fundamentalmente diferentes. A criptografia é reversível com uma chave (você pode descriptografar o texto cifrado de volta ao texto simples). O SHA-256 é uma função unidirecional — não há chave e nenhuma maneira de "des-hashear" a saída de volta à entrada. O SHA-256 produz uma impressão digital dos dados, não uma mensagem secreta.