12. MAST (Arbre de Merkel de Syntaxe Abstraite ou "Arbre de Syntaxe Abstraite Merkelisé)
retour à la table des matières
Arbres de Merkel de Syntaxe Abstraite (MAST) est une proposition supplémentaire proposée dans le protocole Bitcoin qui permet la mise en œuvre des éléments suivants :
- Taille de transaction plus petite
- Plus de confidentialité
- Contrat intelligent plus grand.
Problème : Données de script non utilisées.
- Satoshi Nakamoto donne à Bitcoin une fonctionnalité qui permet aux utilisateurs d'écrire des programmes (appelés scripts) qui peuvent être utilisés comme clés publiques dynamiques et signatures.
- Lorsque vous spécifiez un script - qui est la configuration par défaut de chaque portefeuille - le consensus sur le protocole Bitcoin n'autorisera personne à dépenser vos bitcoins tant qu'un script prédéterminé justifie le processus.
- Actuellement, tous les scripts doivent être écrits sur la Blockchain (dans son ensemble).
L'origine de MAST
L'idée de MAST provient de deux concepts préexistants, à savoir les Arbres de Syntaxe Abstraite (AST) et les Arbres de Merkle.
- AST - est une manière de décrire un programme en le divisant en parties distinctes pour le rendre plus facile à analyser et à optimiser les fonctions de chacune.
- Arbre de Merkle - permet à un nœud de copier certaines informations sans avoir à copier toutes les transactions.
-snip-
Illustration d'un Arbre de MerkleIl y a des avantages à utiliser l'
Arbre de Merkle en termes de vérification d'un block.
Par exemple, dans la structure de l'
Arbre de Merkle dans l'image ci-dessus, pour vérifier la transaction D, un nœud n'a pas besoin de copier toutes les transactions A, B, C, D et E, mais seulement de copier les informations C, AB et EEEE pour produire la
racine de Merkle. Cela a conduit à l'émergence de nœuds qui n'ont pas une copie complète de la blockchain, ce qui est alors appelé
vérification de paiement simplifiée (SPV).
Référence : Guide du développeur Bitcoin - https://bitcoin.org/en/developer-guide#transaction-data (D.A. Harding - 2015, 12 janvier 2016) - https://bitcoin.org/en/glossary/simplified-payment-verification.
Exemple d'Arbre de Syntaxe Abstraite

Exemple d'Arbre de Merkle

Exemple de MAST
Alice peut dépenser les BTC (image de gauche), ou après trois mois, Bob et Charlie peuvent dépenser les BTC (image de droite) - vous avez seulement besoin de sauvegarder complètement depuis laracine (racine de Merkle) pour obtenir tous les sous-scripts.

Avantages de la mise en œuvre de MAST
1. Transactions plus petites
Vous pouvez ajouter autant de sous-scripts que vous le souhaitez.

2. Plus de confidentialité
Les avantages avec MAST sont de fonctionner de manière plus optimale, et d’améliorer la confidentialité lorsqu'ils sont combinés à d'autres méthodes telles que les seuils généralisés (de Pieter Wuille et Gregory Maxwell), les scripts sans script (d'Andrew Poelstra) et les contrats de logarithme discret (de Thaddeus Dryja).
3. Smart contract plus grand
Bitcoin a trois tailles d'octets différentes qui s'appliquent à chaque script en fonction du développement de l'engagement.

Avec MAST, vous ne pouvez pas dépasser la limite d'octets.
Limite de dix mille octets pour les scripts vides, de 520 octets pour P2SH, et de dix mille octets pour SegWit.
Références :
- https://github.com/jl2012/bips/blob/mast/bip-mast.mediawiki
- https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki
- http://www.mit.edu/~jlrubin/public/pdfs/858report.pdf
- https://bitcointechtalk.com/what-is-a-bitcoin-merklized-abstract-syntax-tree-mast-33fdf2da5e2f
- https://www.youtube.com/watch?v=Phn_Im2K_PY
- https://bitcoinops.org/en/topics/mast/
- https://themoneymongers.com/merkelized-abstract-syntax-tree-mast/
- https://diyhpl.us/wiki/transcripts/bitcoin-core-dev-tech/2017-09-07-merkleized-abstract-syntax-trees/
- Guide du développeur Bitcoin - https://bitcoin.org/en/developer-guide#transaction-data (D.A. Harding - 2015, 12 janvier 2016)
https://bitcoin.org/en/glossary/simplified-payment-verification
- Autres références voir le post #1