Vai al contenuto
buybitcoinsmart

Glossario / Indirizzi e chiavi

P2WSH

Noto anche come Pay-to-Witness-Script-Hash.

Che cos'è P2WSH?
P2WSH blocca i bitcoin su un impegno SHA-256 di 32 byte verso uno script witness, offrendo ai contratti molto più spazio rispetto a P2SH e uno sconto sullo script quando viene rivelato.

Specificato nel BIP-141.

Pay to witness script hash è l'output SegWit versione 0 per tutto ciò che è più complicato di una singola chiave, scritto come un indirizzo bc1q di 62 caratteri. Bitcoin Core trasmette una spesa il cui script witness arriva a 3.600 byte e il cui witness contiene fino a 100 elementi dello stack, mentre un redeem script P2SH si ferma a 520 byte. Lo spazio in più è il motivo per cui i contratti seri si sono spostati qui.

Come funziona

Un output P2WSH è il byte 0x00 per la versione witness 0 seguito da un push di 32 byte, 34 byte in totale. Quei 32 byte sono un semplice SHA-256 dello script witness serializzato, non il RIPEMD-160 di uno SHA-256 usato altrove in bitcoin.

La scelta è deliberata. Un impegno da 160 bit offre circa 80 bit di resistenza alle collisioni, il che è scomodo quando una controparte contribuisce a scegliere cosa finisce nello script e potrebbe cercare due script che condividono un hash. Un impegno da 256 bit elimina il problema. P2WPKH a chiave singola mantiene l'hash più corto perché solo una parte sceglie la chiave, e di conseguenza l'indirizzo resta 20 caratteri più corto.

Per spendere si inseriscono gli argomenti nello stack del witness e si termina con lo script serializzato. Un nodo calcola l'hash di quell'ultimo elemento, lo confronta con l'impegno e poi esegue lo script con ciò che resta. La policy di relay di Bitcoin Core fissa i limiti in policy.h: 3.600 byte per lo script, 100 elementi nello stack e 80 byte per elemento.

Le commissioni spiegano la migrazione. Una spesa 2 di 3 qui occupa circa 104,5 vbyte, perché sia le firme sia l'intero script da 105 byte viaggiano nel witness a un'unità di peso per byte. La stessa policy con P2SH costa circa 297 vbyte. È anche raggiungibile il limite di consenso di 20 chiavi su OP_CHECKMULTISIG, dato che venti chiavi occupano meno di 700 byte.

Dove lo vedi

Ogni canale Lightning è finanziato con un output P2WSH 2 di 2, il che rende questo uno dei tipi di script più comuni sulla catena anche se poche persone digitano mai l'indirizzo. Anche la custodia istituzionale, le policy miniscript e le clausole di eredità con blocco temporale lo usano.

Su un block explorer un output P2WSH non speso è una stringa bc1q di 62 caratteri e nulla più. Sembra uguale sia che protegga due chiavi sia che ne protegga venti, e le condizioni emergono solo quando i bitcoin si muovono.

I backup devono includere lo script. Una frase di recupero rigenera chiavi, non script arbitrari, quindi conserva il descriptor o i byte esatti dello script insieme alla frase di recupero e verifica di poter ripristinare da essi prima che l'indirizzo contenga denaro reale.

P2WSH vs script witness

P2WSH è l'output; lo script witness è il contenuto verso cui si impegna. L'output contiene 32 byte di hash e nulla più, quindi non trasmette alcuna informazione sulle condizioni associate, e nulla dello script appare on-chain finché una spesa non lo pubblica. Di conseguenza l'obbligo è sbilanciato. Un mittente ha bisogno solo dell'indirizzo e può pagare senza capire nulla. Il destinatario ha bisogno per sempre dei byte esatti dello script, perché perderli rende i bitcoin non spendibili, non importa quante chiavi private sopravvivano.

Da non confondere con

Domande frequenti

Perché un indirizzo P2WSH è più lungo di un normale indirizzo bc1q?

Perché codifica un hash di 32 byte invece di uno di 20 byte, dando 62 caratteri invece di 42. L'impegno più lungo usa un semplice SHA-256, che tiene le collisioni fuori portata quando più parti contribuiscono a costruire lo script.

Serve P2WSH per un wallet normale?

No. Un wallet a chiave singola usa P2WPKH o Taproot e non lo tocca mai. P2WSH è importante per le cassaforti multisig, il finanziamento dei canali Lightning e qualsiasi policy di spesa che debba essere scritta come script.

Leggi anche

Termini correlati

Altro in Indirizzi e chiavi

Leggi questa pagina in inglese