Os usuários de Bitcoin podem, em pouco tempo, se beneficiar de um truque chamado “Taproot”. Primeiramente proposto pelo colaborador do Bitcoin Core e antigo CTO da Blockstream Gregory Maxwell, a Taproot expandirá a flexibilidade dos contratos inteligentes no Bitcoin, oferecendo mais privacidade. Mesmo os contratos inteligentes mais complexos seriam, no blockchain, tipicamente indistinguíveis das transações regulares.

Fazer isso requer muitos recursos, mas isso não é apenas teoria. Vários dos colaboradores mais prolíficos da Bitcoin Core – incluindo Pieter Wuille, Anthony Towns, Johnson Lau, Jonas Nick, Andrew Poelstra, Tim Ruffing, Rusty Russell e, de fato, Gregory Maxwell – estão trabalhando em uma proposta de assinatura Schnorr que incluiria a Taproot, em um upgrade de protocolo.

Veja o que é o Taproot e como funciona.

P2SH

Todos os bitcoins são essencialmente “travados” em scripts: algumas linhas de código embutidas em uma transação incluída no blockchain, que definem como as moedas podem ser gastas na próxima transação. As condições de gastos geralmente envolvem o fornecimento de uma assinatura para comprovar a propriedade das moedas. Mas outras condições conhecidas, por exemplo, incluem timelocks (as moedas só podem ser gastas depois de uma altura ou data de bloqueio específica) ou multisig (moedas só podem ser gastas se algum número de chaves privadas de um conjunto de chaves privadas fornecer suas assinaturas).

Condições diferentes podem ser combinadas para criar tipos complexos de contratos inteligentes. Um exemplo de tal contrato poderia ser que as moedas podem ser gastas se Alice e Bob assinam, ou se Alice sozinha assinar após uma semana, ou se Bob sozinho assinar enquanto também fornece um número secreto. Qualquer uma dessas três condições é satisfeita primeiro, será como as moedas serão gastas.

Desde 2012, os scripts (as condições) geralmente não são publicamente visíveis no início; apenas o novo dono das moedas sabe como elas podem ser gastas. Isso é feito com um truque chamado P2SH (pay to script hash), onde inicialmente apenas um hash do script é incluído no blockchain. Este número aparentemente aleatório embaralha as moedas. Quando o dono gasta as moedas, ele revela todo o roteiro, assim como a “solução” para o roteiro ao mesmo tempo.

Qualquer um pode usar o hash inicial para verificar se o script fornecido foi realmente o script original que trava as moedas e pode imediatamente concluir que os requisitos do script foram atendidos.

Ainda assim, quando as moedas são gastas, é necessário revelar todas as condições possíveis que poderiam ter sido atendidas, incluindo as condições que não foram cumpridas. Isto tem duas desvantagens principais. Primeiro, são dados pesados, especialmente se houver muitas condições. E dois, é ruim para a privacidade. Todos aprendem todas as diferentes maneiras pelas quais os fundos poderiam ter sido gastos, o que pode, por exemplo, revelar que tipo de carteira foi usada e talvez até mais.

MAST

O MAST (Merkelized Abstract Syntax Tree) é uma solução proposta que usa árvores Merkle (uma estrutura de dados compacta e de décadas inventada pelo criptógrafo Ralph Merkle) para contornar essas duas desvantagens. Em suma, todas as diferentes condições sob as quais os fundos podem ser gastos são individualmente combinadas (em vez de combinadas em um único hash) e incluídas em uma árvore Merkle, que produz um único hash: a raiz de Merkle. Esta raiz de Merkle “trava” as moedas.

O benefício é que, se algum dos dados da árvore Merkle for revelado, a raiz Merkle e alguns dados adicionais (chamados de caminho Merkle) poderão ser usados ​​para verificar se esses dados específicos foram incluídos na árvore Merkle. O resto da árvore Merkle permanece com hash e escondido.

Com MAST, isso significa que apenas a condição que é satisfeita precisa ser revelada. Se, no exemplo inicial acima, Alice sozinho gasta os fundos após uma semana, ela apenas revela essa condição (e o caminho da árvore de Merkle). Ninguém descobre que o dinheiro poderia ter sido gasto também por Alice e Bob, ou apenas por Bob, se ele tivesse adicionado um número secreto. Isso torna o MAST mais eficiente em termos de dados do que contratos inteligentes P2SH complexos e adiciona privacidade ao boot.

No entanto, com Schnorr, o Taproot pode fazer ainda melhor: uma transação pode esconder que existia uma estrutura MAST.

Schnorr

https://cointimes.com.br/assinaturas-schrorr-em-breve-no-bitcoin-veja-as-implicacoes/

O esquema de assinatura do Schnorr está há muito tempo na lista de desejos de muitos desenvolvedores de Bitcoins e está atualmente em desenvolvimento para ser implementado como uma atualização de protocolo do soft fork. Muitos criptógrafos consideram o esquema de assinatura Schnorr o melhor em campo, já que suas propriedades matemáticas oferecem um nível forte de confiabilidade, não sofrem maleabilidade e são relativamente rápidas de serem verificadas.

