Concept Bitcoin MAST

Dans cet article, nous parlerons du concept de MAST et de son application dans le protocole Bitcoin. Nous considérerons les propriétés que le MAST permet d'atteindre, ainsi que les avantages de son utilisation. L'article sera intéressant pour les lecteurs qui aiment le protocole Bitcoin et d'autres systèmes de paiement innovants. Une conférence séparée est également consacrée à ce sujet dans le cadre du cours en ligne sur la blockchain « MAST in Bitcoin ».

Le concept de MAST implique l'utilisation d'arbres de Merkle et d'arbres de syntaxe abstraite pour définir les conditions de dépense des pièces sur les résultats de transaction. Voyons dans l'ordre comment cela fonctionne.

Arbre Merkle


Vous pouvez donc représenter schématiquement l'arbre Merkle.

image

Il existe des éléments de données pour lesquels vous devez obtenir une somme de contrôle, c'est-à-dire calculer la valeur de hachage à partir de tous les éléments. Mais au lieu de les concaténer tous et de fournir les fonctions de hachage avec une seule valeur, Merkle Tree propose une approche différente. Chaque élément de données est haché séparément. Ensuite, les valeurs de hachage résultantes sont concaténées par paires et hachées à nouveau. Et ainsi de suite, jusqu'à ce que vous obteniez une valeur de hachage qui couvre toutes les données. Cette valeur est appelée Merkle Root.

Merkle Tree vous permet de vérifier l'occurrence d'une seule donnée dans Merkle Root, sans avoir toutes les autres données. Ceci est une propriété précieuse.

Supposons qu'un utilisateur possède Merkle Root et les données d'une transaction (dans le diagramme ci-dessus, il est indiqué en rouge). Ensuite, l'utilisateur peut prendre la chaîne de valeurs de hachage manquantes (elles sont indiquées en bleu sur le diagramme) afin de vérifier que cette transaction fait partie de la racine Merkle. Les valeurs de hachage manquantes sont appelées Merkle Branch. Pour une transaction spécifique, ils peuvent être demandés à l'hôte qui stocke le bloc complet.

Cette méthode de hachage de plusieurs données est utilisée dans de nombreux protocoles. Les exemples les plus connus sont le hachage de transactions qui font partie d'un bloc et le hachage de parties de fichiers qui sont transférés sur le réseau BitTorrent pour générer un fichier torrent.

Arbre de syntaxe abstraite


Maintenant, apprenons à connaître l'arbre de syntaxe abstraite. Le diagramme ci-dessous montre un arbre de syntaxe qui décrit une boucle très simple. Ici, les nœuds bleus de l'arbre sont désignés par l'arbre, ce qui signifie des opérations, le vert est des variables et le rouge des constantes. Les bords de l'arborescence indiquent les transitions entre les opérations.

image

Ainsi, un cycle qui est exécuté dans une séquence spécifique est décrit. Tout d'abord, l'égalité de la variable A et de la constante 32 est vérifiée. Si elle ne tient pas, passez au corps de la boucle, où la variable A se voit attribuer la somme de deux valeurs: la variable A elle-même et la constante 2. Il s'agit de la structure de l'arbre de syntaxe abstraite en termes généraux.

Qu'est-ce que MAST?


Nous avons préparé le terrain théorique, nous allons maintenant déterminer ce qu'est le MAST et quels sont ses avantages. MAST est l'arbre de syntaxe abstraite Merkelized, qui utilise les idées de l'arbre Merkle et de l'arbre de syntaxe abstraite pour spécifier des conditions mutuellement exclusives pour dépenser des pièces. Dans le même temps, Bitcoin Script agit, comme d'habitude, comme un langage pour décrire les conditions. Le concept MAST améliore la confidentialité et réduit la taille des transactions.

Développement du concept et position actuelle


