Hey, bizantino.

Validazione di una transazione P2SH-P2PK: il processo di verifica.

Salve, nell’articolo precedente abbiamo esaminato il processo di transazione utilizzando il P2SH-P2PK. In questo nuovo articolo, ci concentreremo sulla procedura di validazione. Come nelle discussioni precedenti, esploreremo lo stack utilizzando la libreria btcdeb e faremo riferimento al codice del libro “Bitcoin In Action – SegWit, Bitcoin Script e Smart Contracts”, disponibile sul nostro GitHub. La logica adottata in questo libro prevede di passare uno specifico parametro di debug allo script (DEBUG=1) per invocare la libreria btcdeb. Ora, procediamo con l’analisi pratica.

Come nei casi precedenti, inizieremo con una blockchain a zero blocchi. Mineremo successivamente 101 blocchi per ottenere la ricompensa, trasferendola successivamente a un nuovo indirizzo. Se desideri seguire passo dopo passo questi procedimenti, ti consiglio di leggere l’articolo precedente.

Il nostro compito è avviare il file sh con il comando:

$ ./main.sh debug=1

Il codice è disponibile nel nostro repository e nel libro “Bitcoin In Action – SegWit, Bitcoin Script e Smart Contracts”.

Lo script si interromperà prima dell’invio della transazione in broadcast, consentendoci di verificare la sua validità. Analogamente ai casi P2PK e P2PKH, lo stack inizia vuoto, con i primi elementi inseriti nello scriptSig.

Cosa troveremo nello scriptSig? Come discusso nell’articolo precedente, troveremo la firma digitale e il redeem script in chiaro. La composizione degli elementi nello scriptSig varierà a seconda dello script utilizzato.

Nella foto allegata, vediamo la firma digitale e il redeem script inseriti nello stack. Successivamente, procediamo inserendo gli elementi dello scriptPubKey, utilizzando l’operazione OP_HASH160 che applica SHA256 e RIPEMD160. Il risultato viene inserito nello stack.

Come viene ottenuto il redeem script Hash? Applicando SHA256 e RIPEMD160, la stessa operazione utilizzata per l’HASH160. Il redeem script hash viene poi pushato nello scriptPubKey.

L’operazione successiva, OP_EQUAL, verifica se i primi due elementi nello stack sono uguali. In caso affermativo, inserisce 1; in caso contrario, invalida la transazione. Questo controllo è necessario per garantire la retrocompatibilità del P2SH con i miner non aggiornati.

Se tutto procede correttamente, vedremo uno 01, risultato di OP_EQUAL, che viene rimosso dallo stack (pop) per eseguire il redeem script e il successivo controllo OP_CHECKSIG, simile a un normale P2PK come discusso in precedenza.

Il processo potrebbe sembrare intricato, ma con la conoscenza degli script come P2PK e P2PKH, diventa più lineare.

Ciao!

— — –

🐳 Playground Bitcoin in Action

🎥 Bitcoin in Action (YouTube)

🐙 GitHub: https://bit.ly/2Lj3yeY

— –

📕 Bitcoin In Action — SegWit, Bitcoin Script e Smart Contracts (Amazon)

📕 Bitcoin In Action — SegWit, Bitcoin Script e Smart Contracts (pagamento in bitcoin)

— –

📒 Libro Bitcoin dalla teoria alla pratica (Amazon)
📒 Libro Bitcoin dalla teoria alla pratica (pagamento in bitcoin)
📒 Book Bitcoin from theory to practice (Amazon)

📒 Book Bitcoin from theory to practice (accept bitcoin)

🎥 Video Corso Bitcoin dalla teoria alla pratica


📙 Tascabile Bitcoin 199 domande (Amazon)
📙 Tascabile Bitcoin 199 domande (pagamento in bitcoin)

📙 Pocket Book Bitcoin 199 questions (Amazon)
📙 Pocket Book Bitcoin 199 questions (accept bitcoin)

► ITA: Twitter , FacebookMediumInstagramYoutubeGitHub

► ENG: Twitter , FacebookMediumInstagramYoutubeGitHub

Television isn’t a good idea (Radio Stations)
Email isn’t a good idea (Post offices)
Amazon isn’t a good idea (Retail stores)
Bitcoin isn’t a good idea (Central banks)

In crypto we trust