Vai al contenuto
buybitcoinsmart

Glossario / Indirizzi e chiavi

P2WPKH

Noto anche come indirizzo SegWit nativo, Pay-to-Witness-Public-Key-Hash, indirizzo bc1q.

Che cos'è P2WPKH?
P2WPKH sposta la firma e la chiave pubblica fuori dall'input e nel witness, dove ogni byte vale un'unità di peso invece di quattro.

Specificato nel BIP-141.

Gli output nativi SegWit a chiave singola sono scritti come indirizzi bc1q di 42 caratteri. Lo script di blocco è di 22 byte, e spendere un input richiede circa 68 vbyte contro circa 148 dell'equivalente legacy. Bitcoin Core assegna questo formato per impostazione predefinita dalla versione 0.20.0, e la maggior parte degli altri wallet ha seguito.

Come funziona

Un output P2WPKH non contiene opcode nel senso abituale. È il byte 0x00, che indica la versione del witness 0, seguito da un push dell'HASH160 di 20 byte della tua chiave pubblica compressa: 22 byte, riconosciuti dai nodi come witness program anziché eseguiti come script. L'input che lo spende lascia il suo scriptSig completamente vuoto e inserisce due elementi nel campo witness, la firma e la chiave.

Il risparmio deriva da come sono misurati i blocchi. Il BIP-141 definisce il peso del blocco come la dimensione di base moltiplicata per tre più la dimensione totale, con un limite di 4.000.000 unità di peso, il che equivale a far costare quattro unità ogni byte non witness e una unità ogni byte witness. Un input P2WPKH ha 41 byte non witness che pesano 164 unità e circa 108 byte witness che pesano 108, per 272 unità in totale. Dividendo per quattro ottieni i 68 vbyte che paghi effettivamente.

Due effetti secondari contano quanto lo sconto. Il BIP-143 ha sostituito l'algoritmo di hashing delle firme, così il lavoro di firma cresce in modo lineare con il numero di input invece che in modo quadratico, ed è per questo che un wallet hardware gestisce rapidamente una transazione SegWit di grandi dimensioni. E poiché l'identificatore della transazione non copre più il witness, un terzo non può più alterare una firma in transito per cambiare il txid.

Dove lo vedi

Apri quasi qualsiasi wallet rilasciato negli ultimi anni e la schermata di ricezione mostra una stringa bc1q. I wallet le derivano dal ramo BIP-84, percorso m/84'/0'/0', che SLIP-132 abbina al prefisso della chiave estesa zpub, così un backup ripristinato in un software diverso arriva agli stessi indirizzi.

A questo punto essenzialmente ogni modulo di prelievo di un exchange accetta bc1q. Se uno lo rifiuta, sta eseguendo codice di convalida scritto prima del 2017, e la risposta pratica è prelevare verso un formato che accetta e spostare i bitcoin in seguito da solo.

Una cosa che bc1q non ti dice è a cosa paga l'output. Un indirizzo bc1q di 42 caratteri è una chiave singola; uno di 62 caratteri è uno script. Entrambi sono witness versione 0 ed entrambi usano bech32, quindi la lunghezza è l'unica differenza visibile.

P2WPKH vs SegWit annidato

P2WPKH e SegWit annidato spendono la stessa chiave e impegnano lo stesso hash di 20 byte. La differenza è un involucro. SegWit annidato inserisce quel witness program di 22 byte dentro un output P2SH, così l'indirizzo può essere una stringa Base58 che inizia con 3, e i 23 byte non witness in più nell'input che lo spende pesano 92 unità, che è esattamente il divario tra 91 vbyte e 68. La sicurezza è identica. Rinunci a circa un terzo del risparmio sulle commissioni disponibile in cambio di un indirizzo che il software molto vecchio accetta.

Da non confondere con

Domande frequenti

bc1q è la stessa cosa del SegWit nativo?

Sì per i wallet a chiave singola. Un indirizzo bc1q di 42 caratteri è un output P2WPKH, il formato SegWit nativo per una chiave. Un indirizzo bc1q di 62 caratteri è anch'esso SegWit nativo ma paga a uno script anziché a una chiave.

Quanto fa risparmiare davvero il SegWit nativo?

Circa la metà del costo di spesa. Un input P2WPKH pesa 272 unità di peso, cioè 68 vbyte, contro circa 148 vbyte di un input legacy. Il risparmio si ottiene quando spendi, non quando ricevi.

Leggi anche

Termini correlati

Altro in Indirizzi e chiavi

Leggi questa pagina in inglese