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):