Tabla de Contenidos
ToggleEn 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.
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.
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.
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:
Desventajas: