RandomX è il nome del nuovo algoritmo di mining per Monero, la valuta per la privacy e il cui obiettivo è mantenere la rete protetta dal mining ASIC, consentendo solo il mining per CPU e allo stesso tempo fornendo un'enorme sicurezza al suo protocollo e blockchain .
EL'algoritmo di mining RandomX, è un algoritmo di Prova di lavoro (PoW) che è stato progettato per sostituire il noto CryptoNight privacy delle criptovalute Monero (XMR).
Come il suo predecessore, RandomX è stato progettato per essere sicuro e per essere il nuovo algoritmo predefinito di Monero. Offre un alto livello di crittografiae si concentra su sistemi che tengono conto della privacy e dell'anonimato. Ma soprattutto, pensato per essere resistente al mining di ASIC. Quest'ultima, una capacità che CryptoNight aveva perso tempo fa, e che ha tenuto a galla con diversi aggiornamenti. Tuttavia, il team di Monero ha preso la decisione di creare un nuovo algoritmo da zero. Un algoritmo che prenderà il meglio da CryptoNight e creerà così una nuova base mineraria per Monero.
Il risultato? Un algoritmo di mining come mai visto prima e con una resistenza molto promettente all'ASIC. Ciò oltre a un miglioramento della capacità di mining di CPU, che ha nuovamente portato la moneta a una migliore decentralizzazione del mining.
Ma RandomX è molto di più, è un algoritmo collaudato e verificato con un enorme potenziale di crescita. È per questi motivi che dedicheremo uno spazio all'analisi di RandomX e di tutte le novità che porta al mondo crypto, e di come Monero ne abbia tratto beneficio.
Corso introduttivo alla DeFi
Livello medioÈ ora di aggiornare. La finanza tradizionale è cambiata, scopri il rivoluzionario ecosistema della finanza decentralizzata (DeFi).
Origine di RandomX
Come abbiamo indicato, RandomX nasce dall'esigenza del progetto Monero (XMR) di avere un nuovo algoritmo di mining in grado di resistere all'avanzata degli ASIC.
Ricordiamolo nel 2018, le aziende Baikal y Bitmain avevano annunciato i primi ASIC per CryptoNight, rompendo la resistenza che l'algoritmo era stato per diversi anni. Un bel risultato per entrambe le società, soprattutto considerando che CryptoNight era un algoritmo piuttosto complesso. In realtà, questo è stato progettato per evitare il mining ASIC dall'inizio.
Tuttavia, il risultato delle società non è stato ben accolto dalla comunità di Monero e da altre comunità blockchain che utilizzano l'algoritmo CryptoNight. E soprattutto, perché Monero è una criptovaluta in cui i minatori ASIC non sono ben accolti.
Il monopolio della produzione degli ASIC e l'accesso ad essi da parte di entità con ingenti somme di denaro non lasciano alcuna opportunità alle persone normali di beneficiare del processo di mining, lasciando tutto centralizzato in poche mani. Qualcosa che a sua volta rappresenta un unico punto di fallimento per l'intera moneta.
In Monero il mining, in generale, era stato effettuato da CPU e GPU, quindi gli ASIC rappresentavano un serio rischio di centralizzazione e sicurezza, a causa della possibilità di un 51% di attacco.
Per alleviare la situazione, Monero ha iniziato a sviluppare nuove varianti di CryptoNight che hanno avuto un impatto negativo sulle prestazioni degli ASIC. Alcuni aggiornamenti hanno avuto una buona portata, ma gli ASIC hanno ancora resistito. A questo punto era ovvio e quello che stava succedendo, CryptoNight era insufficiente ed era necessario un nuovo algoritmo.
Questo ha dato vita a Monero Classic, alimentato da minatori che volevano l'algoritmo minabile ASIC. Tuttavia, questo tentativo è stato accolto a malapena.
Anche così, hanno continuato a migliorare gli ASIC per Monero e il 31 ottobre 2018 è iniziato lo sviluppo di RandomX. Questo nuovo algoritmo rappresenterebbe, secondo gli sviluppatori Monero, un cambiamento radicale negli algoritmi di mining. Il lavoro è stato ripagato il 5 maggio 2019, quando il prima versione RandomX è stato rilasciato.
L'algoritmo RandomX è stato sviluppato per Monero dagli sviluppatori tevatore, ciao, vielmetti, antan y Schernykh ed è stato attivato con successo sulla rete Monero il 30 novembre 2019.
Come funziona RandomX?
L'operazione approssimativa di RandomX è scritta nel suo nome: la casualità è la sua premessa principale. Ma cosa significa questo? Ebbene, significa che RandomX è progettato per creare una “zona di lavoro” o scratchpad completamente casuale, con un elevato consumo di memoria, e che utilizza tecniche avanzate di virtualizzazione per il suo funzionamento. Questi tre pilastri sono ciò che consente a RandomX di resistere agli ASIC.
In effetti, RandomX non è solo resistente agli ASIC, ma anche alla GPU, poiché questi chip mancano delle istruzioni necessarie per eseguire le complicate operazioni RandomX in primo luogo. Di conseguenza, RandomX cerca di essere un algoritmo di mining solo per CPU, offrendo la massima resistenza possibile ad altri tipi di mining. D'altra parte, questo è anche mirato ad evitare le cosiddette botnet molto famose in Monero, poiché RandomX le renderà quasi impossibili da implementare. Soprattutto nei dispositivi a basso consumo, come Smart TV o dispositivi IoT (Internet of Things o Internet of Things).
Ma come fa RandomX a rendere possibile tutto questo? Bene, diamo un'occhiata più da vicino a questo nuovo algoritmo.
Due tipologie di mining, per due differenti utilizzi
Prima di tutto, RandomX ha due modalità di mining. Ognuno di loro con esigenze e prestazioni molto diverse. La modalità più potente e impegnativa in termini di risorse è la modalità rapida, che richiede almeno 2 GB di memoria. Ma anche se il sistema operativo supporta NUMA (accesso non uniforme alla memoria), Pagine enormi (paginazione della memoria in grandi blocchi), processori high-core e almeno 2 GB di RAM per core del processore, le prestazioni finali di RandomX migliorano sostanzialmente. Questo perché tutta questa memoria viene utilizzata per creare lo scratchpad casuale di RandomX.
In secondo luogo, abbiamo la modalità Lightweight, una modalità che richiede solo 256 MB di RAM ed è stata progettata per essere utilizzata nei nodi di convalida di Monero. Le prestazioni di mining in questa modalità sono limitate ed è fino a 6 volte inferiore rispetto alla modalità Fast, quindi i profitti per mining sarebbero piuttosto scarsi utilizzando questa modalità.
A questo punto abbiamo una prima barriera contro gli ASIC. Sebbene sia vero che gli ASIC ora possono avere grandi quantità di RAM (come Ethereum che di solito ha tra 4 e 8 GB di RAM), questo rende questi computer piuttosto costosi.
In secondo luogo, dato l'elevato consumo di potenza di calcolo, se un computer viene infettato da un file cryptojacking Per estrarre Monero, sarà facilmente identificabile dall'utente. Qualcosa che riduce notevolmente le possibilità di successo di una botnet.
Crittografia utilizzata
Se il progetto Monero (XMR) ci ha abituati a qualcosa, è l'uso della crittografia avanzata nei suoi sviluppi. In questo caso, RandomX non è l'eccezione alla regola, ma il pieno rispetto di essa. In RandomX fanno un uso massiccio delle funzioni hash Blake2b, del generatore di password Argon2d e della crittografia simmetrica AES. Di conseguenza, la qualità crittografica di RandomX è eccezionale.
Tuttavia, in Monero non si sono accontentati del loro lavoro da soli e hanno deciso di eseguire controlli formali di sicurezza crittografica e di implementazione sull'algoritmo RandomX. In totale sono quattro gli audit effettuati dalle società Trail of Bits, X41 D-SEC, Kudelski Security y QuarksLab, tutti gestiti da OSTIF, un'organizzazione con una lunga storia nella sicurezza informatica e nella crittografia.
Tutti gli audit sono già stati effettuati ei risultati sono promettenti. Se vuoi saperne di più su questo punto, ti invitiamo a rivedere i risultati in questo link.
Il tuo schema Proof of Work
Lo schema RandomX Proof of Work (PoW) è il seguente:
Innanzitutto, viene generata una chiave (chiamata chiave K) che viene selezionata per essere l'hash di un blocco nella blockchain. Questo blocco è chiamato "blocchetto chiave". Per prestazioni ottimali di estrazione e verifica, la chiave dovrebbe cambiare ogni 2048 blocchi (circa 2,8 giorni) e ci dovrebbe essere un ritardo di 64 blocchi (circa 2 ore) tra il blocco della chiave e il cambio della chiave K Ciò può essere ottenuto modificando la chiave quando quanto segue è vero blockHeight% 2048 == 64 (dove% è il modulo della divisione) e selezionando il blocco chiave in modo tale che keyBlockHeight% 2048 == 0.
A quel punto, l'input H è il blob hash standard con un valore nonce selezionato.
Sebbene tutto ciò sembri un po 'criptico, ciò che l'algoritmo RandomX vuole dirci è che la sua prova di lavoro funziona sotto due importanti premesse:
- Hai bisogno di una chiave (chiamata K) che deve cambiare ogni 2048 blocchi. Questa chiave è vitale per RandomX per poter generare hash e blocchi validi per la rete.
- La chiave viene generata con i dati della blockchain e, infine, con un sistema di generazione di chiavi sicuro.
D'altra parte, l'algoritmo rende anche le cose un po 'più complesse, richiedendo condizioni di esecuzione specifiche. Tra queste condizioni possiamo includere:
- Architettura della CPU a 64 bit, che consente di gestire grandi volumi di dati e memoria.
- Un'unità FPU (Floating Point Unit) conforme a IEEE 754. Se l'unità non è conforme, i dati generati dall'algoritmo non possono essere convalidati.
- Supporto per AES. Se il supporto è tramite hardware con estensioni come AES-NI, le prestazioni dell'algoritmo sono molto migliori.
- Molta memoria cache per ogni thread dell'algoritmo. Almeno 16 KB di L1, 256 KB di cache L2 e 2 MiB di L3.
- Un sistema operativo con supporto per la gestione di pagine di memoria di grandi dimensioni. Ricorda che RandomX utilizza almeno 2 GB di RAM e la richiesta potrebbe aumentare a seconda della configurazione.
La macchina virtuale RandomX
La funzionalità che è forse la più resistente agli ASIC, e in effetti è una caratteristica unica di questo algoritmo, è la sua macchina virtuale o VM (Virtual Machine).
RandomX fa tutto il suo lavoro di crittografia e mining all'interno di una semplice macchina virtuale il cui scopo è; isolando l'intero processo di mining in una serie di processi che agiscono secondo le proprie istruzioni e l'architettura virtualizzata.
Questo cerca di aumentare la complessità dell'implementazione di una soluzione ASIC a livelli mai visti prima. Allo stesso tempo, l'implementazione della CPU è semplificata e può essere adattata in base alle esigenze future. Questa macchina virtuale può eseguire le sue diverse attività grazie a una serie di istruzioni personalizzate di tipo CISC. Questa funzione consente una comunicazione molto semplice con le CPU che utilizzano una serie di istruzioni dello stesso tipo. A differenza dei chip ASIC, che utilizzano un set di istruzioni simile a RISC, e l'emulazione CISC su RISC è computazionalmente costosa, aggiungendo più complessità a una soluzione ASIC per RandomX.
L'obiettivo di questa macchina virtuale è creare l'ambiente necessario per eseguire la prova di lavoro RandomX. Per ottenere ciò, questa VM crea uno spazio di lavoro casuale (blocco appunti in memoria), altamente crittografato e pieno di entropia (dati casuali che verranno successivamente utilizzati per la prova del lavoro).
Una volta create queste condizioni, la VM riceve le istruzioni per avviare i programmi di mining. Ciascuno di questi programmi viene creato utilizzando i dati casuali dello spazio di lavoro e risulta in un programma unico.
Questo programma applicherà tutti i processi consentiti dalla VM per eseguire il mining, ovvero il programma potrà eseguire solo le istruzioni che la VM consente (256 istruzioni e 20 registri), niente di più. A questo punto, ciò che accade nella VM RandomX è praticamente invisibile al resto del computer, a causa dell'uso della crittografia durante questo processo.
Viene chiamato questo processo di creazione di programmi casuali per eseguire il mining Prova di lavoro dinamica, ed è lo schema che RandomX usa proprio a questo punto. Questo sistema può essere definito come segue:
- Il programma casuale viene generato per primo. È ciò che fa la VM all'avvio dello scratchpad e di tutti gli elementi del programma in un primo ciclo di lavoro.
- Quindi la VM è incaricata di agire da traduttore tra la CPU ei programmi casuali. I programmi casuali possono utilizzare solo istruzioni dalla VM, ma la VM traduce queste azioni in codice macchina comprensibile dalla CPU. In questo modo, la CPU risponde alle azioni e la VM riceve le risposte. Poiché le istruzioni fanno uso della crittografia, l'ottimizzazione è molto costosa.
- Finalmente l'esecuzione del programma, a questo punto la VM permette l'accesso alla CPU e alle sue capacità senza perdere l'associazione con il programma random. Questo punto si verifica in condizioni molto specifiche e speciali già programmate nell'algoritmo RandomX. In effetti, qualsiasi variazione finisce per fornire dati non validi perché questo processo è completamente riproducibile.
Senza dubbio, la RandomX VM è l'elemento più complesso e difficile da replicare, essendo quindi la sua migliore scheda contro gli ASIC.
Pro e contro dell'algoritmo
Vantaggi
- È un algoritmo con un chiaro obiettivo di sicurezza. L'uso di AES, Blake2 e Argon2 rende questo algoritmo molto sicuro.
- Poiché è progettato per CPU e ha strutture resistenti ad ASIC e GPU, questo algoritmo può sfruttare meglio questo hardware. Di conseguenza RandomX offre rendimenti migliori per i minatori della CPU in modo che possano continuare a guadagnare di più per il mining di Monero.
- La resistenza all'ASIC consente alle blockchain che utilizzano RandomX di essere più decentralizzate a livello di mining.
- RandomX è un algoritmo che ha quattro audit formali completi.
Svantaggi
- È complesso. L'utilizzo di una VM e la casualità del processo rendono questo algoritmo molto più complesso da sviluppare ed eseguire il debug.
- L'utilizzo della VM apre la porta ad attacchi laterali che possono essere utilizzati per rompere il sistema e sfruttati per migliorare le prestazioni in determinate condizioni. Tuttavia, l'uso della crittografia negli appunti rende questo punto molto difficile, motivo per cui molti credono che sia impossibile.
- I dispositivi con CPU a 32 bit non possono sfruttare correttamente l'algoritmo.