Assinaturas Schnorr

Um esquema de assinatura mais simples, eficiente e seguro que o ECDSA

As assinaturas Schnorr são melhores que o ECDSA para criar e verificar assinaturas digitais. Elas são mais simples, mais eficientes e mais seguras.

Além disso, a matemática mais simples também permite somar assinaturas e verificar várias assinaturas ao mesmo tempo — dois recursos que não estão disponíveis com o ECDSA.

As assinaturas Schnorr foram adicionadas ao Bitcoin em 2021, como parte da atualização Taproot, e são usadas para destravar scripts P2TR.

Implementação

Como você cria uma assinatura Schnorr?

As assinaturas Schnorr usam a mesma curva elíptica secp256k1 do ECDSA. O par de chaves é o mesmo: chave pública = chave privada × G.

Ícone Ferramenta Multiplicação na Curva
Ícone Ferramenta

EC Multiply

Multiplique um ponto na curva elíptica secp256k1 por um número.

x:
y:
x:
y:

A assinatura Schnorr (BIP340) tem 64 bytes e é formada por dois valores: um ponto R (32 bytes) e um escalar s (32 bytes). O cálculo de s usa uma fórmula linear simples envolvendo o nonce, um "desafio" (hash) e a chave privada.

Ícone Ferramenta Schnorr (assinar/verificar)
Ícone Ferramenta

Schnorr (BIP340)

Assine um hash de mensagem de 32 bytes com uma chave privada usando assinaturas Schnorr (usadas no Taproot) e verifique-a.

Benefícios

Por que o Schnorr é melhor que o ECDSA?

Chaves Públicas x-only

No Taproot, as chaves públicas Schnorr têm apenas 32 bytes (só a coordenada x), sem o byte de prefixo 02/03. Convenciona-se que a coordenada y é sempre par, o que economiza espaço.

Ícone Ferramenta Chave Pública
Ícone Ferramenta

Chave Pública

Calcule a chave pública a partir de uma chave privada.

0 bytes
Coordenadas
0d
0d

Uma chave pública é só um ponto numa curva elíptica. A chave pública final são essas coordenadas em hexadecimal.

Compressão

A curva é simétrica no eixo x, então a chave comprimida guarda só a coordenada x e se a y é par ou ímpar. A x-only é usada em saídas Taproot.

0 bytes

Nunca insira sua chave privada em um site, nem use uma chave privada gerada por um site. Sites podem facilmente salvar a chave privada e usá-la para roubar seus bitcoins.