In diesem Artikel werden wir über das Konzept von MAST und seine Anwendung im Bitcoin-Protokoll sprechen. Wir werden die Eigenschaften berücksichtigen, die MAST erreichen kann, sowie die Vorteile seiner Verwendung. Der Artikel wird für Leser interessant sein, die das Bitcoin-Protokoll und andere innovative Zahlungssysteme mögen. Eine separate Vorlesung ist diesem Thema im Rahmen des Online-
Blockchain- Kurses „
MAST in Bitcoin “ gewidmet.
Das Konzept von MAST impliziert die Verwendung von Merkle-Bäumen und abstrakten Syntaxbäumen, um die Bedingungen für das Ausgeben von Münzen für Transaktionsausgaben festzulegen. Lassen Sie uns überlegen, wie dies funktioniert.
Merkle Baum
So können Sie den Merkle-Baum schematisch darstellen.

Es gibt Daten, für die Sie eine Prüfsumme benötigen, d. H. Den Hash-Wert aus allen Teilen berechnen. Anstatt alle zu verketten und die Hash-Funktionen mit einem einzigen Wert zu versehen, bietet Merkle Tree einen anderen Ansatz. Jedes Datenelement wird separat gehasht. Dann werden die resultierenden Hash-Werte paarweise verkettet und erneut gehasht. Und so weiter, bis Sie einen Hash-Wert erhalten, der alle Daten abdeckt. Dieser Wert heißt Merkle Root.
Mit Merkle Tree können Sie das Auftreten eines einzelnen Datenelements in Merkle Root überprüfen, ohne über alle anderen Datenelemente zu verfügen. Dies ist eine wertvolle Eigenschaft.
Angenommen, ein Benutzer hat Merkle Root und die Daten einer Transaktion (im obigen Diagramm sind sie rot dargestellt). Anschließend kann der Benutzer die Kette fehlender Hashwerte (die im Diagramm blau angezeigt werden) verwenden, um zu überprüfen, ob diese Transaktion Teil der Merkle-Wurzel ist. Fehlende Hashwerte werden als Merkle Branch bezeichnet. Für eine bestimmte Transaktion können sie vom Host angefordert werden, auf dem der gesamte Block gespeichert ist.
Diese Methode zum Hashing mehrerer Daten wird in vielen Protokollen verwendet. Die bekanntesten Beispiele sind das Hashing von Transaktionen, die Teil eines Blocks sind, und das Hashing von Teilen von Dateien, die an das BitTorrent-Netzwerk übertragen werden, um eine Torrent-Datei zu generieren.
Abstrakter Syntaxbaum
Lernen wir nun den abstrakten Syntaxbaum kennen. Das folgende Diagramm zeigt einen Syntaxbaum, der eine sehr einfache Schleife beschreibt. Hier werden die blauen Knoten des Baums durch den Baum bezeichnet, was Operationen bedeutet, die grünen sind Variablen und die roten sind Konstanten. Die Kanten des Baums zeigen Übergänge zwischen Operationen an.

Somit wird ein Zyklus beschrieben, der in einer bestimmten Reihenfolge ausgeführt wird. Zunächst wird die Gleichheit der Variablen A und der Konstante 32 überprüft. Wenn dies nicht der Fall ist, gehen Sie zum Hauptteil der Schleife, wo der Variablen A die Summe zweier Werte zugewiesen wird: der Variablen A selbst und der Konstante 2. Dies ist die Struktur des abstrakten Syntaxbaums im Allgemeinen.
Was ist MAST?
Wir haben den theoretischen Grund vorbereitet und werden nun bestimmen, was MAST ist und welche Vorteile es hat. MAST ist der Merkelized Abstract Syntax Tree, der die Ideen des Merkle Tree und des Abstract Syntax Tree verwendet, um sich gegenseitig ausschließende Bedingungen für das Ausgeben von Münzen festzulegen. Gleichzeitig fungiert Bitcoin Script wie gewohnt als Sprache zur Beschreibung von Bedingungen. Das MAST-Konzept verbessert den Datenschutz und reduziert die Transaktionsgröße.
Konzeptentwicklung und aktuelle Position
Leute wie Russell O'Connor, Pieter Wuille, Peter Todd und Johnson Lau begannen, die Idee von MAST in der Bitcoin-Community zu entwickeln und zu fördern. Anfang 2016 wurde ein Vorschlag zur Verbesserung des Bitcoin-Protokolls unter Nummer 114 (BIP114) veröffentlicht, in dem die Spezifikation einer der Optionen zur Implementierung dieses Ansatzes mithilfe von Zeugenprogrammen beschrieben wurde, die wiederum mit dem SegWit-Update eingeführt wurden. BIP114 bietet auch eine Software-Implementierung, die dem Bitcoin-Protokoll neue Konsensregeln hinzufügt.
Später, im Jahr 2017, schlugen sie eine alternative Implementierung des MAST-Konzepts vor, das in BIP117 beschrieben ist. Es basiert auf BIP114 und nimmt einige Änderungen vor. Zum Zeitpunkt des Jahres 2018 werden beide Vorschläge noch geprüft.
Beachten Sie, dass MAST mithilfe von Softfork-Protokollaktualisierungen in Bitcoin integriert werden kann. Und das ist vielleicht das wichtigste Merkmal dieses Konzepts.
MAST auf dem Diagramm
Schematisch sieht der Merkelized Abstract Syntax Tree so aus.

