Todo sobre el algoritmo Ethash

Qué es Ethash
7 min read

En cualquier conversación sobre Ethereum puede que hayas escuchado hablar sobre Ethash. Este se trata del algoritmo que posibilita el funcionamiento de Ethereum. Dicho algoritmo hace uso de técnicas informáticas muy avanzadas que aumentan el nivel de seguridad en la red.

Otra forma de llamar a este algoritmo es por el nombre de Ethash-Dagger-Hashimoto. Este fue el nombre que adoptó cuando fue creado, sin embargo ha cambiado y evolucionado muchísimo desde entonces. En este artículo veremos qué ofrece y cómo funciona.

Aunque su nombre completo es Ethash-Dagger-Hashimoto, debemos tener en cuenta que Dagger-Hashimoto se refiere al algoritmo de minería que sirvió de base para la creación del actual Ethash. Dicho algoritmo se orientaba a crear un mecanismo seguro basado en la resistencia a la minería ASIC y en la eficiencia que aporta al ser altamente verificable por clientes ligeros.

 

Origen de Ethash

Los creadores de este algoritmo son Vitalik Buterin y Thaddeus Dryja. Ambos desarrollaron este sistema entre los años 2013 y 2014. Este algoritmo parte de dos algoritmos distintos, de ahí su nombre compuesto. El primero, Dragger, es un algoritmo desarrollado por el mismo creador de Ethereum, Buterin. Este algoritmo hace uso de grafos acíclicos dirigidos (DAG) con el objetivo de crear una estructura de datos masiva.

Al principio de su desarrollo la estructura del algoritmo ocupaba un espacio aproximado de 1 Gb en almacenamiento, sin embargo, con el paso de los años su almacenamiento se ha extendido hasta los 4 Gb o 5 Gb. La estructura de este algoritmo permite el funcionamiento del proceso de minería de Hashimoto, el algoritmo del que hablaremos a continuación.

Hashimoto es el segundo algoritmo base de Ethash desarrollado por Thaddeus Dryja con el objetivo de poder agregar la resistencia ASIC al sistema en el que se implemente, y además, llevar a cabo la minería de los hash. Todo ello es posible, ya que el mismo algoritmo hace que aumente el consumo de memoria RAM y de este modo limita a los ASIC.

 

De la unión de ambos algoritmos sale otro algoritmo único que ofrece la capacidad de diseñar un nuevo sistema de minería tan complejo que los mineros ASIC no pueden implementarlo eficazmente. De hecho, su estructura es tan avanzada que muchos desarrolladores intentan implementarlo como opción alternativa al Scrypt. Sin embargo, Dragger-Hashimoto no siempre fue lo que es actualmente. Como todo, presentó diversos fallos que le convirtieron en el algoritmo actual. A continuación veremos cómo funciona.

Qué-es-Ethash

¿Cómo funciona Ethash?

El funcionamiento de Ethash es completamente distinto al funcionamiento base del algoritmo en el que está basado, Dragger-Hashimoto. No obstante, existen algunas características fundamentales que siguen en pie.

Como inicio del algoritmo, este crea una semilla calculada a través de las cabeceras de bloques hasta el inicio de la minería. Posteriormente se utiliza la semilla anterior para calcular y crear un caché pseudoaleatorio con un tamaño exacto de 16 MB. Una vez creado, este se utiliza para crear un conjunto de datos que ocupen más de 4 GB. Estos datos son lo que llamamos “DAG”.

El DAG se actualiza cada 30 mil bloques variando para cada temporada de minería. El proceso de minería inicia con la creación del DAG. Durante la minería se toman valores aleatorios del DAG y estos son combinados con datos suministrados por la red y el resto de transacciones para ser verificadas. Para la fase final se realiza la verificación a través de un proceso que genera partes determinadas del conjunto de datos anteriores mediante la memoria caché para acelerar dicho proceso.

 

Para llegar al funcionamiento actual, Ethash ha vivido 23 versiones de su algoritmo. Sin embargo, existen aspectos que no han cambiado como el uso de las funciones Keccak-256 y Keccak-512. Estas se tratan del algoritmo del cual se derivó lo que hoy en día conocemos como el estándar SHA-3.

Puede que al ver un número tan alto de actualizaciones pensemos que los desarrolladores no están conformes o que el proyecto está incompleto. Sin embargo, cada actualización corresponde a una solución de problemas que puede presentar el algoritmo. Las actualizaciones se llevaban a cabo para mejorar, asegurar y arreglar el algoritmo, pero sobre todo, para aumentar la dificultad de implementación en ASIC. De este modo se fue creando un algoritmo cada vez más amigable para las GPU.

Qué-es-Ethash

Ventajas y desventajas

Como todo sistema informático, Ethash cuenta con ventajas y desventajas que lo diferencian del resto de algoritmos. A continuación veremos las más destacadas:

 

Ventajas:

  • Fácil de implementar. Ethash es un algoritmo sencillo, seguro y sobre todo práctico.

  • Rapidez. Al utilizar la estructura DAG en la memoria sumado a la función Keccak y al uso de caché, Ethash se convierte en uno de los algoritmos más eficientes en cuanto a la producción de bloques. Gracias a ello la red de Ethereum emplea un tiempo de producción de bloques adaptable a los requerimientos de la red.

  • Capacidad de verificación. Una de las ventajas respecto al resto de algoritmos es que con tan solo 16 MB de memoria RAM podemos crear un cliente ligero que cuente con la capacidad de verificar transacciones de forma rápida y sencilla. Dicho cliente podría llevar a cabo el proceso de verificación en tan solo 30 segundos.

 

Desventajas:

  • Resistencia ASIC. Una de las ventajas de Ethash se rompió en el año 2018 debido al minero creado por Bitmain que minaba con Ethash.

  • Consumo excesivo de memoria. Esto lleva a que sea difícil minar en equipos con menor capacidad. Su consumo excesivo proviene de su funcionamiento altamente dependiente de operaciones en memorias RAM que consumen grandes cantidades de ancho de banda. Aunque es una medida de protección contra los ASIC también es necesario para mantener un correcto funcionamiento del sistema. Gracias a la caché se puede realizar un minado más eficiente utilizando el espacio para la realización de cálculos.

  • La dificultad de este algoritmo es tan escalable que provoca una alta dificultad de minado para los mineros de la red de Ethereum arriesgando así la seguridad de su blockchain.