Visão Geral
As assinaturas digitais são o mecanismo fundamental pelo qual os proprietários de Bitcoin provam que têm o direito de gastar seus fundos. Quando um usuário cria uma transação, ele assina cada entrada com a chave privada correspondente ao endereço que detém os fundos. Os nós e mineradores verificam essas assinaturas antes de aceitar a transação, garantindo que apenas o proprietário legítimo possa mover seus bitcoin.
Como Funciona
O processo de assinatura e verificação segue um padrão geral:
ASSINATURA (pelo remetente):
┌─────────────────────┐
│ Dados da Transação │
│ (entradas, saídas) │
└────────┬────────────┘
│
▼
┌─────────────────────┐ ┌─────────────┐
│ Função de Hash │ ◄───│ Chave Privada│
└────────┬────────────┘ └─────────────┘
│
▼
┌─────────────────────┐
│ Assinatura Digital │
│ (valores r, s) │
└─────────────────────┘
VERIFICAÇÃO (por cada nó):
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Assinatura │ │ Chave Pública│ │ Dados da Tx │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────┬────────┘─────────────────┘
▼
┌──────────────┐
│ Válido: ✓/✗ │
└──────────────┘
Tipos de Assinatura no Bitcoin
ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica): O esquema de assinatura original usado no Bitcoin desde o lançamento. As assinaturas ECDSA usam a curva secp256k1 e produzem assinaturas de aproximadamente 70-72 bytes. Todos os tipos de transação anteriores ao Taproot usam ECDSA.
Assinaturas Schnorr: Introduzidas com a atualização Taproot em novembro de 2021, as assinaturas Schnorr oferecem várias vantagens: são matematicamente mais simples, comprovadamente seguras sob suposições padrão, suportam agregação nativa de chaves e assinaturas, e têm sempre exatamente 64 bytes. As assinaturas Schnorr são usadas em saídas Pay-to-Taproot (P2TR).
Flags Sighash
Ao assinar uma transação, o assinante pode escolher quais partes dos dados da transação a assinatura cobre usando flags sighash:
- SIGHASH_ALL (padrão): Assina todas as entradas e saídas
- SIGHASH_NONE: Assina todas as entradas mas nenhuma saída
- SIGHASH_SINGLE: Assina todas as entradas e apenas a saída no mesmo índice
- SIGHASH_ANYONECANPAY: Pode ser combinado com os acima; assina apenas uma entrada
Conceitos Errôneos Comuns
- As assinaturas digitais não criptografam nada. Elas fornecem autenticação e integridade, mas não confidencialidade.
- A chave privada nunca é transmitida nem incorporada na transação. Apenas a assinatura e a chave pública são incluídas.
- Cada assinatura é única para os dados específicos da transação sendo assinada, portanto uma assinatura não pode ser reutilizada para uma transação diferente.