Hoje vamos explicar o que é hashing e assinatura digital no blockchain.
O que é hash no blockchain?
Hashing se refere ao conceito de pegar uma quantidade arbitrária de dados de entrada, aplicar algum algoritmo a ela e gerar dados de saída de tamanho fixo chamados de hash. A entrada pode ser qualquer número de bits que podem representar um único caractere, um arquivo MP3, um romance inteiro, uma planilha de seu histórico bancário ou até mesmo toda a Internet.
A questão é que a entrada pode ser infinitamente grande. O algoritmo de hash pode ser escolhido dependendo de suas necessidades e há muitos algoritmos de hash disponíveis publicamente. A questão é que o algoritmo pega a entrada infinita de bits, aplica alguns cálculos a eles e produz um número finito de bits. Por exemplo, 256 bits.
Para que esse hash pode ser usado?
Um uso comum para hashes hoje é para arquivos de impressão digital, também conhecidos como zonas de verificação. Isso significa que um hash é usado para verificar se um arquivo não foi adulterado ou modificado de forma não intencional pelo autor. Se o WikiLeaks, por exemplo, publicar um conjunto de arquivos junto com seus hashes MD5, quem fizer o download desses arquivos pode verificar se eles são realmente do WikiLeaks, calculando o hash MD5 dos arquivos baixados, e se o hash não corresponder ao que foi publicado por WikiLeaks, então você sabe que o arquivo foi modificado de alguma forma.
Como o blockchain usa o hash?
Hashes são usados em blockchains para representar o estado atual do mundo. A entrada é o estado completo do blockchain, ou seja, todas as transações que ocorreram até agora e o hash de saída resultante representa o estado atual do blockchain. O hash é usado para concordar entre todas as partes que o estado global é o mesmo, mas como esses hashes são realmente calculados?
O primeiro hash é calculado para o primeiro bloco ou bloco Genesis usando as transações dentro desse bloco. A sequência de transações iniciais é usada para calcular um hash de bloco para o bloco Genesis. Para cada novo bloco gerado subsequentemente, o hash do bloco anterior, assim como suas próprias transações, também é usado como entrada para determinar o hash do bloco. É assim que um blockchain é formado, cada novo hash de bloco apontando para o hash de bloco que veio antes.
Este sistema de hashing garante que nenhuma transação no histórico possa ser manipulada, porque se qualquer parte da transação for alterada, o hash do bloco ao qual ela pertence também mudará, e quaisquer hashes de bloco subsequentes como resultado. Como resultado, seria bastante fácil detectar qualquer manipulação, uma vez que apenas os hashes podem ser comparados. Isso é ótimo porque todos no blockchain só precisam concordar com 256 bits para representar o estado potencialmente infinito do blockchain. O blockchain Ethereum tem atualmente dezenas de gigabytes, mas o estado atual do blockchain, a partir desta gravação, é este hash hexadecimal representando 256 bits.
O que são assinaturas digitais no blockchain?
Assinaturas digitais, como assinaturas reais, são uma forma de provar que alguém é quem diz ser, exceto que usamos criptografia ou matemática, que são mais seguras do que assinaturas manuscritas que podem ser facilmente falsificadas. Uma assinatura digital é uma forma de provar que uma mensagem vem de uma pessoa específica e de mais ninguém, como um hacker.
Assinaturas digitais são usadas em toda a Internet hoje. Cada vez que você visita um site através do ACTPS, está usando SSL, que usa assinaturas digitais para estabelecer confiança entre você e o servidor. Isso significa que quando você visita o Facebook.com, seu navegador pode verificar a assinatura digital que vem com a página da web para verificar se ela realmente se originou do Facebook e não de algum hacker.
Em sistemas de criptografia assimétrica, os usuários geram algo chamado par de chaves, que é uma chave pública e uma chave privada usando um algoritmo conhecido. A chave pública e a chave privada estão associadas uma à outra por algum relacionamento matemático. A chave pública deve ser distribuída publicamente para servir como um endereço para receber mensagens de outros usuários, como um endereço IP ou endereço residencial.
A chave privada deve ser mantida em segredo e é usada para assinar digitalmente as mensagens enviadas a outros usuários. A assinatura é incluída na mensagem para que o destinatário possa verificá-la usando a chave pública do remetente. Desta forma, o destinatário pode ter certeza de que apenas o remetente poderia ter enviado esta mensagem. Gerar um par de chaves é análogo a criar uma conta no blockchain, mas sem ter que se registrar em nenhum lugar. Muito legal. Além disso, cada transação executada no blockchain é assinada digitalmente pelo remetente.
Para amarrar tudo junto, não poderia haver blockchain sem hash e assinaturas digitais. O hash fornece uma maneira para que todos no blockchain concordem com o estado atual do mundo, enquanto as assinaturas digitais fornecem uma maneira de garantir que todas as transações sejam feitas apenas pelos proprietários legítimos. Contamos com essas duas propriedades para garantir que o blockchain não foi corrompido ou comprometido.