Ciao, grazie mille per la risposta, la parte di script ancora la devo approfondire per bene, ma da quello che capisco, correggimi se dico una fesseria, il ricevente di una trx verifica la firma quando deve effettuare lui una transazione verso un altro soggetto e non nel momento in cui la riceve.
No, la verifica della firma viene fatta immediatamente dalla rete, non appena la transazione viene "proposta" pubblicamente. Che il ricevente la verifichi personalmente o no non c'entra, in un certo senso è la rete stessa il ricevente. Una transazione non può essere trasmessa nè tantomeno inserita in un blocco se non è prima verificata.
Ciao grazie ancora, almeno sul fatto che la figura sia di non facile comprensione siamo d’accordo
Ricapitolo:
Nello script di output trovo hash dell indirizzo corretto sto facendo riferimento alla trx che mii hai linkato prima?
Quando dici facendo riferimento alla txid precedente ce quindi un puntutatore alla trx di prima dove posso facilemente reperire le info di verifica?
Ogni transazione non spende mai "direttamente" i btc di un indirizzo, bensì spende un output (o più output) non speso (UTXO) relativo a una transazione precedente. Cioè ci si riferisce a un indirizzo di partenza solo in modo indiretto, mai direttamente. L'indirizzo A di partenza non c'è esplicitamente nella transazione che spende i suoi fondi.
Nella seguente immagine la transazione C spende 2 output non spesi delle transazioni A e B:
E tornando alla transazione che ti ho linkato prima:
{
"lock_time":524944,
"size":226,
"inputs":[
{
"prev_out":{
"index":0,
"hash":"ecc8c09284a6f9e6d52cccf7f8f4aef1d0c4a33984375dea4cea70923066078d"
},
"script":"483045022100d1dd9918d3b94a2ed5694f405340c153ddcba746309356366d7f30ac5483865002200b655cd3aeaff1f7c127708b3516ff2374f3c9991afdbca2282c6240d91d9ecd012102cced963cdc06b1881a355f4094a03ef208a9368c2096fb1f6b568508acae973e"
}
],
"version":1,
"vin_sz":1,
"hash":"2757cdab2acc9f11f32d45c9db9d3bdf23787304ed06a43d3c4ccf15e5def075",
"vout_sz":2,
"out":[
{
"script_string":"OP_DUP OP_HASH160 db53d9bbd1f3a83b094eeca7dd970bd85b492fa2 OP_EQUALVERIFY OP_CHECKSIG",
"address":"1LzhS3k3e9Ub8i2W1V8xQFdB8n2MYCHPCa",
"value":5000000,
"script":"76a914db53d9bbd1f3a83b094eeca7dd970bd85b492fa288ac"
},
{
"script_string":"OP_DUP OP_HASH160 7ea3c6d706587efc37b78f8886aa613459e2af92 OP_EQUALVERIFY OP_CHECKSIG",
"address":"1CYcLaSSu7RqndeoW27H36uRfpyVJpTuxh",
"value":50009400,
"script":"76a9147ea3c6d706587efc37b78f8886aa613459e2af9288ac"
}
]
}
guardando alla parte
"inputs":[
{
"prev_out":{
"index":0,
"hash":"ecc8c09284a6f9e6d52cccf7f8f4aef1d0c4a33984375dea4cea70923066078d"
},
nello script di input c'è il chiaro riferimento al primo (index 0) output non speso di una transazione già presente nella blockchain (hash = txid della transazione), non è presente invece esplicitamente l'indirizzo di partenza 1AqEgLuT4V2XL2yQ3cCzjMtu1mXtJLVvww
In sostanza c'è quindi proprio un puntatore alla transazione precedente, in questo modo le informazioni contenute in questa transazione precedente vengono utilizzate per interpretare anche la transazione attuale (che non avrebbe senso da sola, ma va pensata inserita in una catena di transazioni --> "chain of digital signatures").
EDIT: ho aggiornato anche la risposta
https://bitcointalksearch.org/topic/m.39156123 con una versione aggiornata dello schema di Satoshi