Conceito Bitcoin MAST

Neste artigo, falaremos sobre o conceito de MAST e sua aplicação no protocolo Bitcoin. Consideraremos as propriedades que o MAST permite alcançar, bem como os benefícios de seu uso. O artigo será interessante para os leitores que gostam do protocolo Bitcoin e outros sistemas de pagamento inovadores. Uma palestra separada também é dedicada a esse tópico no âmbito do curso online de blockchain " MAST in Bitcoin ".

O conceito de MAST implica o uso de árvores Merkle e árvores de sintaxe abstrata para definir as condições para gastar moedas nos resultados das transações. Vamos considerar em ordem como isso funciona.

Árvore Merkle


Assim, você pode representar esquematicamente a Árvore Merkle.

imagem

Existem dados para os quais você precisa obter uma soma de verificação, ou seja, calcular o valor do hash de todos os dados. Mas, em vez de concatenar todos eles e fornecer as funções de hash com um único valor, o Merkle Tree oferece uma abordagem diferente. Cada dado é dividido em hash separadamente. Em seguida, os valores de hash resultantes são concatenados em pares e hash novamente. E assim por diante, até você obter um valor de hash que cubra todos os dados. Este valor é chamado Raiz Merkle.

A Árvore Merkle permite verificar a ocorrência de um único dado no Merkle Root, sem ter todos os outros dados. Esta é uma propriedade valiosa.

Suponha que um usuário tenha Raiz de Merkle e os dados de uma transação (no diagrama acima, isso é indicado em vermelho). Em seguida, o usuário pode pegar a cadeia de valores de hash ausentes (eles são indicados em azul no diagrama) para verificar se essa transação faz parte da raiz do Merkle. Os valores de hash ausentes são chamados de Merkle Branch. Para uma transação específica, eles podem ser solicitados ao host que armazena o bloco completo.

Esse método de hash de vários dados é usado em muitos protocolos. Os exemplos mais famosos são o hash de transações que fazem parte de um bloco e o hash de partes de arquivos que são transferidos para a rede BitTorrent para gerar um arquivo torrent.

Árvore de sintaxe abstrata


Agora vamos conhecer a Árvore de sintaxe abstrata. O diagrama abaixo mostra uma árvore de sintaxe que descreve um loop muito simples. Aqui, os nós azuis da árvore são indicados pela árvore, o que significa operações, o verde é variável e o vermelho é constante. As bordas da árvore indicam transições entre operações.

imagem

Assim, é descrito um ciclo que é executado em uma sequência específica. Primeiro, a igualdade da variável A e da constante 32 é verificada. Se ela não se mantiver, vá para o corpo do loop, onde a variável A recebe a soma de dois valores: a própria variável A e a constante 2. Essa é a estrutura da árvore de sintaxe abstrata em termos gerais.

O que é o MAST?


Preparamos a base teórica, agora vamos determinar o que é o MAST e quais são seus benefícios. O MAST é a Árvore de sintaxe abstrata Merkelized, que usa as idéias da árvore Merkle e da árvore de sintaxe abstrata para especificar condições mutuamente exclusivas para gastar moedas. Ao mesmo tempo, o Bitcoin Script atua, como sempre, como uma linguagem para descrever condições. O conceito MAST aprimora a privacidade e reduz o tamanho da transação.

Desenvolvimento de conceito e posição atual


Pessoas como Russell O'Connor, Pieter Wuille, Peter Todd e Johnson Lau começaram a desenvolver e promover a ideia de MAST na comunidade Bitcoin. No início de 2016, foi publicada uma proposta para melhorar o protocolo Bitcoin sob o número 114 (BIP114), que descrevia a especificação de uma das opções para implementar essa abordagem usando programas testemunhais, que por sua vez foram introduzidos com a atualização SegWit. O BIP114 também oferece uma implementação de software que adiciona novas regras de consenso ao protocolo Bitcoin.

Posteriormente, em 2017, eles propuseram uma implementação alternativa do conceito MAST, descrito no BIP117. É baseado no BIP114 e faz algumas modificações. No momento de 2018, ambas as propostas permanecem em consideração.

Observe que o MAST pode ser integrado ao Bitcoin usando as atualizações do protocolo softfork. E essa é talvez a característica mais importante desse conceito.

MAST no diagrama


Esquematicamente, a Árvore de Sintaxe Abstrata Merkelizada terá esta aparência.

imagem

Aqui, MAST Root é o valor do hash raiz que será colocado na saída da transação. Os valores de hash dos galhos das árvores que levam às condições para gastar moedas são indicados em azul. Assim, esses ramos contêm condições mutuamente exclusivas sob as quais as moedas podem ser gastas. Consequentemente, quem gasta moedas usará um ramo ou outro.

A cor amarela indica as condições definidas usando o Bitcoin Script. Além disso, recomenda-se que as condições sob as quais as moedas serão gastas sejam colocadas o mais próximo possível da raiz da árvore - isso reduzirá a prova de propriedade das moedas.

Problemas de transação com Bitcoin


Vamos identificar os problemas que ocorrem durante a configuração usual das condições para gastar moedas usando o Bitcoin Script. A primeira e mais importante delas é que o destinatário precisa descrever ou transferir as condições sob as quais deseja receber o pagamento, para que o remetente as indique na saída de sua transação. MAST e P2SH resolvem esse problema.