Des gens comme Russell O'Connor, Pieter Wuille, Peter Todd et Johnson Lau ont commencé à développer et à promouvoir l'idée de MAST dans la communauté Bitcoin. Début 2016, une proposition a été publiée pour améliorer le protocole Bitcoin au numéro 114 (BIP114), qui décrivait la spécification d'une des options pour la mise en œuvre de cette approche à l'aide de programmes témoins, qui à son tour a été introduite avec la mise à jour SegWit. BIP114 propose également une implémentation logicielle qui ajoute de nouvelles règles de consensus au protocole Bitcoin.

Plus tard, en 2017, ils ont proposé une implémentation alternative du concept MAST, qui est décrit dans BIP117. Il est basé sur BIP114 et apporte quelques modifications. Au moment de 2018, les deux propositions étaient toujours à l'étude.

Notez que MAST peut être intégré dans Bitcoin à l'aide des mises à jour du protocole softfork. Et c'est peut-être la caractéristique la plus importante de ce concept.

MAST sur le schéma


Schématiquement, l'arbre de syntaxe abstraite Merkelized ressemblera à ceci.

image

Ici, MAST Root est la valeur de hachage racine qui sera placée dans la sortie de la transaction. Les valeurs de hachage des branches d'arbre qui conduisent aux conditions de dépenses des pièces sont indiquées en bleu. Ainsi, ces branches contiennent des conditions mutuellement exclusives dans lesquelles les pièces peuvent être dépensées. Par conséquent, celui qui dépense des pièces de monnaie utilisera une branche ou une autre.

La couleur jaune indique les conditions définies à l'aide de Bitcoin Script. De plus, il est recommandé de placer les conditions dans lesquelles les pièces seront dépensées aussi près que possible de la racine de l'arbre, ce qui réduira la preuve de propriété des pièces.

Problèmes de transaction Bitcoin


Identifions les problèmes qui surviennent lors du réglage habituel des conditions de dépense de pièces en utilisant Bitcoin Script. Le premier, et le plus important d'entre eux, est que le destinataire doit décrire ou transférer les conditions dans lesquelles il souhaite recevoir le paiement, afin que l'expéditeur les indique dans le résultat de sa transaction. MAST et P2SH résolvent ce problème.

Le deuxième problème: les conditions difficiles occupent une grande quantité de mémoire dans la sortie de transaction. En conséquence, l'expéditeur doit payer des frais pour établir des conditions aussi difficiles pour recevoir des pièces, bien que le destinataire les dicte. P2SH et MAST font également face à cela, déplaçant la nécessité d'inclure de grandes quantités de données dans la transaction, qui seront dépensées, et en conséquence la commission accrue sera payée par le destinataire, pas l'expéditeur.

Le troisième problème est que le ScriptPubKey, qui est placé dans la sortie de la transaction, est limité en taille et en nombre d'opérations, c'est-à-dire OP_CODEs. Le concept MAST vous permet de vous éloigner presque complètement de ces restrictions sans compromettre la fiabilité en raison de conditions mutuellement exclusives.

Quatrième problème: lors de l'envoi de pièces, chacun voit immédiatement les conditions de ses dépenses. MAST vous permet de masquer les conditions de dépenses jusqu'au moment des dépenses. De plus, seules les conditions réellement utilisées seront divulguées, et pas toutes les options possibles.

Propriétés que MAST donne dans Bitcoin


L'une d'elles consiste à augmenter le niveau de confidentialité des utilisateurs en masquant les conditions de dépenses qui n'ont finalement pas été utilisées. Cette propriété est obtenue en prouvant que seules certaines conditions sont incluses dans la racine MAST et en satisfaisant ces conditions.

Une autre caractéristique positive est la possibilité de spécifier des conditions plus volumineuses et complexes pour dépenser des pièces. Par exemple, en utilisant MAST, vous pouvez spécifier des centaines de milliers d'options multi-signatures différentes pour une sortie de transaction unique. Dans le même temps, les conditions de dépense des pièces et la preuve de propriété correspondante des pièces seront très compactes.

De plus, il devient possible d'enregistrer des données de volume arbitraire sur la blockchain sans augmenter la taille de la transaction.

image

