Gli indirizzi P2SH o Pay-to-Script-Hash sono un tipo speciale di indirizzo in Bitcoin, che ti consente di creare indirizzi che possono ricevere o inviare transazioni in cui devono essere soddisfatte una serie di istruzioni per sbloccare i saldi che questi indirizzi contengono.
El Pay-to-ScriptHasho noto anche come P2SH, è un formato di script utilizzato sulla rete Bitcoin che permette di bloccare i bitcoin nell'hash dello script (una parte) e quindi fornire lo script originale (completo) quando i bitcoin vengono sbloccati al momento di effettuare una transazione.
Questa funzione consente la creazione di script di riscatto personalizzati che possono essere facilmente condivisi con altri utenti. Cioè, ti consente di creare indirizzi o transazioni con pianificazioni non convenzionali. E questi possono essere sbloccati solo soddisfacendo una serie di condizioni prestabilite.
Dal 2012, Bitcoin e altre criptovalute hanno incorporato il formato P2SH in molti dei loro indirizzi. Attraverso il quale le transazioni possono essere inviate a un hash di script, invece che a un hash di chiave pubblica. Cioè, le transazioni vengono inviate a un indirizzo che inizia con 3 invece di uno che inizia con 1 (ECDSA). Così che gli indirizzi codificati in questo formato rappresentano l'hash codificato di uno script e non quella di una chiave pubblica ECDSA.
Allo stesso modo, a causa di questa caratteristica, gli indirizzi con formato P2SH vengono generalmente utilizzati per effettuare transazioni verso indirizzi con più firme. Anche se questo non è il suo unico utilizzo. Con P2SH è possibile configurare indirizzi che possano rappresentare uno script attraverso il quale vengono codificati altri tipi di transazioni. Ad esempio, con P2SH un utente può inviare i propri bitcoin a un indirizzo sicuro in molti modi possibili o insoliti senza conoscere la configurazione della sicurezza. Mentre l'utente che riceve la transazione potrebbe dover soddisfare determinate condizioni o istruzioni speciali per sbloccare la transazione.
Esempio di una transazione P2SH
Una transazione P2SH funziona perché il scriptPubKey contiene un hash che deve essere sbloccato per poter sbloccare il pagamento dei bitcoin bloccati. Innanzitutto, lo script sorgente di sblocco della transazione (script di riscatto o script di riscatto) si trova all'interno dello scriptSig della transazione.
Qui possiamo vedere chiaramente che lo scriptSig menziona un indirizzo MuSig o multi-firma del tipo (2 di 3). In esso vediamo tre chiavi (le chiavi nell'immagine), due firme (dei partecipanti alla transazione) e il file OP_CODE (codice operazione), OP_CHECKMULTISIG. Ciò che questa parte dello script di transazione farà è verificare che le firme e le chiavi al suo interno siano in grado di sbloccare l'operazione.
Cioè, verifica che almeno 2 delle tre persone autorizzate stiano effettuando la transazione. Una volta che lo script ha verificato ciò, possiamo essere sicuri di avere lo script di sblocco bitcoin in nostro possesso e passiamo alla seconda parte.
Nella seconda parte vediamo come lo scriptPubKey di una transazione P2SH abbia la seguente struttura:
Questi OP_CODE ci dicono che scriptPubKey sarà sbloccato solo se possiamo dimostrare di avere lo script di origine della transazione (lo script di riscatto controllato in scriptSig). Per fare ciò dobbiamo prendere il risultato di questo script ed eseguire l'operazione OP_HASH160. Cioè, applica un hash allo script SHA-256 e poi un RIPEMD-160. Il risultato verrà confrontato con lo "script hash" all'interno dello scriptPubKey (questo utilizzando OP_EQUAL) e se il risultato è identico, avremo sbloccato con successo i nostri bitcoin.
Implementazione del formato P2SH negli indirizzi Bitcoin
BIP-0013
El Formato dell'indirizzo Pay-to-ScriptHash è stato inizialmente introdotto nel BIP 13 progettato da Gavin Andresen. Dove descrive un nuovo formato per gli indirizzi Bitcoin con cui possono essere supportate transazioni arbitrarie complesse.
In questo BIP Andressen descrive che questo nuovo formato per gli indirizzi Bitcoin utilizzerà una lunghezza fissa di 20 byte. Che rappresenta l'hash dello script attraverso il quale si possono scambiare le criptovalute. E questo può essere facilmente utilizzato e scansionato da un codice QR o copiato e incollato rapidamente per eseguire la transazione desiderata.
Allo stesso modo, Andresen descrive che la funzione è integrata nei primi 4 byte della sequenza di byte checksum o checksum dell'indirizzo, che rafforza l'infrastruttura e la sicurezza della rete Bitcoin. Consentendo l'implementazione di un metodo di verifica molto più sicuro, ottimale ed efficiente rispetto al semplice troncamento di SHA-256. Allo stesso tempo, viene aggiunta una propria identità per ogni indirizzo creato nella rete.
BIP-0016
Allo stesso modo, in BIP 16, annunciato pochi mesi dopo BIP 13 da Gavin Andressen, P2SH è spiegato come un soft fork del protocollo Bitcoin progettato per consentire di stabilire indirizzi P2SH come nuovo tipo di transazione standard. Ciò cerca la semplificazione nell'uso degli script in qualsiasi tipo di transazione, non importa quanto complessa possa essere.
BIP 16, insieme a BIP 13, mira a ridurre al minimo i cambiamenti che devono essere fatti nell'infrastruttura di supporto della rete Bitcoin. Semplificare la condivisione degli script di blocco con altri utenti, indipendentemente dalla complessità di questi script.
Ad esempio, prima dell'implementazione di P2SH se si desiderava aggiungere uno script di blocco complesso sui propri bitcoin, era necessario condividere l'intero script di blocco con l'utente che vi ha trasferito. Ma con l'avvento di P2SH è ora possibile dare a quell'utente solo una parte dello script di blocco, piuttosto che l'intera sequenza. Cioè, solo un hash dello script può essere consegnato al posto dell'intero script.
Vantaggi dell'implementazione P2SH
Indirizzi con più firme
L'attivazione di P2SH lo farà consente agli utenti del sistema Bitcoin di effettuare o ricevere transazioni a indirizzi multi-firma. In effetti, questa è l'applicazione più comune nota per il formato P2SH. Poiché gli indirizzi in formato P2SH sono progettati per supportare un insieme di firme uguale o inferiore al numero di chiavi private ad esse collegate o associate. Cioè, in un indirizzo con più firme che ha 3 chiavi associate, le 3 chiavi possono essere i firmatari o, in caso contrario, solo 2 o 1 di esse.
Inoltre, Gli indirizzi Bitcoin che utilizzano il formato P2SH sono facilmente identificabili poiché iniziano con il numero 3. Ma sebbene sia spesso usato per creare indirizzi con più firme, non finché un indirizzo inizia con questo numero significa che è un indirizzo con più firme. Un indirizzo che inizia con il numero 3 sarà sempre un indirizzo P2SH, ma non sarà sempre un indirizzo multi-firma.
Sicurezza e Privacy
Attraverso il formato P2SH, un utente può finanziare qualsiasi script senza sapere quali sono le condizioni di spesa legate a quello script. Cioè, l'utente può inviare o condividere gli script associati a una transazione senza avere una conoscenza parziale o totale della configurazione di queste condizioni o istruzioni di sicurezza.
Pertanto, nel caso di essere un mittente, l'utente dovrà solo inviare le transazioni che desidera effettuare all'indirizzo P2SH. Non c'è bisogno di sapere come verranno spesi i fondi che hai inviato. Mentre nel caso di essere un destinatario o un destinatario, l'utente deve conoscere le condizioni di spesa associate a quella transazione. Ciò può variare tra la necessità di una firma multipla, una password o un'altra, per poter accedere alle criptovalute che ti sono state inviate.
Allo stesso modo, se lo script di blocco P2SH contiene solo un hash dello script, è impossibile sapere quale tipo di script proviene da quell'hash. Rendere impossibile per un utente sapere se una transazione proviene da un indirizzo privato o da una firma multipla.
Output non spesi più piccoli
Come tutte le uscite non spese o UTXOs di Bitcoin sono memorizzati nella RAM dei nodi, è importante salvare questo spazio di archiviazione. Pertanto, utilizzando script di blocco P2SH con sequenze più piccole, gli UTXO richiederanno meno spazio per essere archiviati, consentendo ai nodi di essere più efficienti dal punto di vista computazionale e di lavorare in modo agile e competente nella convalida delle transazioni di rete.
Tassi di commissione inferiori
Poiché le commissioni addebitate in Bitcoin non sono correlate agli importi trasferiti ma alla dimensione delle transazioni, un hash di script con una lunghezza inferiore consente al mittente di una transazione di inviare i propri fondi a indirizzi P2SH senza dover pagare commissioni elevate. Come accadrebbe nel caso di utilizzo degli script completi.
Sebbene questo possa non essere un problema serio oggi, potrebbe esserlo in futuro; quando i premi minerari sono ridotti ei nodi rimangono ai tassi di commissione di transazione.
SegWit
Gli indirizzi in formato P2SH sono compatibili con entrambi gli indirizzi SegWit come con quelli che non lo sono. Quindi gli utenti possono inviare i propri fondi ed effettuare transazioni in entrambi i portafogli con facilità.
Svantaggi dell'implementazione P2SH
La verità è che P2SH ha pochissimi inconvenienti o limitazioni. Poiché P2SH è stato implementato molto tempo dopo lo sviluppo degli script Bitcoin originali, gli sviluppatori hanno avuto l'opportunità di correggere le limitazioni che erano state presentate nella rete in quel momento. Tuttavia, le limitazioni presentate da P2SH sono:
Dimensione dei dati
P2SH occupa più spazio all'interno della blockchain. Ciò può portare a congestione e influenzare la capacità operativa della rete. Questo perché durante il blocco dei bitcoin in P2SH vengono aggiunti 25 byte in più allo script originale, lasciando uno script multisig 2 di 3 che utilizza P2SH con 278 byte. Rispetto a 253 byte per lo stesso script multi-firma 2 su 3 che utilizza P2MS.