Visão geral
Um script de bloqueio (formalmente chamado scriptPubKey) é a parte de uma saída de transação Bitcoin que define as condições sob as quais o bitcoin pode ser gasto. Cada saída em uma transação Bitcoin contém um valor e um script de bloqueio. Para gastar essa saída em uma transação futura, o gastador deve fornecer um script de desbloqueio (scriptSig) ou dados testemunha que satisfaçam essas condições.
Tipos comuns de scripts de bloqueio
P2PKH (Pay-to-Public-Key-Hash):
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
P2SH (Pay-to-Script-Hash):
OP_HASH160 <scriptHash> OP_EQUAL
P2WPKH (Pay-to-Witness-Public-Key-Hash):
OP_0 <pubKeyHash de 20 bytes>
P2TR (Pay-to-Taproot):
OP_1 <chave pública tweaked de 32 bytes>
Como funciona o gasto
Quando alguém quer gastar uma saída, constrói uma nova transação com uma entrada que referencia a saída. A entrada inclui um script de desbloqueio que fornece os dados (assinaturas, chaves públicas, pré-imagens) necessários para fazer o script de bloqueio avaliar como verdadeiro. Os nós Bitcoin executam ambos os scripts juntos para verificar o gasto.
Script de desbloqueio (entrada) + Script de bloqueio (saída)
<sig> <pubKey> + OP_DUP OP_HASH160 ...
│ │
└──── Avaliados ──────────────┘
juntos
Deve retornar TRUE
Casos extremos
Um script de bloqueio OP_RETURN cria uma saída comprovadamente não gastável — nenhum script de desbloqueio pode satisfazê-lo. Isso é usado intencionalmente para incorporar dados. Por outro lado, scripts como OP_TRUE tornariam as saídas gastáveis por qualquer pessoa, razão pela qual a construção cuidadosa de scripts é crítica para a segurança.