RandomX est le nom du nouvel algorithme de minage pour Monero, la monnaie de confidentialité et dont l'objectif est de protéger le réseau de l'exploitation minière ASIC, ne permettant que le minage par CPU, tout en fournissant une énorme sécurité à son protocole et à sa blockchain .
EL'algorithme de minage RandomX est un algorithme de Preuve de travail (PoW) qui a été conçu pour remplacer le bien connu CryptoNight confidentialité de la crypto-monnaie Monero (XMR).
Comme son prédécesseur, RandomX a été conçu pour être sécurisé et pour être le nouvel algorithme par défaut de Monero. Il offre un haut niveau de la cryptographie, et se concentre sur les systèmes avec la confidentialité et l'anonymat à l'esprit. Mais surtout, considéré comme résistant à l'exploitation minière par ASIC. Ce dernier, une capacité que CryptoNight avait perdu il y a quelque temps, et qu'il a gardé à flot avec plusieurs mises à jour. Cependant, l'équipe Monero a pris la décision de créer un nouvel algorithme à partir de zéro. Un algorithme qui prendra le meilleur de CryptoNight et créera ainsi une nouvelle base de minage pour Monero.
Le résultat? Un algorithme de minage comme jamais vu auparavant et avec une résistance très prometteuse aux ASIC. Qu'en plus d'une amélioration de la capacité minière pour Processeur, qui a de nouveau conduit la médaille à une meilleure décentralisation de l'exploitation minière.
Mais RandomX est bien plus que cela, c'est un algorithme éprouvé et audité qui a un énorme potentiel de croissance. C'est pour ces raisons que nous consacrerons un espace pour analyser RandomX et toutes les nouvelles choses qu'il apporte au monde de la cryptographie, et comment Monero en a bénéficié.
Cours d'introduction à DeFi
MoyenneIl est temps de mettre à jour. La finance traditionnelle a changé, découvrez l'écosystème révolutionnaire de la finance décentralisée (DeFi).
Origine de RandomX
Comme nous l'avons indiqué, RandomX est né de la nécessité du projet Monero (XMR) de disposer d'un nouvel algorithme de minage capable de résister à l'avancée des ASIC.
Rappelons-nous qu'en 2018, les entreprises Baïkal y Bitmain ils avaient annoncé les premiers ASIC pour CryptoNight, brisant la résistance que cet algorithme posait depuis plusieurs années. Tout un exploit pour les deux sociétés, d'autant plus que CryptoNight était un algorithme assez complexe. En fait, cela a été conçu pour éviter le minage ASIC dès le début.
Cependant, la réussite des entreprises n'a pas été bien accueillie par la communauté Monero et d'autres communautés de blockchain utilisant l'algorithme CryptoNight. Et surtout, parce que Monero est une crypto-monnaie où les mineurs ASIC ne sont pas bien reçus.
Le monopole de fabrication des ASIC et l'accès à ceux-ci par des entités disposant d'importantes sommes d'argent ne laissent aucune possibilité aux gens normaux de bénéficier du processus d'extraction, laissant tout centralisé entre quelques mains. Quelque chose qui à son tour représente un point de défaillance unique pour la pièce entière.
Dans Monero, l'exploitation minière, en général, avait été réalisée par CPU et GPU, de sorte que les ASIC posaient un risque sérieux de centralisation et de sécurité, en raison de la possibilité d'un 51% d'attaque.
Pour atténuer la situation, Monero a commencé à développer de nouvelles variantes de CryptoNight qui ont eu un impact négatif sur les performances des ASIC. Certaines mises à jour avaient une bonne portée, mais les ASIC ont tout de même tenu le coup. À ce stade, c'était évident et ce qui se passait, CryptoNight était insuffisant et un nouvel algorithme était nécessaire.
Cela a donné naissance à Monero Classic, alimenté par des mineurs qui voulaient l'algorithme exploitable par ASIC. Cependant, cette tentative n'a guère été accueillie.
Malgré tout, ils ont continué à améliorer les ASIC pour Monero et le 31 octobre 2018, le développement de RandomX a commencé. Ce nouvel algorithme représenterait, selon les développeurs de Monero, un changement radical des algorithmes de minage. Le travail a porté ses fruits le 5 mai 2019, lorsque le première version RandomX est sorti.
L'algorithme RandomX a été développé pour Monero par les développeurs tevateur, HYC, Vielmetti, Antanst y Schernykh et a été activé avec succès sur le réseau Monero le 30 novembre 2019.
Comment fonctionne RandomX?
Le fonctionnement approximatif de RandomX est écrit dans son nom: le hasard est sa prémisse principale. mais qu'est ce que ça veut dire? Eh bien, cela signifie que RandomX est conçu pour créer une "zone de travail" ou bloc-notes complètement aléatoire, avec une consommation de mémoire élevée, et qu'il utilise des techniques de virtualisation avancées pour son fonctionnement. Ces trois piliers permettent à RandomX d'être résistant aux ASIC.
En fait, RandomX est non seulement résistant aux ASIC, mais également aux GPU, car ces puces ne disposent pas des instructions nécessaires pour effectuer les opérations RandomX compliquées en premier lieu. En conséquence, RandomX cherche à être un algorithme de minage uniquement CPU, offrant la résistance la plus élevée possible aux autres types de minage. D'autre part, cela vise également à éviter les fameux botnets de Monero, car RandomX les rendra presque impossibles à mettre en œuvre. Surtout dans les appareils à faible consommation, tels que les Smart TV ou les appareils IoT (Internet des objets ou Internet des objets).
Mais comment RandomX rend-il tout cela possible? Eh bien, examinons ce nouvel algorithme un peu plus en détail.
Deux types d'exploitation minière, pour deux usages différents
Tout d'abord, RandomX a deux modes de minage. Chacun d'eux avec des exigences et des performances très différentes. Le mode le plus puissant et le plus gourmand en ressources est le mode rapide, qui nécessite au moins 2 Go de mémoire. Mais en plus, si le système d'exploitation prend en charge NUMA (accès mémoire non uniforme), Huge Pages (pagination de la mémoire en gros blocs), processeurs high-core et au moins 2 Go de RAM par cœur de processeur, les performances finales de RandomX s'améliorent considérablement. C'est parce que toute cette mémoire est utilisée pour créer le bloc-notes aléatoire de RandomX.
Deuxièmement, nous avons le mode léger, un mode qui ne nécessite que 256 Mo de RAM et a été conçu pour être utilisé dans les nœuds de validation de Monero. Les performances de minage dans ce mode sont limitées et elles sont jusqu'à 6 fois inférieures au mode Rapide, de sorte que les bénéfices par extraction seraient plutôt maigres en utilisant ce mode.
À ce stade, nous avons une première barrière contre les ASIC. S'il est vrai que les ASIC peuvent désormais avoir de grandes quantités de RAM (comme Ethereum qui ont généralement entre 4 et 8 Go de RAM), cela rend ces ordinateurs assez chers.
Deuxièmement, étant donné la forte consommation de puissance de calcul, si un ordinateur est infecté par un cryptojacking Pour miner Monero, il sera facilement identifié par l'utilisateur. Quelque chose qui réduit considérablement les chances de succès d'un botnet.
Cryptographie utilisée
Si le projet Monero (XMR) nous a habitués à quelque chose, c'est à l'utilisation de la cryptographie avancée dans ses développements. Dans ce cas, RandomX n'est pas l'exception à la règle, mais le respect total de celle-ci. Dans RandomX, ils font un usage intensif des fonctions de hachage Blake2b, du générateur de mots de passe Argon2d et de la cryptographie symétrique AES. En conséquence, la qualité cryptographique de RandomX est exceptionnelle.
Cependant, chez Monero, ils ne se sont pas contentés de leur travail et ont décidé d'exécuter des audits formels de sécurité cryptographique et de mise en œuvre sur l'algorithme RandomX. Au total, quatre audits sont réalisés par les entreprises Sentier des bits, X41 D SEC, Kudelski Security y Laboratoire de quarks, tous gérés par OSTIF, une organisation avec une longue histoire dans la cybersécurité et la cryptographie.
Tous les audits ont déjà été réalisés et leurs résultats sont prometteurs. Si vous souhaitez en savoir un peu plus sur ce point, nous vous invitons à consulter les résultats dans ce lien.
Votre programme de preuve de travail
Le schéma de preuve de travail RandomX (PoW) est le suivant:
Tout d'abord, une clé est générée (appelée clé K) qui est sélectionnée pour être le hachage d'un bloc dans la blockchain. Ce bloc s'appelle "bloc de clé". Pour des performances d'exploitation et de vérification optimales, la clé doit changer tous les 2048 blocs (environ 2,8 jours) et il devrait y avoir un délai de 64 blocs (environ 2 heures) entre le bloc de clé et le changement de clé K. Cela peut être réalisé en changeant la clé lorsque ce qui suit est vrai blockHeight% 2048 == 64 (où% est le module de la division) et en sélectionnant le bloc clé de sorte que keyBlockHeight% 2048 == 0.
À ce stade, l'entrée H est le blob de hachage standard avec une valeur Nonce seleccionado.
Bien que tout cela semble un peu cryptique, ce que signifie l'algorithme RandomX, c'est que sa preuve de travail fonctionne sous deux prémisses importantes:
- Vous avez besoin d'une clé (appelée K) qui doit changer tous les 2048 blocs. Cette clé est vitale pour que RandomX puisse générer des hachages et des blocs valides pour le réseau.
- La clé est générée avec les données de la blockchain et finalement avec un système de génération de clé sécurisé.
D'autre part, l'algorithme rend également les choses un peu plus complexes, en exigeant des conditions d'exécution spécifiques. Parmi ces conditions, nous pouvons inclure:
- Architecture de processeur 64 bits, lui permettant de gérer de gros volumes de données et de mémoire.
- Une unité FPU (Floating Point Unit) conforme IEEE 754. Si l'unité n'est pas conforme, les données générées par l'algorithme ne peuvent pas être validées.
- Prise en charge d'AES. Si le support se fait par du matériel avec des extensions comme AES-NI, les performances de l'algorithme sont bien meilleures.
- Beaucoup de mémoire cache pour chaque thread de l'algorithme. Au moins 16 Ko de L1, 256 Ko de cache L2 et 2 Mio de L3.
- Un système d'exploitation prenant en charge la gestion de grandes pages de mémoire. N'oubliez pas que RandomX utilise au moins 2 Go de RAM et que la demande peut augmenter en fonction de la configuration.
La machine virtuelle RandomX
La fonctionnalité qui est peut-être la plus résistante aux ASIC, et qui est en fait une caractéristique unique de cet algorithme, est sa machine virtuelle ou VM (Virtual Machine).
RandomX fait tout son travail de cryptographie et de minage dans une simple machine virtuelle dont le but est; isoler l'ensemble du processus de minage en une série de processus qui agissent selon leurs propres instructions et leur architecture virtualisée.
Cela vise à augmenter la complexité de la mise en œuvre d'une solution ASIC à des niveaux jamais vus auparavant. Dans le même temps, la mise en œuvre du processeur est simplifiée et peut être ajustée en fonction des besoins futurs. Cette machine virtuelle peut effectuer ses différentes tâches grâce à un ensemble d'instructions personnalisées de type CISC. Cette fonction permet une communication très simple avec les CPU qui utilisent un jeu d'instructions du même type. Contrairement aux puces ASIC, qui utilisent un jeu d'instructions de type RISC, et l'émulation CISC sur RISC est coûteuse en calcul, ajoutant plus de complexité à une solution ASIC pour RandomX.
L'objectif de cette machine virtuelle est de créer l'environnement nécessaire à la réalisation de la preuve de travail RandomX. Pour y parvenir, cette VM crée un espace de travail aléatoire (bloc-notes en mémoire), hautement crypté et plein d'entropie (données aléatoires qui seront par la suite utilisées pour la preuve de travail).
Une fois ces conditions créées, la VM reçoit les instructions pour démarrer les programmes de minage. Chacun de ces programmes est créé à l'aide des données aléatoires de l'espace de travail et aboutit à un programme unique.
Ce programme appliquera tous les processus autorisés par la VM pour effectuer le minage, c'est-à-dire que le programme ne peut exécuter que les instructions autorisées par la VM (256 instructions et 20 registres), rien de plus. À ce stade, ce qui se passe dans la machine virtuelle RandomX est pratiquement invisible pour le reste de l'ordinateur, en raison de l'utilisation de la cryptographie tout au long de ce processus.
Ce processus de création de programmes aléatoires pour effectuer l'extraction est appelé Preuve de travail dynamique, et c'est le schéma que RandomX utilise précisément à ce stade. Ce système peut être défini comme suit:
- Le programme aléatoire est généré en premier. C'est ce que fait la VM lors du démarrage du bloc-notes et de tous les éléments du programme dans un premier cycle de travail.
- Ensuite, la VM est chargée d'agir en tant que traducteur entre le CPU et les programmes aléatoires. Les programmes aléatoires ne peuvent utiliser que les instructions de la machine virtuelle, mais la machine virtuelle traduit ces actions en code machine compréhensible par le processeur. De cette manière, la CPU répond aux actions et la VM reçoit les réponses. Comme les instructions utilisent la cryptographie, l'optimisation est très coûteuse.
- Enfin l'exécution du programme, à ce stade la VM permet d'accéder au CPU et à ses capacités sans perdre l'association avec le programme aléatoire. Ce point se produit dans des conditions très spécifiques et spéciales déjà programmées dans l'algorithme RandomX. En fait, toute variation finit par produire des données invalides car ce processus est complètement reproductible.
Sans aucun doute, la VM RandomX est l'élément le plus complexe et le plus difficile à répliquer, étant ainsi sa meilleure carte contre les ASIC.
Avantages et inconvénients de l'algorithme
Avantages
- C'est un algorithme avec un objectif de sécurité clair. L'utilisation d'AES, Blake2 et Argon2 rend cet algorithme très sécurisé.
- Comme il est conçu pour les processeurs et possède des structures résistantes aux ASIC et GPU, cet algorithme peut mieux exploiter ce matériel. En conséquence, RandomX offre de meilleurs rendements aux mineurs de CPU afin qu'ils puissent continuer à gagner plus pour l'exploitation minière de Monero.
- La résistance à l'ASIC permet aux blockchains utilisant RandomX d'être plus décentralisées au niveau de l'exploitation minière.
- RandomX est un algorithme qui comporte quatre audits formels complets.
Inconvénients
- C'est complexe. L'utilisation d'une machine virtuelle et le caractère aléatoire des processus rendent cet algorithme beaucoup plus complexe à développer et à déboguer.
- L'utilisation de VM ouvre la porte à des attaques latérales qui peuvent être utilisées pour casser le système et exploitées pour améliorer les performances dans certaines conditions. Cependant, l'utilisation de la crypto dans le bloc-notes rend ce point très difficile, c'est pourquoi beaucoup pensent que c'est impossible.
- Les processeurs 32 bits ne peuvent pas exploiter correctement l'algorithme.