Ma se io apro il client bitcoin e genero un indirizzo e vi dico che non ho la chiave privata (che invece ho) ci credete? Non capisco cosa ci garantisce che per quell'indirizzo nessuno possa avere la chiave privata.
Ci stiamo basando sul fatto che "ha tutte quelle x di fila" ? Ci aspettiamo che sia statisticamente rarissimo che il client ci generi proprio un indirizzo cosi particolare?
Esattamente: è in pratica impossibile che esca fuori un indirizzo contenente un uno iniziale (obbligatorio) seguito da una lunga parola di senso compiuto (con tutte le maiuscole e minuscole a posto) tra l'altro semanticamente coerente col tipo di servizio proposto, seguita unicamente da una sfilza di X fino a riempire perfettamente i primi 27 caratteri obbligatori e dal checksum.
Per capirci, visto che nessuno ha risposto al mio invito, risolvo il problemino proposto.
Facciamo 2 calcoli.
https://en.bitcoin.it/wiki/Vanitygen_keysearch_ratePrendiamo una scheda video che provi 25 milioni di chiavi al secondo (hardware credo al top). Per provare tutte le combinazioni ci vorrebbero:
58^34/25000000 = 3,619193243×10⁵² secondi = 1,147638649×10⁴² millenni
(arrotondiamo a 10⁴² millenni, ovvero "1 seguito da 42 zeri" millenni)
Ovviamente ci vorrebbe meno tempo, perché questo è il peggiore scenario, ove si becchi la combinazione giusta all'ultimo tentativo dopo aver provato tutte le possibilità. Da qui però però si può calcolare la probabilità di trovare la chiave privata nel tempo che preferite. Per esercizio
vi invito a calcolare la probabilità di trovare la chiave in meno di 1 milione di anni (1000 millenni).
I milioni di anni necessari a fare tutte le prove usando quella scheda video sono 10³⁹; la probabilità che la chiave privata di quell'indirizzo venga trovata nel primo milione di anni è quindi 1/10³⁹, ovvero 0,[38 zeri]1 = 0,[36 zeri]1%. In termini ingegneristici si può tranquillamente arrotondare con uno zero tondo, che in italiano si legge "è praticamente proprio impossibile".
Ora, per stimare la probabilità che quello sia un indirizzo uscito fuori casualmente, basta immaginare tutte le combinazioni "sensate" possibili e moltiplicare il numero di queste possibilità per la probabilità precedentemente calcolata.
Esempi di indirizzi sensati:
1CounterpartyXXXXXXXXXXXXXXX[checksum] ← il caso analizzato in questa discussione
1counterpartyXXXXXXXXXXXXXX[checksum]
1Counterpartyxxxxxxxxxxxxxx[checksum]
1CounterpartyYYYYYYYYYYYYYY[checksum]
1TrashAddressXXXXXXXXXXXXXX[checksum]
...
Nel mio caso la probabilità che uno di quegli indirizzi possa uscire fuori
in meno di un milione di anni di tentativi è 5/10³⁹. Mettiamo che esistano un miliardo di combinazioni "plausibili", cambia poco/niente: 10⁹/10³⁹ = 1/10³⁰, comunque semplificabile in uno zero tondo. Dato che dall'inizio del progetto Bitcoin ad oggi non sono passati miliardi e miliardi di anni ma solo cinque e mezzo, capite bene che è davvero ridicolo avere anche solo il minimo dubbio che quel tizio possa disporre della chiave privata di quell'indirizzo.
Ciao!