Tudo sobre o algoritmo Ethash

Qué es Ethash
7 min read

Em qualquer conversa sobre o Ethereum, deves ter ouvido falar do Ethash. Este é o algoritmo que torna o Ethereum possível. Este algoritmo faz uso de técnicas de computador muito avançadas que aumentam o nível de segurança na rede.

Outra forma de chamar este algoritmo é pelo nome de Ethash-Dagger-Hashimoto.  Este foi o nome que adotou quando foi criado, no entanto mudou e evoluiu muito desde então. Neste artigo veremos o que oferece e como funciona.

Embora o seu nome completo seja Ethash-Dagger-Hashimoto, devemos notar que Dagger-Hashimoto se refere ao algoritmo minério que serviu de base para a criação do atual Ethash. Este algoritmo visava criar um mecanismo seguro baseado na resistência à mineração ASIC e na eficiência que traz por ser altamente verificável por clientes ligeiros.

 

Origem de Ethash

Os criadores deste algoritmo são Vitalik Buterin e Thaddeus Dryja.  Ambos desenvolveram este sistema entre 2013 e 2014.  Este algoritmo começa a partir de dois algoritmos diferentes, daí o seu nome composto. O primeiro, Dragger, é um algoritmo desenvolvido pelo próprio criador de Ethereum Buterin. Este algoritmo faz uso de gráficos acíclicos direcionados (DAGs) para criar uma estrutura de dados maciça.

No início do seu desenvolvimento, a estrutura do algoritmo ocupou um espaço aproximado de 1 Gb em armazenamento, no entanto, ao longo dos anos o seu armazenamento foi estendido para 4 Gb ou 5 Gb.  A estrutura deste algoritmo permite o funcionamento do processo de mineração Hashimoto, o algoritmo de que falaremos a seguir.

Hashimoto é o segundo algoritmo de base Ethash desenvolvido por Thaddeus Dryja com o objetivo de ser capaz de adicionar a resistência ASIC ao sistema em que é implementado, e também, para realizar a mineração dos hash. Tudo isto é possível, uma vez que o mesmo algoritmo aumenta o consumo de RAM e, assim, limita o ASICS.

Da união de ambos os algoritmos vem outro algoritmo único que oferece a capacidade de desenhar um novo sistema mineração tão complexo que os mineiros da ASIC não podem implementá-lo eficazmente.  Na verdade, a sua estrutura é tão avançada que muitos programadores tentam implementá-la como uma alternativa ao Scrypt. No entanto, Dragger-Hashimoto nem sempre foi o que é hoje. Como tudo o resto, apresentou várias falhas que o tornaram o algoritmo atual.  Lá em baixo veremos como funciona.

Qué-es-Ethash

Como funciona o Ethash?

A operação de Ethash é completamente diferente da operação base do algoritmo em que se baseia, Dragger-Hashimoto. No entanto, existem algumas características fundamentais que ainda se mantêm.

Como início do algoritmo, cria uma semente calculada através dos cabeçalhos de bloco até ao início da   mineração. A semente acima é então usada para calcular e criar uma cache pseudoaleatória com um tamanho exato de 16 MB.  Uma vez criado, é usado para criar um conjunto de dados que abrange mais de 4 GB. Estes dados são o que chamamos de “DAG“.

O DAG é atualizado a cada 30 mil blocos variando para cada temporada de mineração.  O processo de mineração começa com a criação do DAG.  Durante a mineração, os valores aleatórios são retirados do DAG e estes são combinados com dados fornecidos pela rede e com o resto das transações a serem verificadas.  Para a fase final, a verificação é realizada através de um processo que gera partes específicas do conjunto de dados anteriores usando a cache para acelerar esse processo.

Para chegar à operação atual, Ethash viveu 23 versões do seu algoritmo. No entanto, há aspetos que não mudaram, como a utilização das funções Keccak-256 e Keccak-512. Este é o algoritmo do qual o que conhecemos hoje como o padrão SHA-3 foi derivado.

Quando vemos um número tão elevado de atualizações, podemos pensar que os desenvolvedores não estão satisfeitos ou que o projeto está incompleto. No entanto, cada atualização corresponde a uma resolução de problemas que o algoritmo pode apresentar. Foram realizadas atualizações para melhorar, proteger e corrigir o algoritmo, mas acima de tudo, para aumentar a dificuldade de implementação na ASIC.  Desta forma, foi criado um algoritmo cada vez mais amigo da GPU.

Qué-es-Ethash

Vantagens e desvantagens

Como qualquer sistema informático, o Ethash tem vantagens e desvantagens que o diferenciam de outros algoritmos. Abaixo veremos o mais notável:

 

Vantagens:

  • Fácil de implementar. Ethash é um algoritmo simples, seguro e acima de tudo prático.
  • Velocidade. Ao usar a estrutura DAG na memória, além da função Keccak e do uso de cache, ethash torna-se um dos algoritmos mais eficientes em termos de produção de blocos. Graças a isso, a rede Ethereum utiliza um tempo de produção de bloco adaptável às exigências da rede.
  • Capacidade de verificação. Uma das vantagens sobre o resto dos algoritmos é que com apenas 16 MB de RAM podemos criar um cliente ligeiro que tem a capacidade de verificar transações de forma rápida e fácil. Esse cliente pode realizar o processo de verificação em apenas 30 segundos.

 

Desvantagens:

  • Resistência ASIC. Uma das vantagens do Ethash foi quebrada em 2018 devido ao mineiro criado pela Bitmain que estava a minerar com a Ethash.
  • Consumo excessivo de memória. Isto dificulta a mineração em equipamentos com menos capacidade. O seu consumo excessivo provém da sua operação altamente dependente de operações na RAM que consomem grandes quantidades de largura de banda. Embora seja uma medida de proteção contra a ASIC, também é necessário manter um correto funcionamento do sistema. Graças à cache, uma mineração mais eficiente pode ser realizada usando o espaço para a realização de cálculos.
  • A dificuldade deste algoritmo é tão escalável que causa uma elevada dificuldade mineira para os mineiros da rede Ethereum, arriscando assim a segurança da sua