Non mi è molto chiaro il tuo dubbio, provo a spiegare meglio la cosa: ogni blocco porta con se diverse informazioni tra cui l'hash del blocco precedente, in modo da formare la "catena".
Per essere valido, ogni blocco deve avere un un hash calcolato con un (doppio) SHA256, che deve essere minore di un certo "target".
Tale target dipende dalla difficoltà: tanto più è alta, tanto più basso è il target, riducendo quindi il numero dei possibili hash che vanno bene.
Siccome, come giustamente calcoli, il numero di possibili hash è assolutamente [i]enorme[/i] in quanto dell'ordine di 2^200, calcolare un hash richiesto, il cui unico modo è il brute force, richiede risorse computazionali impressionanti.
Questo a meno di non "rompere" lo sha256, cosa che però sembra essere ben ben lontano dall'essere possibile.
Quindi non solo l'evento è difficile da riprodurre, ma è talmente difficile che tutta la rete bitcoin nella sua interezza prova costantemente a trovare tale [i]nonce[/i] e ci riesce, mediamente, circa ogni 10 minuti.
Inoltre siccome ogni blocco si porta dietro l'hash precedente, cercare di contraffare tutta la catena diventa esponenzialmente sempre più complesso e quindi sempre meno praticabile.
Non ho capito il discorso di "congelare" le transazioni usando testo o xml (direi che il tipo di rappresentazione è del tutto irrilevante), ma la cosa viene già fatta con la catena dei blocchi in quanto tutto rimane nella storia.
Prima di ritenere confermata una transazione infatti si aspettano 6 blocchi che corrispondono a circa un'ora. Una volta avutoli la potenza di calcolo necessaria a poter avere una catena di 6 blocchi alternativa è talmente elevata che è decisamente improponibile per qualunque attaccante anche di portata enorme come le risorse che può mettere in campo un governo.
I calcoli sono evidenziati nel paper di Satoshi.
Ciao,
Dusty
Forse il parametro
Merkle root:
risolve il mio problema di sostituzione di un blocco. Ma non ho capito cosa sia esattamente, è un parametro che viene calcolato tenendo in considerazione tutti i blocchi precedenti?
Provo a rispiegare:
se io riuscissi a creare un blocco che ha l'hash corretto
Supponiamo: http://blockexplorer.com/block/0000000000000e683be88e96a15392e5263f11d4b...
che contiene il riferimento corretto al precedente e ben formattato e coerente con i dati che contiene.
Potrebbe passare inosservato e sostituirsi al blocco corretto?
Nel senso, il blocco successivo sa di essere il successivo perche' conosce l'hash del precedente.
A questo punto io metto nel blocco taroccato un 100.000 BTC su un mio indirizzo prelevandoli da un indirizzo che abbia i fondi necessari o mi genero un premio .... o sostituisco un indirizzo destinazione con uno mio. ...
In sostanza: l'algoritmo ha modo di scovare la mia truffa o digerirebbe il blocco considerandolo buono e corretto?
L'anonimato poi impedirebbe di essere scoperto. In sostanza: puo' essere un buco?
Non voglio sostituire tutta la catena ma solo un blocco. Magari tra 100 anni il blocco di cui sopra (che caso vuole non ha nessuna transazione se non il premio).
Se ho ragione, basterebbe sostituire (o aggiungere) il riferimento all'hash precedente con l'hash dei soli dati che contiene senza i dati
Nonce:
Chi l'ha generato
Allora sarebbe molto piu' difficile generare un hash e rispettare la grammatica del messaggio. Il nonce elimina questo vantaggio.