Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Visão Geral de Hashing | Blocos e Transações
Introdução ao Blockchain

bookVisão Geral de Hashing

Hashing e hashes de blocos já foram mencionados várias vezes, mas o conceito em si ainda não foi examinado em detalhes. Agora é o momento de compreender o que realmente é hashing.

Note
Estude Mais

Hashing é um processo que recebe uma entrada e produz uma sequência de bytes de tamanho fixo, normalmente expressa como um número hexadecimal. O resultado, conhecido como hash, parece aleatório e muda completamente com qualquer alteração na entrada, uma propriedade conhecida como "efeito avalanche".

Propriedades das Funções Hash

Na blockchain, funções hash são utilizadas para:

  • Proteger transações criando uma impressão digital única para cada uma;
  • Gerar endereços a partir de chaves públicas;
  • Criar os elos na blockchain por meio dos hashes de blocos.

Com isso em mente, uma boa função hash para blockchain possui várias propriedades essenciais:

A hash, especialmente quando se utiliza uma boa função de hash, pode ser comparada ao preparo de um smoothie. Veja a ilustração a seguir:

Na verdade, é possível encontrar a entrada original a partir de um hash, porém, isso exigiria tanto tempo que não seria algo prático.

Hash de Bloco

Para obter o hash de um determinado bloco, o Bitcoin utiliza a função de hash SHA-256, que gera um hash de 256 bits (32 bytes). Ela faz parte da família SHA-2, desenvolvida pela Agência de Segurança Nacional (NSA) e reconhecida por suas fortes propriedades de segurança, tornando-a resistente a colisões, ataques de pré-imagem e outras vulnerabilidades criptográficas.

O hash de um bloco do Bitcoin é calculado utilizando os dados do cabeçalho do bloco. Esses dados são inseridos na função de hash SHA-256 duas vezes em um processo conhecido como double SHA-256.

Veja a imagem para esclarecer:

O hash de 256 bits resultante deve atender a certos critérios definidos pelo alvo de dificuldade da rede. Se o hash não estiver abaixo do alvo, o nonce é ajustado e o hash é recalculado até que um hash qualificado seja encontrado. Esse hash final é o identificador único do bloco.

Raiz de Merkle

A raiz de Merkle é um único hash que representa todas as transações incluídas em um bloco. Seu cálculo começa com os hashes de cada transação individual, utilizando duplo SHA-256.

Cada hash de transação é então pareado com outro, e o par é hasheado junto para produzir um novo hash. Esse processo de pareamento e hash continua camada por camada até restar apenas um hash. O hash final é a raiz de Merkle, que encapsula todo o conjunto de transações e garante sua integridade ao codificá-las em um único valor. Essa estrutura hierárquica é conhecida como árvore de Merkle.

O exemplo a seguir ilustra como uma árvore de Merkle é formada:

Como pode ser observado, nosso bloco contém 6 transações (cada uma rotulada como Tx) e, por meio do hash e pareamento de novos hashes, uma raiz de Merkle é calculada.

Note
Nota

Sempre que o hash mais à direita não possui um par, como ocorre com o Hash56 em nosso exemplo, esse último hash é duplicado para formar um par. Essa técnica mantém a integridade e a eficiência da estrutura da árvore de Merkle mesmo com números ímpares de transações ou hashes em determinado momento.

question mark

Qual é o tamanho da saída da função hash SHA-256 utilizada na blockchain do Bitcoin?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 6.25

bookVisão Geral de Hashing

Deslize para mostrar o menu

Hashing e hashes de blocos já foram mencionados várias vezes, mas o conceito em si ainda não foi examinado em detalhes. Agora é o momento de compreender o que realmente é hashing.

Note
Estude Mais

Hashing é um processo que recebe uma entrada e produz uma sequência de bytes de tamanho fixo, normalmente expressa como um número hexadecimal. O resultado, conhecido como hash, parece aleatório e muda completamente com qualquer alteração na entrada, uma propriedade conhecida como "efeito avalanche".

Propriedades das Funções Hash

Na blockchain, funções hash são utilizadas para:

  • Proteger transações criando uma impressão digital única para cada uma;
  • Gerar endereços a partir de chaves públicas;
  • Criar os elos na blockchain por meio dos hashes de blocos.

Com isso em mente, uma boa função hash para blockchain possui várias propriedades essenciais:

A hash, especialmente quando se utiliza uma boa função de hash, pode ser comparada ao preparo de um smoothie. Veja a ilustração a seguir:

Na verdade, é possível encontrar a entrada original a partir de um hash, porém, isso exigiria tanto tempo que não seria algo prático.

Hash de Bloco

Para obter o hash de um determinado bloco, o Bitcoin utiliza a função de hash SHA-256, que gera um hash de 256 bits (32 bytes). Ela faz parte da família SHA-2, desenvolvida pela Agência de Segurança Nacional (NSA) e reconhecida por suas fortes propriedades de segurança, tornando-a resistente a colisões, ataques de pré-imagem e outras vulnerabilidades criptográficas.

O hash de um bloco do Bitcoin é calculado utilizando os dados do cabeçalho do bloco. Esses dados são inseridos na função de hash SHA-256 duas vezes em um processo conhecido como double SHA-256.

Veja a imagem para esclarecer:

O hash de 256 bits resultante deve atender a certos critérios definidos pelo alvo de dificuldade da rede. Se o hash não estiver abaixo do alvo, o nonce é ajustado e o hash é recalculado até que um hash qualificado seja encontrado. Esse hash final é o identificador único do bloco.

Raiz de Merkle

A raiz de Merkle é um único hash que representa todas as transações incluídas em um bloco. Seu cálculo começa com os hashes de cada transação individual, utilizando duplo SHA-256.

Cada hash de transação é então pareado com outro, e o par é hasheado junto para produzir um novo hash. Esse processo de pareamento e hash continua camada por camada até restar apenas um hash. O hash final é a raiz de Merkle, que encapsula todo o conjunto de transações e garante sua integridade ao codificá-las em um único valor. Essa estrutura hierárquica é conhecida como árvore de Merkle.

O exemplo a seguir ilustra como uma árvore de Merkle é formada:

Como pode ser observado, nosso bloco contém 6 transações (cada uma rotulada como Tx) e, por meio do hash e pareamento de novos hashes, uma raiz de Merkle é calculada.

Note
Nota

Sempre que o hash mais à direita não possui um par, como ocorre com o Hash56 em nosso exemplo, esse último hash é duplicado para formar um par. Essa técnica mantém a integridade e a eficiência da estrutura da árvore de Merkle mesmo com números ímpares de transações ou hashes em determinado momento.

question mark

Qual é o tamanho da saída da função hash SHA-256 utilizada na blockchain do Bitcoin?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4
some-alt