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:

  1. O código de destravamento necessário para destravar o Redeem Script.
  2. 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:

Ícone Ferramenta Base58
Ícone Ferramenta

Base58

Converta entre hexadecimal e a codificação Base58.

0 bytes

Um endereço legado ou chave privada WIF, por exemplo

0 dígitos
Passos [mostrar]
 

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:

  1. Passo 1: Execução padrão. O Redeem Script é hasheado e comparado para ver se é igual ao Script Hash.
  2. 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"):

Í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.

Ícone Ferramenta

Interpretador de Script

Execute um script passo a passo e veja a pilha mudar a cada opcode. O ScriptSig roda primeiro, depois o ScriptPubKey.