← Voltar

Um estudo sobre o Bitcoin — Scripts de Transação

Scripts de Transação

Introdução: O que é um Script?

No ecossistema do Bitcoin, um script é uma linguagem de programação simples, baseada em pilha (stack-based), e deliberadamente não Turing-completa. Sua função principal é definir as condições que devem ser satisfeitas para que uma saída de transação (um UTXO) possa ser gasta. O script funciona como um "cadeado" que protege os fundos, determinando quem pode acessá-los e sob quais condições.

Essa simplicidade é uma escolha de design deliberada para garantir a segurança e a auditabilidade do sistema. Ao contrário de linguagens de programação complexas, o script do Bitcoin possui um conjunto limitado de operações (opcodes) que são determinísticas e previsíveis, eliminando ambiguidades e vetores de ataque potenciais.

A Execução do Script: scriptSig e scriptPubKey

A validação de uma transação no Bitcoin depende da interação entre dois componentes principais:

scriptPubKey (Script de Chave Pública)
Colocado na saída de uma transação. Este é o "script de bloqueio" (locking script) que especifica as condições que devem ser atendidas para gastar os bitcoins. Por exemplo: "Forneça uma assinatura digital que corresponda a esta chave pública".
scriptSig (Script de Assinatura)
Colocado na entrada de uma transação. Este é o "script de desbloqueio" (unlocking script) que contém os dados necessários para satisfazer as condições do scriptPubKey. Por exemplo: a própria assinatura digital.

O processo de validação funciona da seguinte maneira: um nó da rede Bitcoin concatena o scriptSig da entrada com o scriptPubKey da saída correspondente e executa o script resultante. A transação é válida apenas se a execução for concluída sem erros e com um valor true no topo da pilha.

O Tipo de Script Mais Comum: P2PKH (Pay-to-Public-Key-Hash)

O P2PKH é o tipo de script mais utilizado para transações simples, associado aos endereços que começam com '1'. Este tipo de script permite que os bitcoins sejam enviados para o hash de uma chave pública, oferecendo um equilíbrio entre segurança e conveniência.

Um script P2PKH é validado através dos seguintes passos:

  1. O scriptSig fornece uma assinatura e a chave pública do proprietário.
  2. O scriptPubKey verifica se a assinatura é válida para a chave pública fornecida.
  3. Em seguida, ele calcula o hash (SHA-256 e RIPEMD-160) da chave pública fornecida e o compara com o hash do endereço de destino.
  4. Se a assinatura for válida e os hashes corresponderem, os fundos podem ser gastos.
O formato P2PKH foi o padrão inicial do Bitcoin e ainda é amplamente utilizado. Ele oferece um bom equilíbrio entre privacidade, segurança e eficiência.

Flexibilidade e Outros Tipos de Script

O sistema de scripts do Bitcoin é mais poderoso do que apenas o P2PKH, permitindo a criação de contratos mais complexos:

Conclusão: A Elegância da Simplicidade

O sistema de scripting do Bitcoin é uma peça de engenharia notável. Ele oferece um equilíbrio entre simplicidade (para garantir a segurança) e flexibilidade (para permitir a programação monetária). Essa linguagem de script é a base que permite que o Bitcoin seja mais do que um simples sistema de pagamento, abrindo caminho para o que hoje conhecemos como contratos inteligentes de forma segura e descentralizada.

Apesar de suas limitações deliberadas (como não ser Turing-completo), o sistema de script do Bitcoin demonstrou ser extremamente robusto e versátil ao longo dos anos, suportando não apenas transações simples, mas também uma variedade crescente de casos de uso mais complexos, desde carteiras multisig até tokens e protocolos de segunda camada como a Lightning Network.