Hier ist MAST Root der Root-Hash-Wert, der in die Ausgabe der Transaktion eingefügt wird. Die Hash-Werte der Äste, die zu den Bedingungen für das Ausgeben von Münzen führen, werden blau angezeigt. Somit enthalten diese Zweige sich gegenseitig ausschließende Bedingungen, unter denen Münzen ausgegeben werden können. Folglich wird derjenige, der Münzen ausgibt, entweder den einen oder den anderen Zweig benutzen.
Die gelbe Farbe zeigt die Bedingungen an, die mit Bitcoin Script festgelegt wurden. Darüber hinaus wird empfohlen, die Bedingungen, unter denen die Münzen höchstwahrscheinlich ausgegeben werden, so nahe wie möglich an der Wurzel des Baumes zu platzieren. Dadurch wird der Eigentumsnachweis für die Münzen kleiner.
Probleme mit Bitcoin-Transaktionen
Lassen Sie uns die Probleme identifizieren, die während der üblichen Einstellung der Bedingungen für das Ausgeben von Münzen mit Bitcoin Script auftreten. Die erste und wichtigste davon ist, dass der Empfänger die Bedingungen beschreiben oder übertragen muss, unter denen er die Zahlung erhalten möchte, damit der Absender sie in der Ausgabe seiner Transaktion angibt. MAST und P2SH lösen dieses Problem.
Das zweite Problem: Schwierige Bedingungen belegen eine große Menge an Speicher in der Transaktionsausgabe. Infolgedessen muss der Absender eine Gebühr für die Festlegung derart schwieriger Bedingungen für den Empfang von Münzen entrichten, obwohl der Empfänger dies vorschreibt. P2SH und MAST bewältigen dies ebenfalls und verlagern die Notwendigkeit, große Datenmengen in die Transaktion einzubeziehen, die ausgegeben werden, und dementsprechend wird die erhöhte Provision vom Empfänger und nicht vom Absender gezahlt.
Das dritte Problem besteht darin, dass der ScriptPubKey, der in der Ausgabe der Transaktion platziert wird, in Größe und Anzahl der Operationen, d. H. OP_CODEs, begrenzt ist. Mit dem MAST-Konzept können Sie diese Einschränkungen fast vollständig umgehen, ohne die Zuverlässigkeit aufgrund sich gegenseitig ausschließender Bedingungen zu beeinträchtigen.
Das vierte Problem: Beim Versenden von Münzen sieht jeder sofort die Bedingungen seiner Ausgaben. Mit MAST können Sie die Ausgabebedingungen bis zum Zeitpunkt der Ausgabe ausblenden. Darüber hinaus werden nur die tatsächlich verwendeten Bedingungen und nicht alle möglichen Optionen offengelegt.
Eigenschaften, die MAST in Bitcoin angibt
Eine davon besteht darin, die Privatsphäre der Benutzer zu verbessern, indem Ausgabenbedingungen ausgeblendet werden, die am Ende nicht aufgebraucht waren. Diese Eigenschaft wird erreicht, indem nachgewiesen wird, dass nur bestimmte Bedingungen in der MAST-Wurzel enthalten sind, und diese Bedingungen erfüllt werden.
Ein weiteres positives Merkmal ist die Möglichkeit, umfangreichere und komplexere Bedingungen für das Ausgeben von Münzen festzulegen. Mit MAST können Sie beispielsweise Hunderttausende verschiedener Optionen für mehrere Signaturen für eine einzelne Transaktionsausgabe angeben. Gleichzeitig sind die Bedingungen für das Ausgeben von Münzen und der entsprechende Eigentumsnachweis für die Münzen sehr kompakt.
Darüber hinaus wird es möglich, Daten mit beliebigem Volumen in der Blockchain aufzuzeichnen, ohne die Größe der Transaktion zu erhöhen.

