P2WSH

Pay To Witness Script Hash — a versão segwit do P2SH

BIP 141: Segregated Witness

P2WSH (Pay To Witness Script Hash) é um script de travamento que trava uma saída ao hash de um script de travamento personalizado.

Funciona da mesma forma que um P2SH legado, mas é destravado pelo campo de testemunha em vez do ScriptSig.

O benefício de usar P2WSH em vez de P2SH é que o campo de testemunha carrega menos peso, então você paga menos em taxas ao destravar um P2WSH.

O P2WSH foi introduzido na atualização Segregated Witness como substituto do P2SH.

Uso

Como o P2WSH funciona?

ScriptPubKey (trava)

Para criar uma trava P2WSH, você só precisa colocar um OP_0 seguido de um push de dados de 32 bytes:

OP_0 <hash do script (32 bytes)>

Esse push de dados é o Script Hash, e é o hash SHA-256 único de um script de travamento personalizado.

O OP_0 é o byte de versão. Um script que começa com OP_0 seguido de um push de 32 bytes é sempre interpretado como P2WSH (enquanto 20 bytes é P2WPKH).

ScriptSig

O ScriptSig precisa estar vazio.

Campo de Testemunha (destrava)

Para destravar um P2WSH, você coloca o Witness Script (o script de travamento original que formou o Script Hash) como o último item do campo de testemunha. Todos os itens antes dele são o que é necessário para destravá-lo.

Diferença em relação ao P2SH: no P2SH, o hash do script é o HASH160 (20 bytes); no P2WSH, é o SHA-256 único (32 bytes). Isso reduz a chance de colisões em scripts de alto valor.

Ferramentas

O endereço P2WSH é uma codificação Bech32 da versão de testemunha 0 + o hash do script de 32 bytes (endereços começando com bc1q, mas mais longos que os P2WPKH):

Ícone Ferramenta SHA-256
Ícone Ferramenta

SHA-256

SHA-256 simples. Faz o hash dos bytes de dados usando a função de hash SHA-256.

0 bytes
Ícone Função de Hash SHA-256
0 bytes
Ícone Ferramenta Endereço (Bech32)
Ícone Ferramenta

Endereço (Bech32)

Crie um endereço segwit (P2WPKH, P2WSH, P2TR) a partir de uma versão de testemunha e um programa de testemunha.

P2WPKH = 20 bytes (hash160) · P2WSH = 32 bytes (sha256) · P2TR = 32 bytes