Il metodo migliore per risolvere il problema
di firmare
inequivocabilmente di essere se stessi il mandatario di un pagamento in
bitcoin è quello di
usare la propria chiave privata dell'indirizzo
bitcoin per firmare un
messaggio inequivocabile. Vediamo come fare.
Questa domanda è già stata posta qui e il tutto si risolve tramite i programmi bitcoin-core, multibit, electrum, ecc, che permettono di firmare un messaggio. Nelle immagini che seguono tratte da bitcoin-core c'è la soluzione del problema, (fonte), cliccare nell'immagine per ingrandire. Di seguito mi dilungo in spiegazioni compreso forse il non chiaro "a cosa serve firmare i bitcoin che si sono inviati?".
Firmare i bitcoin inviati come pagamento
Nella prima immagine "firma il messaggio", si usa il proprio indirizzo bitcoin (che si possiede) e quindi nella prima riga dell'immagine apparirà qualche cosa del tipo:
Verificare che il cliente ha pagato
A questo punto saltiamo sul carro del commerciante e ci mettiamo nei suoi panni. L'email con il testo quotato qui sopra si può mettere in un tool di verifica di firma on line presente a questo indirizzo web o quest'altro in uno di nostra fiducia (vanno tutti bene purché si tratti di verifica di firma dei bitcoin).
Il tool on line mostrerà l'informazione "Message verified to be from 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN" ovvero che il messaggio "Ti ho inviato..." proviene dal proprietario dell'indirizzo bitcoin 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN.
La seconda immagine etichettata con "Verify/Verifica" mostra come verificare il messaggio e opera nello stesso modo del tool on line. Analogamente si opera con Multibit dove però la firma è differente come si può vedere da questo esempio:
Si è visto che i tre testi quotati: l'indirizzo bitcoin, il messaggio, la firma, costituiscono un unicum inscindibile che da come risultato "Message verified", da cui chiunque capisce che Sandro kensan è proprietario dell'indirizzo suddetto e ha spedito 1.1 bitcoin come elencato da blockchain. In pratica il cliente Sandro kensan ha pagato il commerciante e il commerciante lo può verificare.
Il fatto che sia messo il nome Sandro kensan non indica che il nome è autentico ma va inteso che quel nome è sicuramente quello del pagatore perché l'interesse di chi ha scritto e firmato quel messaggio è quello di mettere il proprio nome e non un nome falso o di un'altra persona. Quindi si tratta di una deduzione. Per fare un esempio se debbo pagare un debito in bitcoin a un commerciante ho l'interesse a indicare il mio nome e non un altro nome, così da saldare il conto.
Per chi sapesse poco dei bitcoin con blockchain.info intendo uno dei servizi on line che fanno vedere le transazioni fatte da un indirizzo bitcoin a un altro. Questa è una informazione pubblica e non alterabile, mostra il passaggio di mano dal nostro indirizzo a quello del destinatario, quindi il pagamento.
Concludo con una nota. Occorre conoscere diversi aspetti dei bitcoin per mettere in atto questa operazione ma chi riceve i bitcoin ha solo da mettere il testo qui sopra quotato in un sito on line per la verifica della firma, quindi non è operativamente difficile.
A cosa serve "firmare i bitcoin inviati"?
Forse non a tutti risulta comprensibile cosa può servire il meccanismo fin'ora illustrato. Facciamo un esempio semplice. Un artigiano ha un unico indirizzo bitcoin magari scritto su un biglietto da visita oppure sul proprio sito web e deve farsi pagare da tutti suoi clienti: come fare a sapere chi ha pagato e chi no?
L'artigiano che incamera i pagamenti non conosce gli indirizzi bitcoin dei clienti, quindi si può fare inviare per email la nota di pagamento dei clienti del tipo:
Cliente 1:
-----BEGIN BITCOIN SIGNED MESSAGE-----
Sono Tizio e ti ho pagato 2.5 btc per 25 finestre che mi hai montato il 23 aprile 2015, ciao.
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
-----BEGIN SIGNATURE-----
17u1mDkgNcdwi44braeTKpvnfNnTrgvBfB
IJ6oyHmcmx9UDavYWgl33UPUwYMtuDAClggh+F2isIMyrqIuRIIOX1pn5z44j802STKBjPKbXac3eJmtgdKp4Go=
-----END BITCOIN SIGNED MESSAGE-----
Cliente 2:
-----BEGIN BITCOIN SIGNED MESSAGE-----
Ciao, sono Caio e ti do i 3.1 bitcoin che ancora avanzi riguardo la portafinestra.
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
-----BEGIN SIGNATURE-----
18u1mDkgNcdwi44braeTKpvnfNnTrgvBfB
IJ6oyHmcmx9UDavYWgl33UPUwYMtuDAClggh+F2isIMyrqIuRIIOX1pn5z44j802STKBjPKbXac3eJmtgdKp4Go=
-----END BITCOIN SIGNED MESSAGE-----
Cliente 3:
-----BEGIN BITCOIN SIGNED MESSAGE-----
Ti mando 1.2 btc per le cassemorte. Sempronio. 7 maggio 2015.
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
-----BEGIN SIGNATURE-----
19u1mDkgNcdwi44braeTKpvnfNnTrgvBfB
IJ6oyHmcmx9UDavYWgl33UPUwYMtuDAClggh+F2isIMyrqIuRIIOX1pn5z44j802STKBjPKbXac3eJmtgdKp4Go=
-----END BITCOIN SIGNED MESSAGE-----
In questo modo l'artigiano sa che Tizio è il proprietario dell'indirizzo bitcoin 17u1mDkgNcdwi44braeTKpvnfNnTrgvBfB e può verificare tramite blockchain.info che gli ha effettivamente pagato 2.5 btc e quindi dal suo libro mastro di tutti i pagamenti ricevuti (una stampa di blockchain.info del suo indirizzo bitcoin) toglie quel pagamento e segna pure il lavoro fatto presso l'abitazione di Tizio come "Pagata".
L'alternativa a questo metodo è quello usato da bitpay e altri sistemi di pagamento on line ovvero generare un indirizzo bitcoin diverso per ogni pagamento on line ma questo è un sistema complesso che però semplifica la vita dei clienti.
Questa domanda è già stata posta qui e il tutto si risolve tramite i programmi bitcoin-core, multibit, electrum, ecc, che permettono di firmare un messaggio. Nelle immagini che seguono tratte da bitcoin-core c'è la soluzione del problema, (fonte), cliccare nell'immagine per ingrandire. Di seguito mi dilungo in spiegazioni compreso forse il non chiaro "a cosa serve firmare i bitcoin che si sono inviati?".
Nella prima immagine "firma il messaggio", si usa il proprio indirizzo bitcoin (che si possiede) e quindi nella prima riga dell'immagine apparirà qualche cosa del tipo:
1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzNa questo punto si può firmare un qualsiasi messaggio, uno adatto è questo tipo:
Ti ho inviato 1.1 bitcoin dall'indirizzo 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzNallora si preme il pulsante "Sign Message" ovvero "Firma il Messaggio" e si avrà nell'ultima riga "Signature/Firma" una firma pari a qualche cosa del genere:
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
Sandro kensan, 1 aprile 2015
Gyk26Le4ER0EUvZiFGUCXhJKWVEoTtQNU449puYZPaiUmYyrcozt2LuAMgLvnEgpoF6cw8ob9Mj/CjP9ATydO1k=Ora questi tre elementi di testo riassunti qui sotto:
-----BEGIN BITCOIN SIGNED MESSAGE-----si possono inviare per email da parte del pagante al commerciante il quale potrà verificare che abbiamo saldato il debito.
Ti ho inviato 1.1 bitcoin dall'indirizzo 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
Sandro kensan, 1 aprile 2015
-----BEGIN SIGNATURE-----
1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN
G3FdTB7lnns5wNK9ZMzeVu4kPXUyxpHscE8tsMgXdw+o3Oq7GUOjlVzPIIUcLB7WxrT0FBuN5392SZakbundnnk=
-----END BITCOIN SIGNED MESSAGE-----
Verificare che il cliente ha pagato
A questo punto saltiamo sul carro del commerciante e ci mettiamo nei suoi panni. L'email con il testo quotato qui sopra si può mettere in un tool di verifica di firma on line presente a questo indirizzo web o quest'altro in uno di nostra fiducia (vanno tutti bene purché si tratti di verifica di firma dei bitcoin).
Il tool on line mostrerà l'informazione "Message verified to be from 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN" ovvero che il messaggio "Ti ho inviato..." proviene dal proprietario dell'indirizzo bitcoin 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN.
La seconda immagine etichettata con "Verify/Verifica" mostra come verificare il messaggio e opera nello stesso modo del tool on line. Analogamente si opera con Multibit dove però la firma è differente come si può vedere da questo esempio:
-----BEGIN BITCOIN SIGNED MESSAGE-----Comunque sia il tool on-line si "mangia" entrambi i formati, sia quello di bitcoin-core che quello di Multibit.
Ti ho inviato 1.1 bitcoin dall'indirizzo 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
Sandro kensan, 1 aprile 2015
-----BEGIN BITCOIN SIGNATURE-----
Version: Bitcoin-qt (1.0)
Address: 1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN
G7Bp1SQLX9XadjQTRimeqOHr352aF+bkKTv/PsSahXnqDzIMyV1OTu+/uzbUHeFbiBSgOonsCuXx6ethl16tOfc=
-----END BITCOIN SIGNATURE-----
Si è visto che i tre testi quotati: l'indirizzo bitcoin, il messaggio, la firma, costituiscono un unicum inscindibile che da come risultato "Message verified", da cui chiunque capisce che Sandro kensan è proprietario dell'indirizzo suddetto e ha spedito 1.1 bitcoin come elencato da blockchain. In pratica il cliente Sandro kensan ha pagato il commerciante e il commerciante lo può verificare.
Kensan.it
Il fatto che sia messo il nome Sandro kensan non indica che il nome è autentico ma va inteso che quel nome è sicuramente quello del pagatore perché l'interesse di chi ha scritto e firmato quel messaggio è quello di mettere il proprio nome e non un nome falso o di un'altra persona. Quindi si tratta di una deduzione. Per fare un esempio se debbo pagare un debito in bitcoin a un commerciante ho l'interesse a indicare il mio nome e non un altro nome, così da saldare il conto.
Per chi sapesse poco dei bitcoin con blockchain.info intendo uno dei servizi on line che fanno vedere le transazioni fatte da un indirizzo bitcoin a un altro. Questa è una informazione pubblica e non alterabile, mostra il passaggio di mano dal nostro indirizzo a quello del destinatario, quindi il pagamento.
Concludo con una nota. Occorre conoscere diversi aspetti dei bitcoin per mettere in atto questa operazione ma chi riceve i bitcoin ha solo da mettere il testo qui sopra quotato in un sito on line per la verifica della firma, quindi non è operativamente difficile.
A cosa serve "firmare i bitcoin inviati"?
Forse non a tutti risulta comprensibile cosa può servire il meccanismo fin'ora illustrato. Facciamo un esempio semplice. Un artigiano ha un unico indirizzo bitcoin magari scritto su un biglietto da visita oppure sul proprio sito web e deve farsi pagare da tutti suoi clienti: come fare a sapere chi ha pagato e chi no?
L'artigiano che incamera i pagamenti non conosce gli indirizzi bitcoin dei clienti, quindi si può fare inviare per email la nota di pagamento dei clienti del tipo:
Cliente 1:
-----BEGIN BITCOIN SIGNED MESSAGE-----
Sono Tizio e ti ho pagato 2.5 btc per 25 finestre che mi hai montato il 23 aprile 2015, ciao.
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
-----BEGIN SIGNATURE-----
17u1mDkgNcdwi44braeTKpvnfNnTrgvBfB
IJ6oyHmcmx9UDavYWgl33UPUwYMtuDAClggh+F2isIMyrqIuRIIOX1pn5z44j802STKBjPKbXac3eJmtgdKp4Go=
-----END BITCOIN SIGNED MESSAGE-----
Cliente 2:
-----BEGIN BITCOIN SIGNED MESSAGE-----
Ciao, sono Caio e ti do i 3.1 bitcoin che ancora avanzi riguardo la portafinestra.
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
-----BEGIN SIGNATURE-----
18u1mDkgNcdwi44braeTKpvnfNnTrgvBfB
IJ6oyHmcmx9UDavYWgl33UPUwYMtuDAClggh+F2isIMyrqIuRIIOX1pn5z44j802STKBjPKbXac3eJmtgdKp4Go=
-----END BITCOIN SIGNED MESSAGE-----
Cliente 3:
-----BEGIN BITCOIN SIGNED MESSAGE-----
Ti mando 1.2 btc per le cassemorte. Sempronio. 7 maggio 2015.
https://blockchain.info/tx/c348101f6d0a9a702f6d889a979b5feb5b4ecf8bdee36d7bbb21db6ef4c07a1c
-----BEGIN SIGNATURE-----
19u1mDkgNcdwi44braeTKpvnfNnTrgvBfB
IJ6oyHmcmx9UDavYWgl33UPUwYMtuDAClggh+F2isIMyrqIuRIIOX1pn5z44j802STKBjPKbXac3eJmtgdKp4Go=
-----END BITCOIN SIGNED MESSAGE-----
In questo modo l'artigiano sa che Tizio è il proprietario dell'indirizzo bitcoin 17u1mDkgNcdwi44braeTKpvnfNnTrgvBfB e può verificare tramite blockchain.info che gli ha effettivamente pagato 2.5 btc e quindi dal suo libro mastro di tutti i pagamenti ricevuti (una stampa di blockchain.info del suo indirizzo bitcoin) toglie quel pagamento e segna pure il lavoro fatto presso l'abitazione di Tizio come "Pagata".
L'alternativa a questo metodo è quello usato da bitpay e altri sistemi di pagamento on line ovvero generare un indirizzo bitcoin diverso per ogni pagamento on line ma questo è un sistema complesso che però semplifica la vita dei clienti.