# Zero to Zero Knowledge Bem-vindo a uma nova série: Conhecimento Zero a Zero! Nesta série, aprenderemos os fundamentos de uma ampla gama de tecnologias que fazem parte de nossos protocolos de preservação de privacidade. ![](https://i.imgur.com/T230fDj.jpg) Hoje começaremos com Hash Functions - uma peça chave da criptografia usada em blockchains. Mais adiante nesta série, abordaremos alguns tópicos que dependem de suas propriedades, aqui está uma cartilha: As funções de hash aceitam uma entrada de qualquer tamanho e produzem uma saída de comprimento fixo. Uma mensagem a ser hash = Entrada O algoritmo que é usado = Função Hash Saída resultante = valor de hash Entrada —> Função Hash —> Valor Hash ![](https://pbs.twimg.com/media/Fn_NkFHXgAEtgse?format=png&name=small) Vamos começar a entender usando essa 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 diferente. Experimente: https://t.co/cfAqlmaG9a Funções hash criptográficas devem possuir essas 3 propriedades: - Unidirecional: Deve ser inviável reverter uma função hash ➡️ - Resistente a colisões: duas entradas não devem ser confundidas com a mesma saída ❌ - Determinístico: Para qualquer entrada, uma função hash deve sempre dar o mesmo resultado ↕️ Existem várias classes de Funções Hash. Alguns exemplos: * Algoritmo de hash seguro (SHA-3) * Algoritmo de Digestão de Mensagem 5 (MD5) * BLAKE2b - Usado na derivação de chave Zcash Uma introdução ao BLAKE2 por Zooko https://lists.randombit.net/pipermail/cryptography/2012-December/003562.html As verificações de integridade de dados são um exemplo de 'Integrity Hashing'. Eles são usados ​​para gerar somas de verificação em arquivos de dados e fornecer garantia de correção para um usuário. ![](https://pbs.twimg.com/media/Fn_Or0MWIAI6sgx?format=png&name=small) Uma árvore de hash ou árvore Merkle é composta de ramos e nós de folha que são rotulados com o hash criptográfico de um bloco de dados. ![](https://pbs.twimg.com/media/Fn_O7ndWIAY5PA-?format=jpg&name=small) As árvores Merkle são um exemplo de esquema de compromisso criptográfico. A raiz da árvore é vista como um compromisso e os nós de folha provados como parte do compromisso original. Nas pools blindados Zcash🌿Sapling &🌳Orchard, a árvore de compromisso de notas é usada para verificar se as transações são válidas em relação ao consenso, ocultando 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 cadeia 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 de rede para novos blocos. ![](https://pbs.twimg.com/media/Fn_PaVZXoAApHPf?format=jpg&name=small) Equihash é o algoritmo de hash usado na mineração Zcash. Também é usado por redes como Komodo & Horizen. Aqui está o Blog Zcash original no Equihash Para entender melhor os diferentes tipos de funções de hash e seus usos associados, este é um excelente recurso: https://t.co/RGSHy5Chy7