Questo sistema può essere molto utile per dimostrare di essere gli originali ideatori di qualcosa, o mantenere una rilevanza storica.
Per capire meglio quando possa essere veramente importante questa funzionalità, consiglio la visione di questo video.
Bitcoin 101 - A Million Killer Apps - Part 2 - Blockchains & A Global Shared Historyhttps://www.youtube.com/watch?v=Uci0Df7zO8cQuesta è la nuova versione della
vecchia guida.
L'idea proviene dal progetto
Bitproof.io.
Quanto è spiegato sotto è un modo
manuale per ottenere circa lo stesso risultato.
Per chi volesse un metodo facile, veloce e userfriendly, consiglio appunto di affidarsi al servizio originale:
Bitproof.ioMa anche
http://www.proofofexistence.com (immissione di solo hash non firmato) - Sorgente:
https://github.com/maraoz/proofofexistencePerchè la vecchia guida non va bene? Perchè non si usa anche il semplice brainwallet invece dell'OP_RETURN?La giusta risposta dell'autore di Bitproof
Using a hash as a private key is not as efficient as using OP_RETURN because it will require more transactions. You'll have to send some coins to the derived public key to prove existence of the hash, then you'll eventually want to transfer the coins back (2 transactions = takes more space).
Using a hash as a public key will just "burn" the coins (which is bad - increases deflation).
OP_RETURN has been created for the purpose of storing data in the blockchain, the inputs become fees and are given to the miners (no money is lost).
- Usare l'hash come chiave privata non è efficiente quanto usare l'OP_RETURN, perchè richiederebbe più transazioni. Per dimostrare l'esistenza dell'hash servirebbe inviare dei bitcoin all'indirizzo generato, e fare un ulteriore transazione per riprenderseli. (più spazio sulla Blockchain)
- Usare l'hash come chiave pubblica porterebbe a perdere i bitcoin. (non avendo la chiave privata corrispondente)
- L'OP_RETURN è creato apposta con l'idea di memorizzare dati sulla Blockchain. I bitcoin inviati diventano fee che vengono inviati ai minatori. Nessun bitcoin va perso.
Da aggiungere poi che l'OP_RETURN potrà essere facilmente "ignorato", tramite il "pruning", rendendo più facile avere dei nodi più leggeri in fatto di spazio da occupare.
Inizio:1) Prendere un file / testo / musica / immagine / frase
2) Calcolare il suo sha256:
-
http://hash.online-convert.com/sha256-generator-
http://www.slavasoft.com/hashcalc/Ne trovate tanti altri su Google di software/servizi per calcolarlo.
3) Prendere l'hash in esadecimale e firmarlo con la propria chiave privata di indirizzo Bitcoin. (prendete solo la stringa esadecimale come risultato)
- Electrum
- Bitcoin Core
-
https://brainwallet.github.io (sign/verify) - Sorgente:
https://github.com/brainwallet/brainwallet.github.ioAl posto della chiave privata di indirizzo Bitcoin va bene anche da una coppia di chiavi ECDSA presa ad esempio da qua:
http://kjur.github.io/jsrsasign/sample-ecdsa.html - Sorgente:
https://github.com/kjur/jsrsasign4) Prendere poi "la firma" e calcolare il suo sha256:
In sostanza avrete fatto questo:
sha256(firma(sha256(file)))
5) Mettere quest'ultimo in un OP_RETURN.
E' possibile farlo da qui (Advanced Options):
https://coinb.in/#newTransaction - Sorgente:
https://github.com/OutCast3k/coinbin/Potete inviare anche zero bitcoin nella transazione con l'OP_RETURN e i bitcoin altrove, verso altri indirizzi.
Se qualcuno vuole la dimostrazione che possedevate quel file in un dato momento, dovrete mostrare:- La transazione con l'OP_RETURN (il timestamp)
- L'indirizzo Bitcoin / Chiave pubblica
- La relativa firma (il cui hash è presente nell'OP_RETURN - Punto 4)
- L'hash del file
Se anche il file è stato dato a qualcuno, ma non è di pubblico dominio, chi eventualmente avrà quel file (anche trovato per caso) potrà comunque verificare la corrispondenza.
Con la chiave privata potrete quindi anche firmare eventuali aggiornamenti del file, magari se si tratta di un contratto o un passaggio di proprietà del file.
Se avete suggerimenti su come indicare meglio alcune cose in questa guida, o proprio a suggerimenti su altri usi, scrivete pure