Bitcoin Script

Definição

Bitcoin Script é uma linguagem de programação baseada em pilha e Turing incompleta, usada para definir as condições sob as quais Transações Bitcoin pode ser gasto. É um sistema de script simples, porém poderoso, incorporado em cada saída (script de bloqueio ou scriptPubKey) e entrada (script de desbloqueio ou scriptSig) de transação Bitcoin, permitindo condições de gasto programáveis ​​sem expor a rede Bitcoin aos riscos de uma plataforma de contratos inteligentes Turing-completa. O Bitcoin Script permite carteiras multi-assinaturatransações com bloqueio de tempo, contratos bloqueados por hash, Canais de pagamento e trocas atômicas — tudo isso sem a necessidade de uma blockchain de uso geral.

 Origem e história

DataEvento
2008Satoshi Nakamoto cria o Bitcoin Script como parte do projeto do white paper do Bitcoin.
2009Script Bitcoin implantado no bloco gênese do Bitcoin; Pay-to-Public-Key (P2PK) é o primeiro tipo de script.
2012BIP 16: Introdução do Pay-to-Script-Hash (P2SH), que permite scripts de resgate complexos.
2015A função CHECKLOCKTIMEVERIFY (CLTV) foi adicionada, permitindo bloqueios temporais absolutos em transações.
2016A função CHECKSEQUENCEVERIFY (CSV) foi adicionada, permitindo bloqueios temporais relativos para canais de pagamento.
2017SegWit introduz Pay-to-Witness-Public-Key-Hash (P2WPKH) e P2WSH.
2021A atualização do Taproot (BIP 340/341/342) introduz assinaturas Schnorr e MAST via Tapscript.
2023Os números ordinais do Bitcoin utilizam scripts para inscrever dados em dados de testemunha.
2023O debate sobre a retomada do BIP 347 (OP_CAT) se intensifica devido a possíveis extensões de script.

 “O Bitcoin Script é propositalmente limitado — e isso é uma característica, não um defeito. Simplicidade é segurança.” — Greg Maxwell, desenvolvedor do Bitcoin Core

 Como Funciona

 EXECUÇÃO DO SCRIPT DE TRANSAÇÃO BITCOIN ═════════════════════════════════════════════════════════════════ SCRIPT DE BLOQUEIO (scriptPubKey) — na saída UTXO: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG (P2PKH padrão — Pagamento para Hash de Chave Pública)

SCRIPT DE DESBLOQUEIO (scriptSig) — fornecido por quem gastou:

EXECUÇÃO (baseada em pilha): A pilha começa vazia

  1. Empurrar → Pilha: [assinatura]
  2. Empurrar → Pilha: [sig, pubKey]
  3. OP_DUP: topo duplicado → Pilha: [sig, pubKey, pubKey]
  4. OP_HASH160: hash superior → Pilha: [sig, pubKey, pubKeyHash]
  5. Empurrar → Pilha: [sig, pubKey, pubKeyHash, esperado]
  6. OP_EQUALVERIFY: comparar → Pilha: [sig, pubKey] (se igual)
  7. OP_CHECKSIG: verificar assinatura → Pilha: [TRUE]

Resultado: VERDADEIRO = a transação é válida e UTXO é gasto

TIPOS DE SCRIPT: P2PK → Pagamento para chave pública (legado) P2PKH → Pagamento para hash de chave pública (mais comum) P2SH → Pagamento para hash de script (multi-assinatura, complexo) P2WPKH → SegWit nativo (bech32) P2TR → Pagamento para Taproot (mais eficiente/privado) ══════════════════════════════════════════════════════ 

Tipo de scriptFormato de EndereçoCaso de usoPolítica de Privaciade
P2PK(sem endereço padrão)Bitcoin original, Moedas SatoshiBaixo
P2PKH1… (Base58)Pagamentos padrão de assinatura únicaBaixo
P2SH3… (Base58)Scripts complexos com múltiplas assinaturasSuporte:
P2WPKHbc1q… (bech32)SegWit nativo, taxas mais baixasSuporte:
P2WSHbc1q… (bech32)Scripts SegWit nativosSuporte:
P2TRbc1p… (praia32m)Raiz tabular, Tapscript, OrdinaisAlto

 Em termos simples

  1. Fechadura e chaveCada Bitcoin emitido possui um bloqueio (script de bloqueio) — para gastá-lo, você precisa fornecer a chave correta (script de desbloqueio) que atenda às condições.
  2. Máquina de empilharO script é executado empilhando valores em uma pilha e executando operações — é simples, previsível e propositalmente não Turing-completo para evitar loops infinitos.
  3. Exemplo de assinatura múltiplaUm script multisig 2 de 3 requer 2 das 3 assinaturas de chave privada designadas para desbloquear fundos — usado para tesourarias de equipe e carteiras seguras.
  4. Privacidade TaprootTaproot cria sistemas multi-assinatura complexos e scripts de contratos inteligentes elas são idênticas às transações simples de assinatura única na blockchain — melhorando a privacidade.
  5. Limites deliberadosDiferentemente do Solidity do Ethereum, o Bitcoin Script não pode acessar dados externos, criar loops ou chamar outros contratos — tornando-o previsível e seguro.

 Exemplos do mundo real