Ce schéma montre une variante de la structure MAST selon BIP114. Les valeurs de hachage sont indiquées en bleu, le script bitcoin en jaune et les données arbitraires en rouge comme message supplémentaire. La valeur de la version est incluse en haut de l'arborescence.

Schéma MAST simplifié



image

Deux conditions mutuellement exclusives pour dépenser des pièces sont spécifiées ici. Dans le premier cas, les pièces peuvent être dépensées en fournissant une signature et en attendant un certain temps, et dans le second - vous devez fournir plusieurs signatures. Les utilisateurs peuvent recourir à l'une des options, tandis que les conditions de la seconde ne seront pas divulguées.

Application pratique de MAST


Dans le premier cas, MAST peut être utilisé pour une implémentation plus optimisée des HTLC (Hashed Time-Lock Contracts), qui sont utilisés dans le protocole Lightning Network. Dans un autre, pour une implémentation plus optimisée de l'engagement.

MAST permet de mettre en œuvre de très grandes structures en multisignature. Cela vous aidera à résoudre des problèmes urgents tels que le vol ou la perte de bitcoins et, dans certains cas, vous permettra même d'abandonner le stockage à froid.

Grâce à MAST, dans de nombreux cas, vous pouvez refuser l'opération OP_RETURN pour ajouter des données à la blockchain Bitcoin. Au lieu de cela, vous pouvez inclure ces données dans une arborescence et, si nécessaire, prouver que des données spécifiques ont été enregistrées dans la blockchain Bitcoin. Dans ce cas, vous n'aurez pas besoin d'augmenter la taille de la blockchain elle-même.

Optimisation du volume de données


Faisons attention à l'optimisation de la quantité de données qui tombe finalement dans la blockchain. Examinez de près le tableau ci-dessous. L'axe vertical indique la quantité de données en octets, tandis que l'échelle elle-même est logarithmique. L'axe horizontal indique le nombre de conditions alternatives pour dépenser des pièces.

image

La ligne bleue indique la dépendance du volume de données sur le nombre de conditions sans utiliser MAST. La ligne rouge indique la dépendance du volume de données sur le nombre de conditions utilisant MAST. La ligne bleue représente la limite de taille du script Bitcoin pour P2SH. La ligne verte représente la limite de taille du script Bitcoin dans la structure témoin.

La conclusion est simple. Le concept MAST vous permet de stocker beaucoup moins de données avec la même fiabilité de validation et des fonctionnalités beaucoup plus importantes.

Passons maintenant aux questions fréquemment posées sur ce sujet.

Foire aux questions


- La racine MAST sera-t-elle définie dans la structure témoin ou où sera-t-elle répertoriée?

La racine MAST ainsi que les données qui la définissent seront indiquées dans ScriptPubKey à la sortie de la transaction. Ces données occuperont 25 à 35 octets et, très probablement, elles seront facilement encodées dans l'adresse Bitcoin habituelle. Et dans la structure des témoins, où la propriété des pièces est prouvée, la succursale de Merkle et les données qui satisfont aux conditions de dépenses, telles que les signatures électroniques, seront indiquées.

- Les nombreux OP_CODE disponibles dans le langage de script Bitcoin seront-ils étendus?

Pour le moment, ce n'est pas encore clair, car la proposition est à l'étude et d'autres modifications et améliorations peuvent encore être apportées. Un OP_CODE tel que OP_MERKLEBRANCHVERIFY est susceptible d'être ajouté pour la flexibilité d'utilisation de MAST. Peut-être offriront-ils autre chose d'utile, mais c'est encore inexact.

- Y a-t-il une chance d'intégrer MAST dans un futur proche?

Bien sûr, il y a une probabilité, mais elle est faible. Après tout, cette mise à jour est importante, mais pas urgente, elle peut donc attendre que les développeurs réfléchissent à d'autres améliorations de protocole. Plus tard, ils peuvent intégrer plusieurs améliorations à la fois en une seule mise à jour, comme ce fut le cas avec SegWit.

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


All Articles