Script

A mini linguagem de programação que trava e destrava bitcoins

Script é uma mini linguagem de programação usada como mecanismo de travamento das saídas nas transações de bitcoin.

Se um script completo (destravamento + travamento) é válido, a saída é "destravada" e pode ser gasta.

A Linguagem Script

O que é Script?

Script é uma linguagem de programação bem básica. Ela consiste em duas coisas:

1. Opcodes

Os opcodes são comandos que realizam operações — por exemplo, OP_DUP (duplica o item do topo da pilha), OP_HASH160 (faz o hash do item do topo), OP_EQUALVERIFY (verifica se dois itens são iguais) e OP_CHECKSIG (verifica uma assinatura contra uma chave pública). Cada opcode é representado por um único byte.

2. Dados

Os elementos de dados dentro de um Script (ex.: chaves públicas, assinaturas) precisam ser empurrados manualmente para a pilha usando um opcode de push. O opcode usado depende de quantos bytes você quer empurrar:

Execução

Como um script é executado?

O Script é uma linguagem baseada em pilha (stack). Os comandos são executados da esquerda para a direita. Para gastar uma saída, o ScriptSig (destravamento) é concatenado com o ScriptPubKey (travamento), e o resultado é executado:

Se, ao final da execução, o item do topo da pilha for "verdadeiro" (qualquer valor diferente de zero/vazio), o script é válido e a saída é destravada.

Validade

Um script é inválido se: a execução terminar com "falso" no topo da pilha; um opcode OP_VERIFY falhar; ou um opcode inválido/desabilitado (como OP_RETURN) for encontrado.

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

    Scripts Padrão

    Quais scripts os nós retransmitem?

    Embora você possa criar qualquer script personalizado, os nós só retransmitem um conjunto de padrões "padrão" (standard). Os tipos padrão são:

    Legados:

    SegWit / Taproot:

    Os nós não retransmitem scripts não padrão para proteger os usuários de criar travas com erros (e por isso scripts complexos são geralmente embrulhados em P2SH ou P2WSH).

    Limites

    Quais são os limites do Script?

    O Bitcoin Script é intencionalmente não Turing-completo (não tem laços), o que mantém a execução previsível e segura.