O segundo problema: condições difíceis ocupam uma grande quantidade de memória na saída da transação. Como resultado, o remetente deve pagar uma taxa pelo estabelecimento de condições tão difíceis para o recebimento de moedas, embora o destinatário as determine. O P2SH e o MAST também lidam com isso, alterando a necessidade de incluir grandes quantidades de dados na transação que gastam e, portanto, o destinatário, e não o remetente, pagará uma comissão mais alta.

O terceiro problema é que o ScriptPubKey, que é colocado na saída da transação, é limitado em tamanho e número de operações, ou seja, OP_CODEs. O conceito MAST permite que você evite quase completamente essas restrições sem comprometer a confiabilidade devido a condições mutuamente exclusivas.

O quarto problema: ao enviar moedas, todos vêem imediatamente as condições de seus gastos. O MAST permite ocultar as condições dos gastos até o momento dos gastos. Além disso, apenas as condições realmente utilizadas serão divulgadas, e nem todas as opções possíveis.

Propriedades que o MAST fornece no Bitcoin


Uma delas é aumentar o nível de privacidade do usuário, ocultando as condições dos gastos que não foram utilizados no final. Essa propriedade é obtida provando que apenas certas condições estão incluídas na raiz do MAST e satisfazendo essas condições.

Outra característica positiva é a capacidade de especificar condições mais volumosas e complexas para gastar moedas. Por exemplo, usando o MAST, você pode especificar centenas de milhares de opções diferentes de várias assinaturas para uma única saída de transação. Ao mesmo tempo, as condições para gastar moedas e a correspondente prova de propriedade das moedas serão muito compactas.

Além disso, torna-se possível registrar dados de volume arbitrário no blockchain sem aumentar o tamanho da transação.

imagem

Este diagrama mostra uma variante da estrutura MAST de acordo com o BIP114. Os valores de hash são indicados em azul, script de bitcoin em amarelo e dados arbitrários em vermelho como uma mensagem adicional. O valor da versão está incluído na parte superior da árvore.

Esquema MAST simplificado



imagem

Duas condições mutuamente exclusivas para gastar moedas são especificadas aqui. No primeiro caso, as moedas podem ser gastas, fornecendo uma assinatura e aguardando um certo tempo, e no segundo - você precisa fornecer várias assinaturas. Os usuários podem recorrer a uma das opções, enquanto as condições da segunda não serão divulgadas.

Aplicação prática do MAST


No primeiro caso, o MAST pode ser usado para uma implementação mais otimizada do HTLC (Hashed Time-Lock Contracts), usado no protocolo Lightning Network. Em outro, para uma implementação mais otimizada do Compromisso.

O MAST possibilita a implementação de estruturas muito grandes usando várias assinaturas. Isso ajudará a resolver problemas prementes como roubo ou perda de bitcoins e, em alguns casos, até permitirá que você abandone o armazenamento a frio.

Graças ao MAST, em muitos casos, você pode recusar a operação OP_RETURN para adicionar dados ao blockchain do Bitcoin. Em vez disso, você pode incluir esses dados em uma árvore e, se necessário, provar que dados específicos foram registrados na blockchain do Bitcoin. Nesse caso, você não precisará aumentar o tamanho do próprio blockchain.

Otimização do volume de dados


Vamos prestar atenção à otimização da quantidade de dados que finalmente cai no blockchain. Dê uma olhada no quadro abaixo. O eixo vertical indica a quantidade de dados em bytes, enquanto a própria escala é logarítmica. O eixo horizontal indica o número de condições alternativas para gastar moedas.

imagem

A linha azul indica a dependência do volume de dados no número de condições sem usar o MAST. A linha vermelha indica a dependência do volume de dados no número de condições usando o MAST. A linha azul é o limite de tamanho do Bitcoin Script para P2SH. A linha verde é o limite de tamanho do Bitcoin Script na estrutura da testemunha.

A conclusão é simples. O conceito MAST permite armazenar significativamente menos dados com a mesma confiabilidade de validação e funcionalidade muito maior.

Agora vamos para as perguntas mais frequentes sobre este tópico.

Perguntas frequentes


- A raiz do MAST será definida na estrutura da testemunha ou onde será listada?

A raiz MAST junto com os dados que a definem serão indicados na ScriptPubKey na saída da transação. Esses dados ocuparão 25 a 35 bytes e, provavelmente, serão facilmente codificados no endereço Bitcoin usual. E na estrutura de testemunhas, onde é comprovada a propriedade das moedas, o Merkle Branch e os dados que satisfazem as condições de gastos, como assinaturas eletrônicas, serão indicados.

- Os muitos OP_CODEs disponíveis na linguagem Bitcoin Script serão expandidos?

No momento, ainda não está claro, porque a proposta está sendo considerada e mudanças e melhorias adicionais ainda podem ser feitas. É provável que um OP_CODE como OP_MERKLEBRANCHVERIFY seja adicionado para a flexibilidade de usar o MAST. Talvez eles ofereçam algo mais útil, mas isso ainda é impreciso.

- Existe alguma chance de integrar o MAST em um futuro próximo?

Claro que há uma probabilidade, mas é pequena. Afinal, esta atualização é importante, mas não urgente, para que possa esperar enquanto os desenvolvedores pensam em outras melhorias no protocolo. Posteriormente, eles podem integrar várias melhorias ao mesmo tempo em uma atualização, como foi o caso do SegWit.

Source: https://habr.com/ru/post/pt414979/


All Articles