{"id":12508,"date":"2023-08-16T16:01:52","date_gmt":"2023-08-16T16:01:52","guid":{"rendered":"https:\/\/www.bitnovo.com\/blog\/?p=12508"},"modified":"2022-06-23T12:10:43","modified_gmt":"2022-06-23T12:10:43","slug":"tudo-sobre-o-algoritmo-ethash","status":"publish","type":"post","link":"https:\/\/www.bitnovo.com\/blog\/pt\/tudo-sobre-o-algoritmo-ethash","title":{"rendered":"Tudo sobre o 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\/pt\/tudo-sobre-o-algoritmo-ethash\/#origem_de_ethash\" >Origem 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\/pt\/tudo-sobre-o-algoritmo-ethash\/#como_funciona_o_ethash\" >Como funciona o 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\/pt\/tudo-sobre-o-algoritmo-ethash\/#vantagens_e_desvantagens\" >Vantagens e desvantagens<\/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>Em qualquer conversa sobre o Ethereum, deves ter ouvido falar do Ethash. Este \u00e9 o<strong>\u00a0algoritmo<\/strong>\u00a0que torna o Ethereum\u00a0<strong>poss\u00edvel.<\/strong>\u00a0Este algoritmo faz uso de t\u00e9cnicas de computador muito avan\u00e7adas que aumentam o n\u00edvel de seguran\u00e7a na rede.<\/p>\n<p>Outra forma de chamar este algoritmo \u00e9 pelo nome de\u00a0<strong>Ethash-Dagger-Hashimoto.<\/strong>\u00a0\u00a0Este foi o nome que adotou quando foi criado, no entanto mudou e evoluiu muito desde ent\u00e3o. Neste artigo veremos o que oferece e como funciona.<\/p>\n<p>Embora o seu nome<strong>\u00a0completo<\/strong>\u00a0seja Ethash-Dagger-Hashimoto, devemos notar que Dagger-Hashimoto se refere ao algoritmo min\u00e9rio que serviu de base para a\u00a0<strong>cria\u00e7\u00e3o<\/strong>\u00a0do atual\u00a0<strong>Ethash.<\/strong>\u00a0Este algoritmo visava criar um mecanismo seguro baseado na resist\u00eancia \u00e0 minera\u00e7\u00e3o ASIC e na efici\u00eancia que traz por ser altamente verific\u00e1vel por clientes ligeiros.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"is-divider divider clearfix\"><\/div>\n<h2><span class=\"ez-toc-section\" id=\"origem_de_ethash\"><\/span><strong>Origem de Ethash<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Os criadores deste algoritmo s\u00e3o<a href=\"https:\/\/www.bitnovo.com\/blog\/quien-es-vitalik-buterin\/\"><strong>\u00a0Vitalik Buterin<\/strong>\u00a0<\/a><strong>e Thaddeus Dryja.<\/strong>\u00a0\u00a0Ambos desenvolveram este sistema entre\u00a0<strong>2013 e 2014.<\/strong>\u00a0\u00a0Este algoritmo come\u00e7a a partir de dois algoritmos diferentes, da\u00ed o seu nome composto. O primeiro, Dragger, \u00e9 um algoritmo desenvolvido pelo pr\u00f3prio criador de Ethereum Buterin. Este algoritmo faz uso de gr\u00e1ficos ac\u00edclicos direcionados (DAGs) para criar uma estrutura de dados maci\u00e7a.<\/p>\n<p>No in\u00edcio do seu desenvolvimento, a estrutura do algoritmo ocupou um espa\u00e7o aproximado de<strong>\u00a01 Gb em armazenamento,<\/strong>\u00a0no entanto, ao longo dos anos o seu\u00a0<strong>armazenamento<\/strong>\u00a0foi estendido para\u00a0<strong>4 Gb ou 5 Gb.<\/strong>\u00a0\u00a0A estrutura deste algoritmo permite o funcionamento do processo de minera\u00e7\u00e3o Hashimoto, o algoritmo de que falaremos a seguir.<\/p>\n<p>Hashimoto \u00e9 o segundo algoritmo de base Ethash desenvolvido por Thaddeus Dryja com o objetivo de ser capaz de adicionar<strong>\u00a0a resist\u00eancia ASIC<\/strong>\u00a0ao sistema em que \u00e9 implementado, e tamb\u00e9m, para realizar a minera\u00e7\u00e3o dos hash. Tudo isto \u00e9 poss\u00edvel, uma vez que o mesmo algoritmo aumenta o\u00a0<strong>consumo de RAM<\/strong>\u00a0e, assim, limita o ASICS.<\/p>\n<p>Da uni\u00e3o de ambos os algoritmos vem outro algoritmo \u00fanico que oferece a capacidade de desenhar um novo sistema minera\u00e7\u00e3o t\u00e3o complexo que os mineiros da ASIC n\u00e3o podem<strong>\u00a0implement\u00e1-lo eficazmente.<\/strong>\u00a0\u00a0Na verdade, a sua estrutura \u00e9 t\u00e3o avan\u00e7ada que muitos programadores tentam implement\u00e1-la como uma\u00a0<strong>alternativa ao Scrypt.<\/strong>\u00a0No entanto, Dragger-Hashimoto nem sempre foi o que \u00e9 hoje. Como tudo o resto, apresentou v\u00e1rias falhas que o tornaram o algoritmo<strong>\u00a0atual.<\/strong>\u00a0\u00a0L\u00e1 em baixo veremos como funciona.<\/p>\n<div id=\"image_1078725593\" 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 ls-is-cached 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=\"como_funciona_o_ethash\"><\/span><strong>Como funciona o Ethash?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A opera\u00e7\u00e3o de Ethash \u00e9 completamente diferente da opera\u00e7\u00e3o base do algoritmo em que se baseia, Dragger-Hashimoto. No entanto, existem algumas caracter\u00edsticas fundamentais que ainda se mant\u00eam.<\/p>\n<p>Como in\u00edcio do algoritmo, cria uma\u00a0<strong>semente<\/strong>\u00a0calculada atrav\u00e9s dos cabe\u00e7alhos de bloco at\u00e9 ao in\u00edcio da\u00a0<strong>\u00a0<\/strong>\u00a0minera\u00e7\u00e3o. A semente acima \u00e9 ent\u00e3o usada para calcular e criar uma\u00a0<strong>cache pseudoaleat\u00f3ria com um tamanho exato de 16 MB.<\/strong>\u00a0\u00a0Uma vez criado, \u00e9 usado para criar um conjunto de dados que abrange mais de\u00a0<strong>4 GB.<\/strong>\u00a0Estes dados s\u00e3o o que chamamos de \u201c<strong>DAG<\/strong>\u201c.<\/p>\n<p>O DAG \u00e9 atualizado a cada<strong>\u00a030 mil blocos<\/strong>\u00a0variando para cada\u00a0<strong>temporada de minera\u00e7\u00e3o.<\/strong>\u00a0\u00a0O processo de minera\u00e7\u00e3o come\u00e7a com a\u00a0<strong>cria\u00e7\u00e3o<\/strong>\u00a0do\u00a0<strong>DAG.<\/strong>\u00a0\u00a0Durante a minera\u00e7\u00e3o, os valores aleat\u00f3rios s\u00e3o retirados do DAG e estes s\u00e3o combinados com dados fornecidos pela rede e com o resto das transa\u00e7\u00f5es a serem\u00a0<strong>verificadas.<\/strong>\u00a0\u00a0Para a fase final, a verifica\u00e7\u00e3o \u00e9 realizada atrav\u00e9s de um processo que gera partes espec\u00edficas do conjunto de dados anteriores usando a\u00a0<strong>cache<\/strong>\u00a0para acelerar esse processo.<\/p>\n<p>Para chegar \u00e0 opera\u00e7\u00e3o atual, Ethash viveu<strong>\u00a023 vers\u00f5es do seu algoritmo.<\/strong>\u00a0No entanto, h\u00e1 aspetos que n\u00e3o mudaram, como a utiliza\u00e7\u00e3o das fun\u00e7\u00f5es Keccak-256 e\u00a0<strong>Keccak-512.<\/strong>\u00a0Este \u00e9 o algoritmo do qual o que conhecemos hoje como o padr\u00e3o SHA-3 foi derivado.<\/p>\n<p>Quando vemos um n\u00famero t\u00e3o elevado de atualiza\u00e7\u00f5es, podemos pensar que os desenvolvedores n\u00e3o est\u00e3o satisfeitos ou que o projeto est\u00e1 incompleto. No entanto, cada atualiza\u00e7\u00e3o corresponde a uma\u00a0<strong>resolu\u00e7\u00e3o\u00a0<\/strong>de problemas que o algoritmo pode apresentar. Foram realizadas atualiza\u00e7\u00f5es para\u00a0<strong>melhorar,<\/strong>\u00a0proteger e\u00a0<strong>corrigir<\/strong>\u00a0o algoritmo, mas acima de tudo, para aumentar a dificuldade de\u00a0<strong>implementa\u00e7\u00e3o<\/strong>\u00a0na\u00a0<strong>ASIC.<\/strong>\u00a0\u00a0Desta forma, foi criado um algoritmo cada vez mais\u00a0<strong>amigo da GPU.<\/strong><\/p>\n<div id=\"image_448527447\" 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 ls-is-cached 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=\"vantagens_e_desvantagens\"><\/span><strong>Vantagens e desvantagens<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Como qualquer sistema inform\u00e1tico, o Ethash tem vantagens e desvantagens que o diferenciam de outros algoritmos. Abaixo veremos o mais not\u00e1vel:<\/p>\n<p><strong>Vantagens:<\/strong><\/p>\n<ul>\n<li><strong>F\u00e1cil de implementar.\u00a0<\/strong>Ethash \u00e9 um algoritmo simples, seguro e acima de tudo pr\u00e1tico.<\/li>\n<li><strong>Velocidade<\/strong>. Ao usar a estrutura DAG na mem\u00f3ria, al\u00e9m da fun\u00e7\u00e3o Keccak e do uso de cache, ethash torna-se um dos algoritmos mais eficientes em termos de produ\u00e7\u00e3o de blocos. Gra\u00e7as a isso, a rede\u00a0<a href=\"https:\/\/www.bitnovo.com\/blog\/que-es-y-como-funciona-ethereum-eth\/\"><strong>Ethereum<\/strong><\/a>\u00a0utiliza um tempo de produ\u00e7\u00e3o de bloco adapt\u00e1vel \u00e0s exig\u00eancias da rede.<\/li>\n<li><strong>Capacidade de verifica\u00e7\u00e3o.\u00a0<\/strong>Uma das vantagens sobre o resto dos algoritmos \u00e9 que com apenas 16 MB de RAM podemos criar um cliente ligeiro que tem a capacidade de verificar transa\u00e7\u00f5es de forma r\u00e1pida e f\u00e1cil. Esse cliente pode realizar o processo de verifica\u00e7\u00e3o em apenas 30 segundos.<\/li>\n<\/ul>\n<p><strong>Desvantagens:<\/strong><\/p>\n<ul>\n<li><strong>Resist\u00eancia ASIC.\u00a0<\/strong>Uma das vantagens do Ethash foi quebrada em 2018 devido ao mineiro criado pela Bitmain que estava a minerar com a Ethash.<\/li>\n<li><strong>Consumo excessivo de mem\u00f3ria.\u00a0<\/strong>Isto dificulta a minera\u00e7\u00e3o em equipamentos com menos capacidade. O seu consumo excessivo prov\u00e9m da sua opera\u00e7\u00e3o altamente dependente de opera\u00e7\u00f5es na RAM que consomem grandes quantidades de largura de banda. Embora seja uma medida de prote\u00e7\u00e3o contra a ASIC, tamb\u00e9m \u00e9 necess\u00e1rio manter um correto funcionamento do sistema. Gra\u00e7as \u00e0 cache, uma minera\u00e7\u00e3o mais eficiente pode ser realizada usando o espa\u00e7o para a realiza\u00e7\u00e3o de c\u00e1lculos.<\/li>\n<li>A\u00a0<strong>dificuldade<\/strong>\u00a0deste algoritmo \u00e9 t\u00e3o\u00a0<strong>escal\u00e1vel<\/strong>\u00a0que causa uma elevada dificuldade mineira para os mineiros da rede Ethereum, arriscando assim a seguran\u00e7a da sua<\/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>Em qualquer conversa sobre o Ethereum, deves ter ouvido falar do Ethash. Este \u00e9 o\u00a0algoritmo\u00a0que torna o Ethereum\u00a0poss\u00edvel.\u00a0Este algoritmo faz uso de t\u00e9cnicas de computador muito avan\u00e7adas que aumentam o n\u00edvel de seguran\u00e7a na rede. Outra forma de chamar este algoritmo \u00e9 pelo nome de\u00a0Ethash-Dagger-Hashimoto.\u00a0\u00a0Este foi o nome que adotou quando foi criado, no entanto [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":12530,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[266],"tags":[],"class_list":["post-12508","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain-pt"],"_links":{"self":[{"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/posts\/12508","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/comments?post=12508"}],"version-history":[{"count":0,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/posts\/12508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/media\/12530"}],"wp:attachment":[{"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/media?parent=12508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/categories?post=12508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bitnovo.com\/blog\/wp-json\/wp\/v2\/tags?post=12508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}