


Introdução à série
Boas-vindas a uma nova série: Zero to Zero Knowledge!
Nesta série, aprenderemos os fundamentos de uma ampla gama de tecnologias que compõem nossos protocolos de preservação da privacidade.
Hoje começamos com funções hash - uma peça-chave da criptografia usada em blockchains. Mais adiante nesta série, abordaremos alguns tópicos que dependem de suas propriedades.
Funções hash recebem uma entrada de qualquer comprimento e produzem uma saída de comprimento fixo.

Tenha uma compreensão prática usando esta ferramenta!
Insira qualquer texto arbitrário para produzir uma saída de comprimento fixo. Observe como a saída varia dependendo do algoritmo de hash escolhido.
Experimente: https://cryptii.com/pipes/hash-function
Funções hash criptográficas devem ter estas 3 propriedades:
Existem várias classes de funções hash. Alguns exemplos:
Uma introdução ao BLAKE2: https://www.blake2.net
Verificações de integridade de dados são um exemplo de "hashing de integridade". Elas são usadas para gerar checksums em arquivos de dados e fornecer garantia de correção ao usuário.

Uma árvore hash ou árvore de Merkle é composta por ramos e nós-folha rotulados com o hash criptográfico de um bloco de dados.

Árvores de Merkle são um exemplo de um esquema de compromisso criptográfico. A raiz da árvore é vista como um compromisso, e prova-se que os nós-folha fazem parte do compromisso original.
Elas verificam dados armazenados ou transferidos em redes P2P, garantindo que os dados recebidos de pares não foram alterados.
Nas pools blindadas Sapling e Orchard do Zcash, a Note Commitment Tree é usada para verificar se as transações são válidas de acordo com o consenso, ao mesmo tempo em que oculta perfeitamente o remetente, o destinatário e os valores consumidos.
SHA256 é um exemplo de "hash de assinatura" usado para impor a imutabilidade de cada bloco na chain do Bitcoin. Os mineradores usam o hash do bloco anterior + um hash de todas as transações no bloco atual (hashMerkleRoot) + timestamp + valor aleatório / dificuldade da rede para novos blocos.

Equihash é o algoritmo de hash usado na mineração de Zcash. Ele também é usado por redes como Komodo e Horizen.
Equihash: Asymmetric Proof-of-Work Based on the Generalized Birthday Problem (Biryukov e Khovratovich): https://eprint.iacr.org/2015/946
Para ter uma compreensão maior dos diferentes tipos de funções hash e seus usos associados, este é um excelente recurso:
https://en.wikipedia.org/wiki/Hash_function
Thread do ZecHub (@ZecHub)
Thread original no X: https://x.com/ZecHub/status/1621240109663227906
Esta página foi compilada a partir da thread original Zero to Zero Knowledge para a wiki do ZecHub.