Come fare una marca temporale sulla blockchain Monero senza intermediari

Si sente parlare sempre più spesso di firma digitale elettronica, SPID, voto elettronico, tuttavia lo scetticismo rimane e non solo per gli "addetti ai lavori". Uno dei motivi è evidente: chi controlla i server ha troppo potere, è come giocare a carte con un computer senza avere il codice sorgente.. ok il computer ha vinto, ma chi mi garantisce che abbia giocato rispettando le regole e senza guardarmi le carte?

In questo post vedremo come utilizzare la blockchain Monero per lasciare una nostra traccia pubblica, con marca temporale evidente e anonima. Che può servire come base di un eventuale sistema di voto online, registro notarile e molte altre applicazioni, il tutto open source, decentralizzato e provabile in modo pubblico!

In breve:

  • Blockchain: registro pubblico dove vengono registrate le transazioni. Alla base della criptovaluta Bitcoin, ma anche di altre criptomonete come Ethereum e Monero.

  • Indirizzo / Wallet: una sorta di conto corrente IBAN dove ricevere e inviare pagamenti digitali

  • Payment ID: una sorta di causale del versamento (opzionale) per identificare meglio la provenienza del pagamento. Codificata in esadecimale (HEX) e che può essere lunga 16 o 64 caratteri.

  • Monero (XMR): Criptovaluta, concentrata su sicurezza, riservatezza e non tracciabilità. Si differenzia dal Bitcoin in quanto vengono registrati sulla blockchain solo indirizzi temporanei, non è possibile sapere quanti fondi si hanno sul proprio wallet e utilizza l'algoritmo CryptoNote/CryptoNight.

Dunque procediamo a lasciare la nostra traccia pubblica, anonima, permanente e marcata temporalmente nella blockchain!

Passo 1: Wallet Monero

La via più immediata è tramite il Web Wallet Monero: MyMonero. Per generare il wallet non serve l'email, basta generarne uno e ricordarsi la Private Login Key, che è una serie di parole che identifica e sblocca il nostro "conto".

Una volta che si ha accesso ci si può inviare dei fondi convertendoli da Bitcoin tramite ShapeShift, minando Monero, oppure acquistandoli da un exchange che li supporta (es. Poloniex).

Passo 2: Preparazione del messaggio

Il messaggio che verrà inserito nel campo Payment ID può essere lungo fino a 64 caratteri codificati in HEX e può essere utilizzato per rappresentare diverse cose, ad esempio: un hash di un file o documento, un id di prodotto oppure un breve messaggio di testo.

Nel nostro caso utilizzeremo NodeJS, ma potete utilizzare anche dei tool online per convertire del testo UTF8 in HEX.

❯ node
> new Buffer("'è un test https://grigio.org '").toString('hex')
'27c3a820756e20746573742068747470733a2f2f67726967696f2e6f72672027'  

Mi raccomando l'output deve essere lungo 64 caratteri, se sono pochi aggiungere degli spazi, se sono troppi dovete fare più transazioni o trovare altri sistemi.

Passo 3: Invio e verifica della transazione

Fate una transazione verso il vostro stesso indirizzo, l'importo di 0.2 XMR può bastare (~0.08€) e come Payment iD mettete il messaggio.

Nel giro di qualche minuto sarà pubblico nella blockchain e a questo punto verificate:

> console.log(new Buffer("27c3a820756e20746573742068747470733a2f2f67726967696f2e6f72672027", "hex").toString('utf8'))
'è un test https://grigio.org '  

Potete verificarla anche voi pubblicamente.

Conclusione

Abbiamo visto come lasciare la nostra traccia permanente e senza dipendere da enti, autorità, server, certificatori o aziende in particolare.

Dopo la fine dei dischi, della carta per i libri, si sta avvicinando la fine delle banconote e non solo.

corso javascript