CenárioTipo de scriptBeneficiar
Trocar carteira quenteP2SH 2 de 3 multisigRequer 2 das 3 chaves para funcionar — protege contra roubo de uma única chave.
Canal da Lightning NetworkHTLC (Contrato de Hash com Bloqueio Temporal)Permite pagamentos instantâneos de BTC fora da blockchain.
Troca atômica BTC↔LTCHTLC em ambas as cadeiasTroca entre cadeias sem intermediários e sem necessidade de confiança.
Herança com prazo determinadoVERIFICAR TEMPO DE BLOQUEIOOs fundos só poderão ser utilizados após uma data específica.
Inscrição ordinaldados de testemunha P2TRNFT/inscrição de dados em testemunho Taproot

 Vantagens

A VantagemDetalhe
TotalO design Turing incompleto impede vetores de ataque complexos possíveis em contratos inteligentes.
PrevisibilidadeCada script é executado deterministicamente com computação limitada.
ExpressividadeHabilita assinaturas múltiplas, bloqueios temporais e HTLCs suficientes para a Lightning Network.
AvançadaOs scripts são compactos, minimizando os dados de transação e as taxas.
Privacidade (Taproot)Condições de gastos complexas indistinguíveis de pagamentos simples.

 Desvantagens e Riscos

Gestão deDetalhe
Funcionalidade limitadaNão é possível implementar algo complexo. Defi, oráculos, ou contratos inteligentes arbitrários
Complexidade do scriptScripts avançados com múltiplas assinaturas são complexos de implementar corretamente.
Problemas com formatos legadosOs tipos de script mais antigos (P2PK, P2PKH) têm menor privacidade do que as alternativas modernas.
Códigos de operação desativadosDiversos opcodes poderosos (OP_CAT, OP_CHECKSIGFROMSTACK) foram desativados por motivos de segurança.
Riscos de bugs de scriptErros em scripts personalizados podem bloquear fundos permanentemente.

Dicas de gerenciamento de risco:

  • Sempre teste implementações de scripts personalizados na rede de testes antes da rede principal.
  • Use endereços P2TR (Taproot) para obter a melhor privacidade e compatibilidade futura.
  • Para carteiras com múltiplas assinaturas, utilize implementações já estabelecidas (Bitcoin Core, Sparrow Wallet) em vez de scripts personalizados.
  • Armazene os scripts de resgate (P2SH) em segurança — você precisa deles para gastar os fundos.

 Perguntas frequentes

P: Por que o Bitcoin Script não é Turing-completo?

A: A completude de Turing permite loops infinitos — o que é perigoso em uma blockchain onde todos os nós precisam executar todos os scripts. A incompletude deliberada do Bitcoin Script garante que os scripts terminem de forma previsível, prevenindo ataques de negação de serviço e possibilitando a verificação formal dos scripts.

P: O que é um HTML em um script Bitcoin?

A: Um Contrato de Bloqueio Temporal por Hash (HTLC) é um script que permite que um pagamento seja reivindicado ao revelar um segredo (pré-imagem) que, ao ser criptografado, resulta em um valor predeterminado, ou reembolsado ao remetente após um período de tempo limite. Os HTLCs são o bloco de construção fundamental da Lightning Network.

P: Como o Taproot melhora o Bitcoin Script?

A: O Taproot (BIP 340/341/342) introduz assinaturas Schnorr, permitindo a agregação de chaves, MAST (Árvores de Sintaxe Abstrata Merklizada) via Tapscript, possibilitando scripts complexos enquanto revela apenas os ramos executados, e tornando todas as saídas do Taproot visualmente idênticas — melhorando significativamente a privacidade e a eficiência.

Dica UPay: Ao configurar uma carteira Bitcoin, use endereços Taproot (bc1p…) para obter a melhor combinação de privacidade, eficiência e compatibilidade futura. A maioria das carteiras modernas, como Sparrow e Phoenix, oferece suporte nativo ao Taproot.

Aviso: Este conteúdo tem fins meramente educativos e não constitui aconselhamento financeiro ou técnico.

UPay — Tornando as criptomoedas uma enciclopédia

Notícias e Eventos