P2SH-P2WPKH
Nested P2WPKH — um P2WPKH moderno embrulhado em um P2SH legado
BIP 141: Segregated Witness
P2SH-P2WPKH (também conhecido como P2WPKH Aninhado) é um tipo de script de travamento que embrulha um P2WPKH moderno dentro de um P2SH legado.
Ele permite enviar bitcoins para um endereço 3 legado (P2SH), mas também aproveitar o custo mais barato de taxa que vem de gastar uma saída P2WPKH moderna.
Portanto, o P2SH-P2WPKH serve como uma ponte até que carteiras e exchanges suportem o envio direto para endereços bc1q.
Não há razão para usar P2SH-P2WPKH se você tem a opção de usar P2WPKH diretamente. O P2SH-P2WPKH só é útil se você não consegue enviar para um endereço bc1q a partir da sua carteira ou exchange, mas consegue enviar para um endereço 3.
Propósito
Por que o P2SH-P2WPKH existe?
O P2WPKH é destravado pelo campo de testemunha, que oferece um desconto de espaço no bloco — então custa menos em taxas gastar um P2WPKH do que um P2PKH legado.
Porém, quando o SegWit foi ativado em 2016, carteiras e exchanges podiam não ter implementado o envio para P2WPKH (endereços bc1q). Então o P2SH-P2WPKH oferece a opção de enviar para um P2SH (endereço 3), permitindo aproveitar o desconto do P2WPKH mesmo sem suporte a Bech32.
Uso
Como o P2SH-P2WPKH funciona?
ScriptPubKey
O ScriptPubKey é um script de travamento P2SH padrão: OP_HASH160 <hash do script> OP_EQUAL. O hash é o HASH160 de um script de resgate, que é o próprio programa de testemunha P2WPKH.
ScriptSig
O ScriptSig contém um único item: o push de dados do Redeem Script, que é o programa de testemunha P2WPKH (OP_0 <hash da chave pública>).
Testemunha
A testemunha funciona como no P2WPKH normal: a assinatura seguida da chave pública.
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 P2WPKH: