Ethereum (ETH) : bientôt résistant aux ASIC grâce à ProgPoW ?
La « ProgPoW »est un algorithme qui permettrait à Ethereum de devenir « ASIC résistant ».
Le ProgPow pour Istanbul
Initialement prévus pour Constantinople, les développeurs ont décidé lors de leur réunion du 15 mars que l’algorithme devrait être implanté sur Ethereum (ETH) lors du déploiement de la mise à jour « Istanbul ».
Les développeurs devront encore réaliser un audit externe sur ce nouvel algorithme.
« Nous avons décidé que la seule question était de savoir s’il y avait des erreurs dans l’algorithme, des backdoors [portes dérobées], ce genre de choses. (…) » Greg Colvin, Core développeur d’Ethereum
Outre l’aspect classique de la solidité du code, un autre développeur a insisté sur l’importance de réaliser une étude sur les impacts que cela aurait sur l’économie d’Ethereum.
« (…) afin de dissuader les gens de construire un ProgPow ASIC (…) il y aurait une analyse de l’architecture ASIC (…) et peut-être une analyse économique de l’impact que ProgPow aurait sur l’économie du protocole Ethereum », Hudson Jameson, Core développeur d’Ethereum
Les 5 innovations apportées par le ProgPoW
- Changement de la taille de la fonction de hachage Keccak, pour une meilleure compatibilité avec l’architecture des cartes graphiques.
- Augmentation du mix state, les ASIC seront ainsi forcés d’utiliser la mémoire vive (RAM) pour travailler avec cette fonctionnalité qui est plus lente.
- Ajout d’une séquence aléatoire de calculs dans la boucle principale, rendant impossible la création d’un schéma fixe (pipeline) typique des ASIC, qui pourrait augmenter la vitesse de travail ou réduire la consommation.
- Ajout de lectures à partir d’un petit cache à faible latence avec prise en charge des adresses aléatoires, qui oblige les ASIC à suivre les règles de hiérarchie de la mémoire des cartes graphiques, limitant d’autant leurs capacités et leurs performances.
- Passer la lecture DRAM de 128 à 256 octets, cette augmentation favorisant les GPU.
Tous ces détails techniques sur ProgPoW sont consultables sur la page de l’EIP 1057 (en anglais).