{"id":4811,"date":"2023-04-01T19:12:32","date_gmt":"2023-04-01T19:12:32","guid":{"rendered":"https:\/\/www.bitnovo.com\/blog\/?p=4811"},"modified":"2022-04-29T11:45:20","modified_gmt":"2022-04-29T11:45:20","slug":"todo-sobre-el-algoritmo-ethash","status":"publish","type":"post","link":"https:\/\/www.bitnovo.com\/blog\/todo-sobre-el-algoritmo-ethash","title":{"rendered":"Todo sobre el algoritmo Ethash"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #ffffff;color:#ffffff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #ffffff;color:#ffffff\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.bitnovo.com\/blog\/todo-sobre-el-algoritmo-ethash\/#origen_de_ethash\" >Origen de Ethash<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.bitnovo.com\/blog\/todo-sobre-el-algoritmo-ethash\/#%c2%bfcomo_funciona_ethash\" >\u00bfC\u00f3mo funciona Ethash?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.bitnovo.com\/blog\/todo-sobre-el-algoritmo-ethash\/#ventajas_y_desventajas\" >Ventajas y desventajas<\/a><\/li><\/ul><\/nav><\/div>\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tiempo de lectura:<\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p>En cualquier conversaci\u00f3n sobre Ethereum puede que hayas escuchado hablar sobre Ethash. Este se trata del\u00a0<b>algoritmo<\/b>\u00a0que posibilita el\u00a0<b>funcionamiento<\/b>\u00a0de\u00a0<b>Ethereum<\/b>. Dicho algoritmo hace uso de t\u00e9cnicas inform\u00e1ticas muy avanzadas que aumentan el nivel de seguridad en la red.<\/p>\n<p>Otra forma de llamar a este algoritmo es por el nombre de\u00a0<b>Ethash-Dagger-Hashimoto<\/b>. Este fue el nombre que adopt\u00f3 cuando fue creado, sin embargo ha cambiado y evolucionado much\u00edsimo desde entonces. En este art\u00edculo veremos qu\u00e9 ofrece y c\u00f3mo funciona.<\/p>\n<p>Aunque su nombre\u00a0<b>completo<\/b>\u00a0es Ethash-Dagger-Hashimoto, debemos tener en cuenta que Dagger-Hashimoto se refiere al algoritmo de miner\u00eda que sirvi\u00f3 de base para la\u00a0<b>creaci\u00f3n<\/b>\u00a0del actual\u00a0<b>Ethash<\/b>. Dicho algoritmo se orientaba a crear un mecanismo seguro basado en la resistencia a la miner\u00eda\u00a0<b>ASIC<\/b>\u00a0y en la eficiencia que aporta al ser altamente verificable por clientes ligeros.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"is-divider divider clearfix\"><\/div>\n<h2><span class=\"ez-toc-section\" id=\"origen_de_ethash\"><\/span><strong>Origen de Ethash<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Los creadores de este algoritmo son<b><a href=\"https:\/\/www.bitnovo.com\/blog\/quien-es-vitalik-buterin\/\">\u00a0Vitalik Buterin<\/a>\u00a0y Thaddeus Dryja<\/b>. Ambos desarrollaron este sistema entre los a\u00f1os\u00a0<b>2013 y 2014<\/b>. Este algoritmo parte de dos algoritmos distintos, de ah\u00ed su nombre compuesto. El primero, Dragger, es un algoritmo desarrollado por el mismo creador de Ethereum, Buterin. Este algoritmo hace uso de grafos ac\u00edclicos dirigidos (DAG) con el objetivo de crear una estructura de datos masiva.<\/p>\n<p>Al principio de su desarrollo la estructura del algoritmo ocupaba un espacio aproximado de<b>\u00a01 Gb en almacenamiento<\/b>, sin embargo, con el paso de los a\u00f1os su\u00a0<b>almacenamiento<\/b>\u00a0se ha extendido hasta los\u00a0<b>4 Gb o 5 Gb<\/b>. La estructura de este algoritmo permite el funcionamiento del proceso de miner\u00eda de Hashimoto, el algoritmo del que hablaremos a continuaci\u00f3n.<\/p>\n<p>Hashimoto es el segundo algoritmo base de Ethash desarrollado por Thaddeus Dryja con el objetivo de poder agregar la<b>\u00a0resistencia ASIC<\/b>\u00a0al sistema en el que se implemente, y adem\u00e1s, llevar a cabo la miner\u00eda de los hash. Todo ello es posible, ya que el mismo algoritmo hace que aumente el consumo de\u00a0<b>memoria RAM<\/b>\u00a0y de este modo limita a los ASIC.<\/p>\n<p>De la uni\u00f3n de ambos algoritmos sale otro algoritmo \u00fanico que ofrece la capacidad de dise\u00f1ar un nuevo sistema de miner\u00eda tan complejo que los mineros ASIC no pueden\u00a0<b>implementarlo<\/b>\u00a0<b>eficazmente<\/b>. De hecho, su estructura es tan avanzada que muchos desarrolladores intentan implementarlo como opci\u00f3n<b>\u00a0alternativa al Scrypt.<\/b>\u00a0Sin embargo, Dragger-Hashimoto no siempre fue lo que es actualmente. Como todo, present\u00f3 diversos fallos que le convirtieron en el\u00a0<b>algoritmo<\/b>\u00a0<b>actual<\/b>. A continuaci\u00f3n veremos c\u00f3mo funciona.<\/p>\n<div id=\"image_1255358798\" class=\"img has-hover x md-x lg-x y md-y lg-y\">\n<div class=\"img-inner dark\"><img fetchpriority=\"high\" decoding=\"async\" class=\"attachment-large size-large lazyloaded\" src=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu%C3%A9-es-Ethash1.jpg\" sizes=\"(max-width: 768px) 100vw, 768px\" srcset=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash1.jpg 768w, https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash1-300x205.jpg 300w\" alt=\"Qu\u00e9-es-Ethash\" width=\"768\" height=\"526\" data-srcset=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash1.jpg 768w, https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash1-300x205.jpg 300w\" data-src=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash1.jpg\" data-sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/div>\n<\/div>\n<div class=\"is-divider divider clearfix\"><\/div>\n<div class=\"is-divider divider clearfix\"><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%c2%bfcomo_funciona_ethash\"><\/span><strong>\u00bfC\u00f3mo funciona Ethash?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>El funcionamiento de Ethash es completamente distinto al funcionamiento base del algoritmo en el que est\u00e1 basado, Dragger-Hashimoto. No obstante, existen algunas caracter\u00edsticas fundamentales que siguen en pie.<\/p>\n<p>Como inicio del algoritmo, este crea una\u00a0<b>semilla<\/b>\u00a0calculada a trav\u00e9s de las cabeceras de bloques hasta el inicio de la\u00a0<b>miner\u00eda<\/b>. Posteriormente se utiliza la semilla anterior para calcular y crear un cach\u00e9\u00a0<b>pseudoaleatorio con un tama\u00f1o exacto de 16 MB<\/b>. Una vez creado, este se utiliza para crear un conjunto de datos que ocupen m\u00e1s de\u00a0<b>4 GB.<\/b>\u00a0Estos datos son lo que llamamos \u201c<b>DAG<\/b>\u201d.<\/p>\n<p>El DAG se actualiza cada<b>\u00a030 mil bloques\u00a0<\/b>variando\u00a0para cada\u00a0<b>temporada<\/b>\u00a0de miner\u00eda. El proceso de miner\u00eda inicia con la\u00a0<b>creaci\u00f3n<\/b>\u00a0del\u00a0<b>DAG<\/b>. Durante la miner\u00eda se toman valores aleatorios del DAG y estos son\u00a0<b>combinados<\/b>\u00a0con datos suministrados por la red y el resto de transacciones para ser\u00a0<b>verificadas<\/b>. Para la fase final se realiza la\u00a0<b>verificaci\u00f3n<\/b>\u00a0a trav\u00e9s de un\u00a0<b>proceso<\/b>\u00a0que genera partes determinadas del conjunto de datos anteriores mediante la\u00a0<b>memoria cach\u00e9<\/b>\u00a0para acelerar dicho proceso.<\/p>\n<p>Para llegar al funcionamiento actual, Ethash ha vivido<b>\u00a023 versiones de su algoritmo.\u00a0<\/b>Sin embargo, existen aspectos que no han cambiado como el uso de las funciones Keccak-256 y\u00a0<b>Keccak-512.\u00a0<\/b>Estas se tratan del algoritmo del cual se deriv\u00f3 lo que hoy en d\u00eda conocemos como el est\u00e1ndar SHA-3.<\/p>\n<p>Puede que al ver un n\u00famero tan alto de actualizaciones pensemos que los desarrolladores no est\u00e1n conformes o que el proyecto est\u00e1 incompleto. Sin embargo, cada actualizaci\u00f3n corresponde a una\u00a0<b>soluci\u00f3n<\/b>\u00a0de problemas que puede presentar el algoritmo. Las actualizaciones se llevaban a cabo para\u00a0<b>mejorar<\/b>,\u00a0<b>asegurar<\/b>\u00a0y\u00a0<b>arreglar<\/b>\u00a0el algoritmo, pero sobre todo, para aumentar la dificultad de\u00a0<b>implementaci\u00f3n<\/b>\u00a0en\u00a0<b>ASIC<\/b>. De este modo se fue creando un algoritmo cada vez m\u00e1s\u00a0<b>amigable para las GPU<\/b>.<\/p>\n<div id=\"image_618760809\" class=\"img has-hover x md-x lg-x y md-y lg-y\">\n<div class=\"img-inner dark\"><img decoding=\"async\" class=\"attachment-large size-large lazyloaded\" src=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu%C3%A9-es-Ethash2.jpg\" sizes=\"(max-width: 768px) 100vw, 768px\" srcset=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash2.jpg 768w, https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash2-300x205.jpg 300w\" alt=\"Qu\u00e9-es-Ethash\" width=\"768\" height=\"526\" data-srcset=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash2.jpg 768w, https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash2-300x205.jpg 300w\" data-src=\"https:\/\/www.bitnovo.com\/blog\/wp-content\/uploads\/2021\/06\/Qu\u00e9-es-Ethash2.jpg\" data-sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/div>\n<\/div>\n<div class=\"is-divider divider clearfix\"><\/div>\n<div class=\"is-divider divider clearfix\"><\/div>\n<h2><span class=\"ez-toc-section\" id=\"ventajas_y_desventajas\"><\/span><strong>Ventajas y desventajas<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Como todo sistema inform\u00e1tico, Ethash cuenta con ventajas y desventajas que lo diferencian del resto de algoritmos. A continuaci\u00f3n veremos las m\u00e1s destacadas:<\/p>\n<p><strong>Ventajas:<\/strong><\/p>\n<ul>\n<li aria-level=\"1\"><b>F\u00e1cil de implementar.<\/b>\u00a0Ethash es un algoritmo sencillo, seguro y sobre todo pr\u00e1ctico.<\/li>\n<li aria-level=\"1\"><b>Rapidez<\/b>. Al utilizar la estructura DAG en la memoria sumado a la funci\u00f3n Keccak y al uso de cach\u00e9, Ethash se convierte en uno de los algoritmos m\u00e1s eficientes en cuanto a la producci\u00f3n de bloques. Gracias a ello la red de\u00a0<strong><a href=\"https:\/\/www.bitnovo.com\/blog\/que-es-y-como-funciona-ethereum-eth\/\">Ethereum<\/a><\/strong>\u00a0emplea un tiempo de producci\u00f3n de bloques adaptable a los requerimientos de la red.<\/li>\n<li aria-level=\"1\"><b>Capacidad de verificaci\u00f3n.\u00a0<\/b>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\u00e1pida y sencilla. Dicho cliente podr\u00eda llevar a cabo el proceso de verificaci\u00f3n en tan solo 30 segundos.<\/li>\n<\/ul>\n<p><strong>Desventajas:<\/strong><\/p>\n<ul>\n<li aria-level=\"1\"><b>Resistencia ASIC.<\/b>\u00a0Una de las ventajas de Ethash se rompi\u00f3 en el a\u00f1o 2018 debido al minero creado por Bitmain que minaba con Ethash.<\/li>\n<li aria-level=\"1\"><b>Consumo excesivo de memoria.<\/b>\u00a0Esto lleva a que sea dif\u00edcil 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\u00f3n contra los ASIC tambi\u00e9n es necesario para mantener un correcto funcionamiento del sistema. Gracias a la cach\u00e9 se puede realizar un minado m\u00e1s eficiente utilizando el espacio para la realizaci\u00f3n de c\u00e1lculos.<\/li>\n<li aria-level=\"1\">La\u00a0<b>dificultad<\/b>\u00a0de este algoritmo es tan\u00a0<b>escalable<\/b>\u00a0que provoca una alta dificultad de minado para los mineros de la red de Ethereum arriesgando as\u00ed la seguridad de su\u00a0<a href=\"https:\/\/www.bitnovo.com\/blog\/que-es-la-blockchain-y-como-funciona\/\">blockchain<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tiempo de lectura:<\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>En cualquier conversaci\u00f3n sobre Ethereum puede que hayas escuchado hablar sobre Ethash. Este se trata del\u00a0algoritmo\u00a0que posibilita el\u00a0funcionamiento\u00a0de\u00a0Ethereum. Dicho algoritmo hace uso de t\u00e9cnicas inform\u00e1ticas muy avanzadas que aumentan el nivel de seguridad en la red. Otra forma de llamar a este algoritmo es por el nombre de\u00a0Ethash-Dagger-Hashimoto. Este fue el nombre que adopt\u00f3 cuando [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":4813,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[146],"tags":[],"class_list":["post-4811","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain"],"_links":{"self":[{"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/posts\/4811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/comments?post=4811"}],"version-history":[{"count":0,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/posts\/4811\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/media\/4813"}],"wp:attachment":[{"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/media?parent=4811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/categories?post=4811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/tags?post=4811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}