Monero è una criptovaluta creata da un fork di bytecoin nel 2014 (criptovaluta che aveva introdotto il protocollo cryptonote), come criptovaluta si focalizza particolarmente sulla privacy.
Il fork è avvenuto perche bytecoin aveva fatto un premine dell’80%, e si è quindi cercato di dare un alternativa più onesta all’implementazione del protocollo cryptonote.
Il suo primo nome è stato BitMonero poi il nome è stato cambiato in Monero che in esperanto significa moneta.
Monero e la sua comunità sono focalizzati su:
- Sicurezza (l’utente deve avere la certezza che le transazioni vadano a buon fine e che non ci siano errori od attacchi al network)
- Privacy (come ho detto ad inizio post il focus principale è qui, Monero prende molto seriamente la funzione di privacy)
- Decentralizzazione (punta alla decentralizzazione anche nel lato del mining, rendendo difficile creare Asic e pool enormi)
Monero è tra le migliori Criptovalute per privacy, se non la migliore
(in realtà anche con Bitcoin se si fanno vari procedimenti si può avere una buonissima privacy, quasi pari al livello di Monero)
Come algoritmo di consenso utilizza attualmente il POW, e si basa sul protocollo CryptoNight.
Riesce ad ottenere la privacy del mittente e del destinatario grazie a ring signature, ring confidential transactions (RCT) e stealth addresses.
Rende il mining difficile agli Asic, e la si può minare tramite GPU e CPU.
Alcuni membri del core team di Monero sono conosciuti altri hanno preferito rimanere anonimi.
Infografica
(fonte e all credits to Blockgeeks)
Dettagli tecnici
Data di lancio: 14 Aprile, 2014
Ticker: XMR
Tetto massimo: Inizialmente 18.4 milioni di monete (Dopo di che ci sarà un’inflazione di 0.3 XMR ogni minuto, per bilanciare le monete che via via si perdono.
Algoritmo: Proof of Work (PoW), CryptoNight
Block reward: Dinamico
Block time: 120 secondi
Dimensione del blocco: Dinamico
Difficoltà: si ricalibra ad ogni blocco
Funzione di privacy: L’identità dell’utente è privata, nessuno quindi potrà sapere dove spendi i tuoi soldi, e quanti soldi hai.
Resistente agli ASIC : In realtà non è proprio “Asic resistant”, ma il costo di creare un Asic per Monero sarebbe troppo alto e non ne varrebbe la pena. Perchè? perchè appena una società di hardware mining se ne esce con un Asic che riesce a minare Monero, Monero aggiorna il protocollo e rende inutili gli hardware dedicati al mining di Monero. Da qui sono nati molti fork di monero, alcuni hanno lo scopo di rendere invece possibile minare Monero con gli Asic.
Chiavi multiple
Monero ha chiavi multiple.
In Ethereum hai una chiave pubblica e una chiave privata. Monero non funziona cosi.
In Monero ci sono le view Keys e le spend keys
View Keys; monero ha una public view key e una private view key
- la Chiave pubblica view serve per generare indirizzi stealth pubblici one-time insieme alla public spend key, dove il destinatario riceverà i fondi (fa parte dell indirizzo monero, insieme alla chiave pubblica di spesa)
- la Chiave privata view serve a chi riceve per fare uno scan della blockchain e trovare i fondi che gli sono stati inviati
Spend keys: sono per il mittente, anche qui c’è una public spend key e una private spend key.
- la chiave pubblica di spesa, permettono al mittente di prendere parte al ring transaction, e permettono di verificare la firma della Key image.
- la chiave privata di spesa, permette di firmare la key image, quest’ultima permette al destinatario di inviare la transazione (cioè di utilizzare i fondi ricevuti).
come funziona la privacy di monero
La privacy di monero viene garantita:
- per il mittente da ring signature
- per il destinatario da stealth addresses
- l’ammontare della transazione da ring confidential transaction
- l’ip degli utenti da Kovri
vediamo quindi una ad una come funzionano
Ring Signatures
Monero mantiene la privacy del mittente (di chi invia i fondi), grazie all’utilizzo delle firme ad anello.
L’immagine sotto rispecchia come funziona attualmente una transazione in bitcoin (pseudo anonima)
Se alice manda una transazione, deve avere la chiave pubblica per verificarla e chiave privata per firmarla.
Le transazioni in Bitcoin sono assolutamente trasparenti e pseudo anonime, le puoi controllare da un normale block explorer. Si potrebbe risalire al proprietario di una determinata chiave privata.
N.B. Onchain su bitcoin la privacy non vi è di default, non è obbligata come per Monero, ma è solo opzionale si potrebbe ad esempio mixare le monete con Zerolink (samurai wallet, wasabi wallet, bob wallet) o avere uno stealth address con un wallet come samurai wallet. Ma la privacy al momento resta opzionale. Inoltre con zerolink non viene nascosto l ammontare della transazione.
Con Monero questo non avviene
Ring signature (nell’immagine sopra) è una firma digitale dove ci sono più firmatari della transazione (e dove nessuno conosce chi è il vero firmatario, il vero firmatario resta ignoto)
ci sono più firmatari anche chiamati Decoy (funzionano come esche), più decoy ci sono (dimensione di anello) e più si ha difficoltà a risalire all’identità del vero firmatario.
E’ bene avere più decoy possibili per rendere private e sicuro il network di Monero ma più aumenti i decoy e piu ne risenti in termini di scalabilità.
Questo problema di peso si cercherà di limitarlo grazie a Bulletproofs che diminuirà il peso delle transazioni dell 80%.
il vero mittente genera una chiave di spesa monouso associata ad un output che viene speso solo dal portafoglio del mittente ( il destinatario è l’unico che può individuare e spendere i fondi su quella chiave.)
i decoy sono output di transazioni precedenti estratti dalla blockchain e funzionano come esche.
Questi output (dei firmatari) combinati insieme vanno a formare gli input di una transazione. Ad un osservatore esterno tutti gli input appaiono in egual misura equivalenti all’output che viene speso nella transazione. Questa funzionalità aiuta il mittente a nascondere l’origine della transazione, rendendo tutti gli input indistinguibili fra di loro.
protezione di double spending: se un osservatore esterno non ha la possibilità di verificare quale output viene speso chi mi assicura che qualcuno non possa spendere lo stesso output due volte? Questo problema viene risolto mediante l’uso delle key images. Una key images è una chiave crittografica derivata da un output che viene speso e viene inclusa in ogni transazione basata su firme ad anello. Può esistere solamente un immagine della chiave per ogni output sulla blockchain, e grazie alle sua proprietà crittografiche, non è possibile determinare quale output abbia generato una determinata immagine della chiave. All’interno della blockchain viene mantenuta una lista di tutte le immagini delle chiavi utilizzate, dando la possibilità ai minatori di verificare che nessun output venga speso due volte.
Stealth addresses
uno stealth address è conosciuto anche come una chiave pubblica monouso e previene la possibilità che la transazione sia ricollegata al wallet di un utente.
quindi se qualcuno ti invia 1000 XRM nessuno lo saprà, solo chi invia il denaro sa che te li ha inviati
un indirizzo di portafoglio monero è una stringa di 95 caratteri che consta di una chiave pubblica di visualizzazione e una chiave pubblica di spesa
il portafoglio del mittente con la public view key e la public spend key del destinatario insieme ad alcuni dati casuali, genera una public key monouso.
chiunque può vedere la chiave pubblica monouso sulla blockchain, ma solo mittente e destinatario sanno che il mittente ha inviato monero al destinatario
il mittente invia i fondi su questo indirizzo stealth
il destinatario con la sua chiave privata di visualizzazione può trovare traccia della transazione nella blockchain, e con questa chiave genera una chiave privata di spesa monouso corrisposta alla public key monouso e può spendere i monero con la chiave privata di spesa.
Ring Confidential Transactions (RCT)
Attivato a gennaio 2017, Con RCT il mittente può rivelare ai miners solo le informazioni che servono a confermare la transazione, senza far perdere la funzionalità di privacy.
Ring confidential transaction garantisce la privacy dell’ammontare della transazione in questione.
i nuovi monero che vengono minati inizialmente sono in outputs con ammontare visibile, ma dopo un primo trasferimento l’ammontare non è più visibile. Precedentemente monero doveva splittare gli output in più denominazioni e metterle in firme ad anelli diverse (ma l ammontare era visibile a tutti) ora non deve più utilizzare più denominazioni.
se A possiede 12.56 monero e ne vuole inviare 2.5 a B, A deve spendere l ‘itero output e farsi tornare il saldo in avanzo in una sua chiave.
quindi ci sarà un input di transazione di 12.56 monero e due outputs 2.5 monero per B e 10.06 che tornano ad A. Gli Imput devono essere = agli output. Anche se un osservatore esterno non è in grado di vedere gli output di una transazione, i miners riescono con poche informazioni a confermare lo stesso la transazione.
Kovri
kovri aiuta a nascondere indirizzo IP e ubicazione geografica degli utenti Monero.
Il network di monero è fatto da nodi che comunicano tra loro scambiandosi messaggi da indirizzi IP, tecnicamente è possibile risalire all’identità del soggetto che invia la transazione tramite il suo IP ed il tragitto delle informazioni dagli indirizzi IP, da un punto A (chi manda la transazione) al punto B (chi riceve la transazione) ripercorrendo tutti gli scambi avvenuti tra i vari IP. Questo pericolo c’è anche se si utilizzano ring signature RCT e stealth address, perchè è un pericolo connesso al IP.
Una persona o una società con grandi risorse potrebbe provare ad associare la transazione all’indirizzo IP risalendo al posto dove è stata mandata la transazione, magari risalendo poi all’identità di chi ha inviato i fondi.
Società potrebbero sconsigliare o rendere impossibile avere un nodo Monero tramite il loro indirizzo ip.
Le persone quando inviano transazioni hanno l ‘ip esposto in rete, potrebbero provare a nasconderlo tramite VPN (ma tecnicamente è possibile risalire al ip) oppure possono utilizzare TOR o Kovri.
Kovri non è basato su tor ma su I2p Invisible Internet Project, è un software libero e Open Source per la realizzazione di una rete anonima.