Sì, se da quell'indirizzo non è mai stata effettuata alcuna transazione vuol dire che la chiave pubblica dell'indirizzo non è mai stata esposta pubblicamente nella blockchain; è solo quando si firma una transazione con la chiave privata di un proprio indirizzo (cioè quando si autorizza l'invio di fondi da quell'indirizzo) che bisogna rendere effettivamente pubblica la chiave pubblica. L'anello "debole" (debole si fa per dire!) è il collegamento chiave privata - chiave pubblica, non il collegamento chiave pubblica - indirizzo. Dall'indirizzo è impossibile*** ricavare la chiave pubblica, dalla chiave pubblica forse un giorno lontano potrebbe essere possibile risalire alla chiave privata.
***EDIT: sarebbe meglio specificare, più che impossibile --> impraticabile; mentre nel caso dell'algoritmo che genera la chiave pubblica da quella privata si può pensare di trovare un domani un modo efficiente di invertire il processo, nel caso si abbia invece come unico dato di partenza solo l'indirizzo, non rimane che utilizzare la forza bruta: si iniziano a generare tutte le chiavi private possibili (sono poco meno di 2^256), e per ciascuna di queste si genera la chiave pubblica corrispondente e il relativo indirizzo; poichè gli indirizzi sono dell'ordine di 2^160, probabilmente ci sono in media 2^96 chiavi private distinte che generano 2^96 chiavi pubbliche distinte che producono esattamente lo stesso indirizzo. Quindi "basterebbe" trovare una di quelle 2^96 chiavi private a furia di tentativi nell'universo di tutte le 2^256 chiavi possibili; in media ci vorrebbero 2^160 tentativi per ogni indirizzo (contro i 2^128 passi necessari attualmente per risalire dalla chiave pubblica alla chiave privata)
il problema non sarebbe (condizionale d'obbligo) con la produzione di elevati hashate,
bensi' con la possibilita' di risalire alle chiavi private dalle chiavi pubbliche
degli indirizzi che hanno operazioni in output
anche per questo viene sempre raccomandato di azzerare gli indirizzi
con operazioni in output !
cioè non ho capito, cosa dovrei fare per azzerare gli indirizzi?
certi wallet lo fanno in automatico.
In realtà non è proprio possibile non spendere interamente un output di una transazione che fa riferimento a un certo indirizzo; poi succede che alcuni wallet sono impostati per inserire automaticamente nella transazione di spesa decisa dall'utente come indirizzo del resto proprio l'indirizzo di partenza; questo meccanismo rende tutto più intuitivo per l'utente che quasi non si accorge neanche di aver mosso tutti i fondi dal proprio indirizzo e non solo una parte, come erroneamente si potrebbe pensare; però in questo modo si espone il resto che è tornato indietro a un teorico piccolissimo (e assolutamente improbabile) rischio di furto.
Quindi il protocollo di funzionamento del sistema Bitcoin già prevede naturalmente l'azzeramento di un singolo UTXO ogni volta che si prova a spenderne anche solo una parte, ma l'implementazione del meccanismo di gestione dei resti nei vari wallet può vanificare la logica di estrema sicurezza (e di privacy) che è alla base delle transazioni.
Se invece ci sono 2 output di 2 transazioni diverse collegati al mio indirizzo ( es: 5 e 8 btc) e io voglio spendere solo 1 btc di norma il mio wallet spenderà completamente solo uno dei due output, ma l'altro output non speso (in gergo UTXO) rimarrà lì, quindi l'indirizzo non verrà "azzerato".
Non ho capito se gbianchi sostiene che ci siano wallet che azzerano automaticamente tutti gli UTXO associati a un indirizzo alla prima spesa effettuata da quell'indirizzo; quali sono?