Como seu benefício mais conhecido no contexto do Bitcoin, a “matemática linear” de Schnorr permite a agregação de assinaturas: várias assinaturas na mesma transação podem ser combinadas em uma. Um truque semelhante poderia ser aplicado a transações multissociadas. Combinando chaves públicas e assinaturas em “um conjunto de chaves públicas ” e “um conjunto de assinaturas”, uma transação multisig pode ser feita indistinguível de qualquer transação regular.

E o esquema de assinatura pode ser usado de alguns modos ainda mais interessantes. Por exemplo, é possível usar dados para “ajustar” uma chave privada e uma chave pública. Como um exemplo simplificado, uma chave privada e sua chave pública correspondente poderiam ser ajustadas pela multiplicação de ambas por dois. A “chave privada x 2” e a “chave pública x 2” ainda corresponderiam, e a “chave privada x 2” ainda poderia assinar mensagens que poderiam ser verificadas com a “chave pública x 2.” Qualquer um que não saiba que a chave original o par foi modificado nem sequer veria qualquer diferença; as teclas ajustadas parecem com qualquer outro par de chaves.

É isso que possibilita o Taproot.

Taproot

A raiz principal baseia-se em uma percepção interessante: por mais complexa que seja, quase qualquer construção MAST pode (ou deve) incluir uma condição que permita a todos os participantes concordarem com o resultado e simplesmente assinarem uma transação de liquidação em conjunto. No exemplo anterior, se Bob soubesse que Alice pode, por si mesma, reivindicaria todos os fundos na próxima semana, ele poderia cooperar com ela agora para assinarem juntos. (Em muitas configurações típicas de contratos inteligentes, ele até seria penalizado se não o fizesse. A complexidade serve apenas para manter todos honestos.)

Taproot assemelha-se ao MAST e sempre inclui uma condição em que todos os participantes podem cooperar para gastar os fundos: o “fechamento cooperativo”.

Utilizando assinaturas de Schnorr, é aqui que a história fica interessante.Em primeiro lugar, o fechamento da cooperativa utilizaria o truque do conjunto de assinaturas Schnorr para fazer com que parecesse uma transação regular, de uma pessoa para outra. Assim, as chaves públicas de todos os participantes são somadas, resultando na “chave pública do conjunto”. Correspondendo a essa chave pública , a combinação das assinaturas de todos os participantes – sua “assinatura de conjunto” – permite que eles gastem os fundos.

Até aí tudo bem, mas gastar os fundos como se fosse uma transação normal é a única coisa que eles podem fazer – sem estruturas semelhantes ao MAST . É aí que entra o outro truque de Schnorr.

Todas as formas alternativas pelas quais os fundos podem ser gastos – os resultados não cooperativos – são desta vez combinados em um roteiro diferente. Este script, então, é dividido em hash e usado para ajustar a chave pública do conjunto. Em vez de “chave pública x 2”, como usado no exemplo anterior, isso resulta em um “script x de chave pública do conjunto”. (Ainda estamos simplificando.) Esse “script x de chave pública do conjunto” corresponde, naturalmente, a uma multiplicação da “assinatura conjunto x script”.

Agora, se o dinheiro for gasto cooperativamente, todos os participantes combinam suas assinaturas na “assinatura de conjunto” e ajustam-no com o script. A “assinatura de limite x roteiro” resultante permite que eles gastem os fundos. Ainda assim, e mais importante, para o mundo externo, tudo isso ainda pareceria apenas uma chave pública regular e uma assinatura regular – uma transação regular.

Somente se um fechamento cooperativo for impossível, a chave pública de limite pode ser mostrada pelo que realmente é – uma transação modificada.

Nesse caso, tanto a chave pública de conjunto quanto o script são revelados. Isso prova que o “conjunto de chave pública x script” foi ajustado com este script específico. Assim, como o hash no P2SH, o ajuste prova ao mundo que os fundos devem ser gastáveis ​​se as condições alternativas, conforme especificado neste script, forem atendidas. (E, como com o P2SH, essas condições são, obviamente, cumpridas imediatamente para gastar os fundos.)

Como alternativa, em vez de ajustar a chave pública do conjunto com script, a essa chave pública pode ser ajustada com uma raiz Merkle de uma árvore Merkle que inclui todas as diferentes condições sob as quais os fundos podem ser gastos: uma estrutura MAST. Portanto, para gastar os fundos, apenas a condição de gasto que foi atendida precisa ser revelada.

Como tal, o Taproot oferece todos os benefícios do MAST, enquanto que, em circunstâncias normais, ninguém jamais saberá que uma transação regular estava escondendo um contrato inteligente complexo.

Este é um esboço geral do conceito de MAST; especificidades de implementação podem variar. Para mais detalhes, leia a proposta original de Taproot de Gregory Maxwell ou assista a esta apresentação de Pieter Wuille.

Artigo original escrito por Aaron van Wirdum na revista BitcoinMagazine.