P2SH
Pay To Script Hash — trava bitcoins ao hash de um script
P2SH (Pay To Script Hash) é um script de travamento que permite travar bitcoins ao hash de um script.
Isso permite usar scripts de travamento personalizados, ao mesmo tempo em que fornece ao remetente um endereço para enviar os bitcoins (em vez de ele ter que usar o script personalizado completo).
O script personalizado completo é chamado de Redeem Script (script de resgate) e é revelado quando você vai gastar os bitcoins depois.
Em resumo, o P2SH é uma solução prática para colocar scripts personalizados nos bitcoins. É mais comumente usado para travar bitcoins a scripts complexos, como o P2MS.
Script Legado. Ainda é usado ocasionalmente, mas o P2WSH é agora a escolha preferida (funciona da mesma forma).
Uso
Como o P2SH funciona?
ScriptPubKey (trava)
O script de travamento P2SH contém o hash de outro script (Script Hash), cercado pelos opcodes HASH160 e EQUAL:
OP_HASH160 <hash do script> OP_EQUAL ScriptSig (destrava)
O script de destravamento de um P2SH consiste em duas partes:
- O código de destravamento necessário para destravar o Redeem Script.
- Um push de dados do próprio Redeem Script.
Em outras palavras, o ScriptSig contém tanto o script de destravamento quanto o script de travamento completo. Você pode inspecionar o Redeem Script decodificando-o do hex:
Base58
Execução
O P2SH é uma forma especial de script e é executado de forma um pouco diferente dos scripts "normais".
Um script P2SH é executado em dois passos:
- Passo 1: Execução padrão. O Redeem Script é hasheado e comparado para ver se é igual ao Script Hash.
- Passo 2: Execução do Redeem Script (parte especial). O Redeem Script é desserializado e executado como se fosse o script de travamento.
Ferramentas
O hash do script é o HASH160 do Redeem Script. O endereço P2SH é uma codificação Base58Check desse hash com o prefixo de versão 0x05 (endereços começando com "3"):