Visão geral
Uma assinatura digital no Bitcoin é uma prova criptográfica de que o detentor de uma chave privada autorizou uma transação específica. As assinaturas são o mecanismo fundamental que impede gastos não autorizados — sem uma assinatura válida correspondente à chave pública (ou hash de chave) que uma saída está bloqueada, o bitcoin não pode ser movido. O Bitcoin suporta dois esquemas de assinatura: ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica), usado desde o início do Bitcoin, e assinaturas Schnorr, introduzidas com a atualização Taproot.
Como as assinaturas funcionam
Processo de Assinatura:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Dados da │ │ Chave privada│ │ Assinatura │
│ transação │────>│ + algoritmo │────>│ (r, s) para │
│ (mensagem a │ │ de assinar │ │ ECDSA ou │
│ assinar) │ └──────────────┘ │ (R, s) para │
└──────────────┘ │ Schnorr │
└──────┬───────┘
│
Processo de Verificação: │
▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Dados da │ │ Chave pública│ │ Válida? │
│ transação │────>│ + assinatura │────>│ SIM / NÃO │
│ │ │ + verificar │ │ │
└──────────────┘ │ algoritmo │ └──────────────┘
└──────────────┘
Propriedade chave: Qualquer um pode verificar, apenas o detentor da chave pode assinar
ECDSA vs. Schnorr
| Propriedade | ECDSA | Schnorr |
|---|---|---|
| Em uso desde | 2009 (lançamento do Bitcoin) | 2021 (ativação do Taproot) |
| Tamanho da assinatura | 71-73 bytes (DER) | 64 bytes (fixo) |
| Agregação | Não suportada | Suportada (MuSig) |
| Verificação em lote | Limitada | Eficiente |
| Tipos de saída | P2PKH, P2WPKH, P2SH | Apenas P2TR |
O que uma assinatura cobre
Uma assinatura não assina cegamente toda a transação. A bandeira sighash especifica quais partes da transação são incluídas na mensagem assinada. O SIGHASH_ALL padrão se compromete com todas as entradas e saídas, garantindo que nenhuma parte da transação possa ser modificada após a assinatura.
As assinaturas na transação
Antes do SegWit, as assinaturas eram colocadas no campo scriptSig de cada entrada. Com o SegWit, as assinaturas são movidas para a seção de testemunha, que é segregada dos dados da transação usados para calcular o ID de transação. Essa separação corrigiu a maleabilidade de transações e habilitou o desconto de testemunha.
Multisig e assinaturas agregadas
O multisig tradicional requer múltiplas assinaturas ECDSA separadas on-chain (por exemplo, multisig 2-de-3 precisa de 2 assinaturas e 3 chaves públicas). As assinaturas Schnorr habilitam a agregação de chaves MuSig, onde múltiplos signatários colaboram para produzir uma única assinatura agregada que é indistinguível de uma assinatura de chave única on-chain. Isso economiza espaço e melhora a privacidade.
Equívoco comum
Uma assinatura não criptografa nada. Não é um segredo — as assinaturas são publicamente visíveis em cada transação Bitcoin na blockchain. A propriedade de segurança é que apenas o detentor da chave privada pode criar uma assinatura válida, mas uma vez criada, qualquer um pode verificá-la. Revelar uma assinatura não compromete a chave privada.