Skip to main content

Assinatura | Bitcoin Glossary | Mapping Bitcoin

Assinatura

Criptografia

Also known as: digital signature, ECDSA signature

Prova criptográfica produzida com chave privada que autoriza o gasto de bitcoin. Bitcoin suporta ECDSA e Schnorr, verificáveis por qualquer um com a chave.

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

PropriedadeECDSASchnorr
Em uso desde2009 (lançamento do Bitcoin)2021 (ativação do Taproot)
Tamanho da assinatura71-73 bytes (DER)64 bytes (fixo)
AgregaçãoNão suportadaSuportada (MuSig)
Verificação em loteLimitadaEficiente
Tipos de saídaP2PKH, P2WPKH, P2SHApenas 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.