Como você deve saber, o
Bitcoin impõe direitos de propriedade com algo chamado de Algoritmo de Assinatura Digital da Curva Elíptica (Elliptic Curve Digital Signature Algorithm - ECDSA). Esse algoritmo permite que você pegue um número (ou seja, uma
chave privada) e obtenha uma chave pública derivada dele.
A mágica disso é que, embora seja fácil de se obter a chave pública a partir da chave privada, o inverso é impossível. A chave privada é o seu passaporte para a rede Bitcoin. É o que permite que você gere um
endereço para recebimento de
moedas e é também o que, mais tarde, permite que você as gaste.
Neste artigo, vamos dar uma olhada no algoritmo de assinatura de Schnorr, uma alternativa ao ECDSA que pode proporcionar algumas mudanças interessantes ao sistema do Bitcoin.
Assinaturas digitais funcionam como as antigas assinaturas de papel e caneta, mas são muito mais seguras. Qualquer pessoa pode forjar uma assinatura em papel e caneta com um pouco de tempo e esforço. Não é possível fazer o mesmo com um esquema de assinatura digital robusto, mesmo que você tenha milhares de anos à sua disposição.
Existem vários casos de uso para assinaturas digitais. Um caso popular envolve provar ao mundo que você escreveu uma mensagem específica. Como mencionado, você pode criar uma chave pública a partir de uma chave privada (um número enorme que você deve manter em segredo). Isso é possível com um pouco de matemática sofisticada sobre a curva secp256k1. A partir daí, você também pode gerar um endereço público a partir de sua chave pública.
Observe que é totalmente seguro mostrar sua chave pública para qualquer pessoa. Você pode, por exemplo, adicioná-la ao seu site ou biografia do Twitter para que outras pessoas possam verificar sua identidade. Da mesma forma, você pode compartilhar seus endereços públicos com outras pessoas para que elas lhe possam enviar criptomoedas.
Sua chave privada permite que você crie uma assinatura digital. Ao escrever uma mensagem e realizar uma operação usando sua chave privada, você gera uma mensagem com a sua assinatura. Qualquer pessoa pode pegá-la e compará-la com sua chave pública para verificar se foi você quem realmente assinou.
Qual a relação disso com o Bitcoin? Sempre que você faz uma transação de
Bitcoin, você está assinando digitalmente uma mensagem que diz
Estou enviando essas moedas que foram, anteriormente, enviadas para mim. Então, quando ocorre o envio para outros
nodes (nós) da rede, eles podem verificar se a assinatura ECDSA corresponde à mensagem. Se não, eles irão simplesmente rejeitá-la.
O esquema das assinaturas de Schnorr funciona de forma diferente. Ele opera de forma semelhante ao Algoritmo de Assinatura Digital da Curva Elíptica que usamos atualmente, mas apresenta algumas vantagens sobre ele. As assinaturas de Schnorr surgiram antes do ECDSA, levando muitos a se perguntarem por que não foram integradas ao Bitcoin desde o início.
Uma possível explicação é que Claus P. Schnorr – o criador desse esquema – as patenteou. As patentes expiraram no início de 2008, meses antes do lançamento do whitepaper do Bitcoin, mas o esquema ainda não tinha uma padronização. Sendo assim,
Satoshi Nakamoto optou pelo ECDSA, que era mais amplamente aceito (e
de código aberto).
As assinaturas de Schnorr são bem simples em comparação com outros esquemas. Como resultado, elas são provavelmente mais seguras do que outras alternativas. Isso pode não parecer uma grande vantagem pra você, mas elas têm outra propriedade poderosa: linearidade.
Usando termos mais simples, essa propriedade torna esse esquema particularmente atraente para certas atividades – principalmente, transações
multisignature (também chamadas de multisig ou multiassinatura). Talvez você saiba que o Bitcoin já tem compatibilidade com multisig, mas não o faz da melhor maneira.
Quando você cria um endereço com múltiplas assinaturas, quem lhe envia os fundos não precisa saber quais condições você definiu para gastar os inputs (entradas). Eles talvez nem saibam que estão enviando fundos para uma configuração multisig – a única peculiaridade sobre o endereço é que ele começa com um “3”.
No entanto, quando você quer movimentar os fundos, você revela informações. Digamos que você tenha usado uma configuração 3-de-3 junto com Alice e Bob. Para gastar, por exemplo, 5 BTC, vocês três devem fornecer as chaves públicas e assinaturas válidas. Quando você move os fundos para fora do endereço, toda a rede pode saber conferir que aconteceu observando a
blockchain.
Do ponto de vista da privacidade, isso não é bom. Além disso, se criarmos um multisig maior (por exemplo, 8-de-10), estaremos ocupando um espaço maior na blockchain. Esse processo pode ser caro, pois precisa de uma transação mais longa – lembre-se de que quanto mais bytes tem sua transação, maior será o preço para transmiti-la.
As assinaturas de Schnorr foram apresentadas como uma solução para esses problemas de privacidade e
escalabilidade. Elas permitem coisas como
signature aggregation (agregação de assinatura), que combina as assinaturas de vários usuários em uma única assinatura. A “assinatura mestre” resultante ainda teria o mesmo comprimento de uma assinatura regular de uma pessoa, proporcionando uma economia significativa de espaço.
Além disso, as assinaturas combinadas faz com que seja muito difícil para um observador determinar quem assinou (ou não) uma transação. Em esquemas m-de-m (onde todos os participantes devem assinar para gastar os fundos), você nem seria capaz de distinguir entre transações com assinatura única e transações multisig.
Essencialmente, as assinaturas de Schnorr são um importante componente para novos avanços. Depois de implementadas, podem ser usadas para aprimorar tecnologias cripto, como
atomic swaps e a
Lightning Network.
Não podemos ter certeza. Como acontece com a maioria das atualizações do protocolo Bitcoin, pode levar algum tempo para que a maior parte da comunidade de usuários de Bitcoin, concorde com a inclusão das assinaturas de Schnorr. Alguns dos contribuintes do Bitcoin Core como Pieter Wuille, Jonas Nick e Tim Ruffing fizeram um rascunho,
Bitcoin Improvement Proposal (BIP), mas ainda há trabalho a ser feito.
A Blockstream já lançou uma implementação –
MuSig. A implementação da agregação de assinaturas e de chaves, pode servir muito bem como base para o esquema de assinaturas de Schnorr para Bitcoin.
As assinaturas de Schnorr podem ser mescladas no código como um
soft fork, o que significa que uma mudança não precisaria dividir a rede. Em vez disso, seria uma atualização “opcional”. No entanto, seria muito otimista supor que veremos essa implementação em um futuro próximo – ainda pode levar alguns anos até que o consenso seja alcançado.
A implementação das assinaturas de Schnorr é um dos marcos mais esperados no roteiro atual do Bitcoin. Com apenas uma atualização, seria possível obter importantes benefícios de privacidade e
escalabilidade. Talvez, o que é ainda mais interessante, é que isso também mudaria o cenário para novos desenvolvimentos de
contratos inteligentes e projetos mais avançados como
Taproot.