Dieses Diagramm zeigt eine Variante der MAST-Struktur gemäß BIP114. Die Hash-Werte werden in Blau, das Bitcoin-Skript in Gelb und beliebige Daten in Rot als zusätzliche Nachricht angezeigt. Der Versionswert befindet sich oben im Baum.
Vereinfachtes MAST-Schema

Hier werden zwei sich gegenseitig ausschließende Bedingungen für das Ausgeben von Münzen festgelegt. Im ersten Fall können Münzen ausgegeben werden, indem eine Unterschrift bereitgestellt und auf eine bestimmte Zeit gewartet wird, und im zweiten Fall müssen Sie mehrere Unterschriften angeben. Benutzer können auf eine der Optionen zurückgreifen, während die Bedingungen der zweiten nicht bekannt gegeben werden.
Praktische Anwendung von MAST
Im ersten Fall kann MAST für eine optimierte Implementierung von HTLC (Hashed Time-Lock Contracts) verwendet werden, die im Lightning Network-Protokoll verwendet werden. In einem anderen Fall für eine optimierte Implementierung von Escrow.
MAST ermöglicht es, sehr große Strukturen mit Multisignatur zu implementieren. Dies hilft bei der Lösung dringender Probleme wie Diebstahl oder Verlust von Bitcoins und ermöglicht es Ihnen in einigen Fällen sogar, die Kühllagerung aufzugeben.
Dank MAST können Sie in vielen Fällen die Operation OP_RETURN ablehnen, um Daten zur Bitcoin-Blockchain hinzuzufügen. Stattdessen können Sie diese Daten in einen Baum aufnehmen und bei Bedarf nachweisen, dass bestimmte Daten in der Bitcoin-Blockchain aufgezeichnet wurden. In diesem Fall müssen Sie die Blockchain selbst nicht vergrößern.
Datenvolumenoptimierung
Achten wir auf die Optimierung der Datenmenge, die letztendlich in die Blockchain fällt. Schauen Sie sich die Tabelle unten genau an. Die vertikale Achse gibt die Datenmenge in Bytes an, während die Skala selbst logarithmisch ist. Die horizontale Achse gibt die Anzahl der alternativen Bedingungen für das Ausgeben von Münzen an.

Die blaue Linie zeigt die Abhängigkeit des Datenvolumens von der Anzahl der Bedingungen ohne Verwendung von MAST an. Die rote Linie zeigt die Abhängigkeit des Datenvolumens von der Anzahl der Bedingungen mit MAST an. Die blaue Linie ist die Größenbeschränkung für Bitcoin-Skripte für P2SH. Die grüne Linie gibt die Größenbeschränkung für Bitcoin-Skripte in der Zeugenstruktur an.
Die Schlussfolgerung ist einfach. Mit dem MAST-Konzept können Sie bei gleicher Validierungszuverlässigkeit und viel größerer Funktionalität deutlich weniger Daten speichern.
Kommen wir nun zu häufig gestellten Fragen zu diesem Thema.
Häufig gestellte Fragen
- Wird die MAST-Wurzel in der Zeugenstruktur festgelegt oder wo wird sie aufgelistet?MAST Root wird zusammen mit den Daten, die es definieren, im ScriptPubKey am Ausgang der Transaktion angezeigt. Diese Daten belegen 25 bis 35 Byte und können höchstwahrscheinlich problemlos in die übliche Bitcoin-Adresse codiert werden. In der Zeugenstruktur, in der der Besitz von Münzen nachgewiesen wird, werden Merkle Branch und Daten, die die Ausgabenbedingungen erfüllen, wie z. B. elektronische Signaturen, angegeben.
- Werden die vielen verfügbaren OP_CODEs in der Bitcoin-Skriptsprache erweitert?Derzeit ist noch nicht klar, da der Vorschlag geprüft wird und möglicherweise noch weitere Änderungen und Verbesserungen vorgenommen werden. Ein OP_CODE wie OP_MERKLEBRANCHVERIFY wird wahrscheinlich hinzugefügt, um die Flexibilität der Verwendung von MAST zu gewährleisten. Vielleicht bieten sie noch etwas Nützliches an, aber das ist immer noch ungenau.
- Gibt es eine Chance, MAST in naher Zukunft zu integrieren?Natürlich gibt es eine Wahrscheinlichkeit, aber sie ist gering. Schließlich ist dieses Update wichtig, aber nicht dringend, sodass es warten kann, bis Entwickler über andere Protokollverbesserungen nachdenken. Später können sie mehrere Verbesserungen gleichzeitig in ein Update integrieren, wie dies bei SegWit der Fall war.