P2SH-P2WSH

Nested P2WSH — um P2WSH moderno embrulhado em um P2SH legado

BIP 141: Segregated Witness

P2SH-P2WSH (também conhecido como P2WSH Aninhado) é um tipo de script de travamento que embrulha um P2WSH moderno dentro de um P2SH legado.

Ele permite enviar bitcoins para um endereço 3 legado (P2SH), mas depois aproveitar o custo mais barato de taxa de gastar uma saída P2WSH moderna.

Não há razão para usar P2SH-P2WSH se você tem a opção de usar P2WSH diretamente. Ele só é útil se você não consegue enviar para um endereço bc1q, mas consegue enviar para um endereço 3.

Propósito

Por que o P2SH-P2WSH existe?

Um P2SH-P2WSH serve ao mesmo propósito que um P2SH-P2WPKH: você envia bitcoins para um endereço 3 (P2SH), mas os destrava depois como se tivesse usado um P2WSH moderno. Isso permite aproveitar o desconto da testemunha mesmo que a carteira ou exchange não suporte enviar para um endereço bc1q (P2WSH) diretamente.

Uso

Como o P2SH-P2WSH funciona?

Um P2SH-P2WSH usa tanto o campo ScriptSig quanto o de testemunha para ser destravado.

ScriptPubKey

O ScriptPubKey é um script de travamento P2SH padrão: OP_HASH160 <hash do script> OP_EQUAL.

ScriptSig

O ScriptSig contém um único item: o push de dados do Redeem Script, que é o programa de testemunha P2WSH (OP_0 <hash do script de 32 bytes>).

Testemunha

A testemunha funciona como no P2WSH normal: os itens necessários para destravar o Witness Script, seguidos do próprio Witness Script como último item.

Endereço

O endereço é um endereço P2SH normal (Base58Check com prefixo 0x05, começando com "3"), onde o hash é o HASH160 do redeem script P2WSH:

Ícone Ferramenta HASH160
Ícone Ferramenta

HASH160

SHA-256 + RIPEMD-160. Usado para encurtar uma chave pública ou script antes de converter em um endereço.

Uma chave pública ou script, por exemplo

0 bytes
Ícone Função de Hash SHA-256
Ícone Função de Hash RIPEMD-160

RIPEMD-160(SHA-256(dados))

0 bytes
Ícone Ferramenta Endereço (Base58)
Ícone Ferramenta

Endereço (Base58)

Crie um endereço Base58Check (P2PKH ou P2SH) a partir de um hash de 20 bytes + um byte de versão.