Ciao,

Negli articoli precedenti abbiamo analizzato come è costruito un address P2SH-P2PK, e in questa introduzione andremo invece ad analizzare come è costruita la transazione.

Bitcoin P2SH — Bitcoin in Italiano
Bitcoin P2SH — Bitcoin in Italiano
Frame del video Bitcoin in Action — Come è formata una transazione P2SH-P2PK

Nell’immagine della lavagna è riportata una simil transazione, ovvero come poi verrà eseguito lo script.

Nello scriptSig, ovvero la parte dell’input della transazione, troviamo le condizioni necessarie per soddisfare lo scriptPubKey della UTXO di riferimento.

Avendo preso come riferimento un P2SH–P2PK nello scriptSig è presente la firma digitale e il redeem script in chiaro.
Esatto, il redeem script, è posizionato nello scriptSig, gli stessi elementi che sono stati utilizzati per creare l’address negli articoli precedenti.


Come creare un address P2SH–P2PK

Nell’articolo precedente abbiamo analizzato ad alto livello come è costruito l’address P2SH, che cosa è il redeem script, che cosa è il redeem script hash e dove è posizionato per la generazione dell’address.

In questo articolo andiamo più nel dettaglio ed iniziamo a mettere il primo mattoncino per la generazione di un address P2SH-P2PK

Il nostro compitò sarà quindi quello di creare un redeem script che conterrà la logica del P2PK classico, il primo address che abbiamo analizzato in questa playlist.

Il codice che stiamo per mostrare lo potete trovare nel libro Bitcoin In Action — SegWit, Bitcoin Script e…


P2SH Bitcoin in Action
P2SH Bitcoin in Action
P2SH: Come è costruito?

Entriamo nel vivo dell’address Pay to script Hash. Come dicevamo nel precedente video, l’utente andrà a pagare ad un hash di uno script.

Collegandoci agli address affrontati precedentemente, abbiamo potuto capire che le condizioni necessarie per sbloccare la transazione sono dichiarate all’interno dello scriptPubKey, che storicamente prende il nome anche di locking script.

In un address Pay To Script Hash, è possibile inserire qualsiasi tipo di script, anche custom. Con lo script custom sarà l’utente a prendersi la responsabilità di scrivere un giusto script. Con questo che cosa voglio dire? …


Dopo aver analizzato gli script P2PK (Pay to Public key) e P2PKH (Pay to Public key Hash) siamo arrivato al P2SH (Pay to script hash), gli address che iniziano con il numero 3. Come la parola stessa ci suggerisce, andiamo a pagare alla vista di un hash di uno script.

Questo tipo di script è affrontato in modo molto dettagliato nel libro Bitcoin In Action — SegWit, Bitcoin Script e Smart Contracts.


Dopo alcuni articoli di teoria, siamo arrivati alla pratica. In questo video analizzeremo come sia possibile creare una transazione P2PKH utilizzando un nodo bitcoin in modalità Regtest.

Per questo esempio utilizzeremo un progetto che stiamo portando avanti io a Alessandro, ovvero un playground. Faremo un video dettagliato prima possibile, ma per adesso vi basta pensare che è, accedendo dei container docker, abbiamo a disposizione due nodi, Hansel e Gretel, che parlano tra loro, e alcuni utility tra cui un blockchain explorer.

Se volete replicare l’esempio che stiamo per vedere, potete creare il vostro ambiente di lavoro, clonando il progetto e…


Negli articoli precedenti abbiamo visto come un address P2PKH viene generato e come una transazione viene validata. È arrivato il momento di fare sul serio, creeremo un address P2PKH e analizzeremo step by step la transazione e come questa viene validata.

Vi ricordo velocemente che l’address P2PKH (pay to public key hash) ha nel suo scriptPubKey, l’hash della sua chiave pubblica compressa.

Nel libro Bitcoin In Action — SegWit, Bitcoin Script e Smart Contracts (Amazon) analizziamo e creiamo un address P2PKH manualmente, partendo dalla generazione della chiave privata. …


In questo ultimo articolo affronteremo con la teoria come si ottiene la chiave privata e come si deriva la chiave pubblica.

Video disponibile nel canale Bitcoin in Action

Come già spiegato nei precedenti articoli, per lo script P2PK, non esiste un address specifico. È molto importante comprendere come il protocollo Bitcoin si è evoluto per arrivare ad ottenere gli address che utilizziamo oggi.

Il tutto parte dalla chiave privata.


https://youtu.be/kussfH_U6Ow

Nel video precedente, abbiamo analizzato con la pratica come la transazione viene P2PK viene validata.

Ci si potrebbe domandare: Come riesce il software a sapere cosa inserire all’interno dello stack?

Come spiegato nei precedenti video, Bitcoin utilizza script, linguaggio di programmazione necessario per validare lo stack. Prima di analizzare come lo stack riesce a capire cosa inserire al suo interno, è necessario spiegare alcune informazioni di base.

Il bit è l’acronimo di binary digit, ed è un’unità di misura informatica.

0 spento
1 acceso

Il byte è formato da 8 bit (2⁸).

Il nibble invece è formato da 4 bit.


https://www.youtube.com/watch?v=SMDeoY9x3HY

Nell’articolo precedente abbiamo spiegato con la teoria come viene validata una transazione P2PK, adesso con l’aiuto del tool btcdeb, analizziamolo con la pratica. Vogliamo quindi analizzare la transazione avvenuta nel blocco 170, tra Hal Finney e Satoshi Nakamoto.

Se non siamo a conoscenza dell’esadecimale della transazione è necessario recuperarlo dal suo blocco. e dato che non sappiamo neanche l’hash del blocco, lo recuperiamo tramite la sua altezza.

$ bitcoin-cli getblockhash 17000000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee

Adesso possiamo recuperare le transazioni.

$ bitcoin-cli getblock 00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee{"hash": "00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee","confirmations": 662339,"strippedsize": 490,"size": 490,"weight": 1960,"height": 170,"version": 1,"versionHex": "00000001","merkleroot"…

Come si valida una transazione P2PK?

Nel video precedente abbiamo introdotto lo Stack e abbiamo capito che viene utilizzato per validare la transazione.
L’obiettivo di questa serie è spiegare gli address, quindi partiremo con l’analisi dell’address P2PK.

In realtà è sbagliato dire l’address P2PK, proprio perchè non esiste nessun address P2PK. Analizzando la prima transazione nel blocco 170, molti explorer riportano l’address: 1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3 ma in realtà non è corretto.

L’address che si vede è un address P2PKH, mentre lo script P2PK non ha nessun address specifico. …

Bitcoin In Action

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store