Ethash est un algorithme de minage dédié au Proof-of-Work du réseau Ethereum. Il s’agit d’un programme informatique complexe permettant de sécuriser le réseau et rendre le processus de minage plus équitable entre les différents mineurs.
Présentation de Ethash
Conçu pour être accessible au plus grand nombre de mineurs, l’algorithme Ethash a été pensé pour une prise en main facile, qui ne nécessite pas de matériel informatique rare ou coûteux. Il peut fonctionner avec des composants courants tels que des cartes graphiques (GPU) ou des processeurs (CPU), qui restent accessible à un mineur lambda qui souhaitent participer à la sécurisation du réseau.
De cette façon, l’algorithme permet d’éviter que la validation des transactions Ethereum soit réservée à une minorité d’élus possédant un matériel spécialisé dans le minage de cryptomonnaies spécifiques, ce qui poserait un problème de centralisation.
Lire plus : Qu’est-ce que le minage ?
Origines : l’algorithme Dagger-Hashimoto
Ethash est basé sur un double-algorithme appelé Dagger-Hashimoto. Pensé par Vitalik Buterin et Thaddeus Dryja entre 2013 et 2014, celui-ci repose sur deux principes fondamentaux :
- Il doit être résistant aux ASIC
- Il doit être accessible aux mineurs modestes
Les ASIC (Application-Specific Integrated Circuit) sont des circuits intégrés spécifiques à une certaine application. A l’opposé des cartes graphiques ou des processeurs utilisés dans nos ordinateurs, qui peuvent répondre à des besoins très variés, les ASIC sont spécialisés dans la réalisation de certaines tâches.
Dans le contexte de la blockchain, il existe des ASIC dédiés au minage de certaines cryptomonnaies. Ces circuits intégrés sont donc optimisés pour résoudre les problèmes mathématiques nécessaire à l’extraction minière des ethers ou autre crypto-actifs. Les mineurs n’ayant pas la possibilité de se procurer ce genre de matériel sont donc fortement désavantagés. C’est à ce manque d’équité qu’ont tenté de répondre les deux informaticiens.
La première partie de l’algorithme, Dagger, est développée par Buterin. Elle est dédiée à la construction d’une structure de donnée évolutive et massive, reposant sur les graphes cycliques dirigés (DAG). Le DAG est un concept informatique permettant de créer des données structurelles sans boucle, avec une direction claire concernant la façon dont sont organisées ces données.
C’est cette structure qui permet ensuite à la seconde partie de l’algorithme, réalisée cette fois-ci par Dryja, de réaliser le minage. Hashimoto a été créé de sorte à nécessiter une consommation élevée en RAM (mémoire vive), ce qui pénalise fortement les ASIC.
Cette première version de l’algorithme a permis d’avoir un processus de minage complexe qui met en difficulté les ASIC, permettant aux mineurs légers d’être compétitifs par rapport à des acteurs possédants plus de moyens.
Fonctionnement de Ethash
L’algorithme Ethash, amélioré par les équipes d’Ethereum, reprend les piliers fondamentaux de l’algorithme Dagger-Hashimoto mais apporte des innovations importantes. Les différents défauts et vulnérabilités ont été corrigées. L’algorithme a également été optimisé pour la résolution de calculs par les GPU tels que ceux utilisés dans les jeux vidéo, et renforcer la résistance aux ASIC.
Son fonctionnement est le suivant :
- Utilisation d’une structure de donnée (« dataset ») et d’une valeur aléatoire appelée « seed ». Alors que la structure de donnée est permanente et s’agrandit au fil du temps, la seed est créée à chaque nouveau bloc de validation.
- Assemblage du numéro de bloc courant et de la seed pour créer un « mix hash », qui sert à déterminer les différents emplacements de la structure qui seront utilisés lors du minage.
- Minage selon le principe de « Keccak », un algorithme de hashage nécessitant des calculs mathématiques poussés qui génèrent de nouvelles données pour le dataset.
- Hashage final : les données générées sont ensuite traitées par un algorithme de réduction complexe pour créer un « mix hash final ». Afin que le bloc soit validé, ce hash final doit correspondre à une ciblé prédéterminée. C’est ce processus de génération du hash final qui est très couteux en mémoire RAM, ce qui rend l’algorithme adapté au GPU et non aux ASIC.
Lire plus : Proof of Work VS Proof of Stake : quelle différence ?
Conclusion
Ethash permet de favoriser la décentralisation du processus de minage grâce à une succession d’algorithmes complexes qui facilitent la résolution de problèmes par des composants informatiques usuels. En plus d’assurer une meilleure équité dans le choix des mineurs, il est très sécurisé grâce à son dataset.
Cependant, cet algorithme présente des limites. Par exemple, certains validateurs sont parvenus à contourner la résistance aux ASICS en développant des circuits intégrés qui sont justement optimisés pour Ethash. Par ailleurs, sa forte consommation en ressource mémoire peut également rendre difficile l’accès au minage pour les mineurs plus modestes.
Enfin, le passage du Proof-of-Work au Proof-of-Stake associée à la grande mise à jour vers Ethereum 2.0 rend caduque l’utilisation de cet algorithme de minage dans le cas d’Ethereum. Il n’en reste pas moins utilisé sur d’autres cryptomonnaies fonctionnant selon le principe du Proof-of-Work, qui apprécient sa rapidité de mise en œuvre et sa résistance aux ASIC.