Перейти к содержимому
buybitcoinsmart

Глоссарий / Протокол и обновления

MAST

Другие названия: Merkelized Alternative Script Tree.

Что такое MAST?
MAST скрывает за деревом Меркла каждое условие расходования, которое вы не используете, поэтому раскрытие одной ветви при трате сохраняет остальные в тайне и вне блокчейна.

Определено в BIP-341.

Идея появилась раньше ее внедрения. Два предложения, BIP-114 и BIP-116, описали ее в 2016 и 2017 годах, и ни одно из них не было активировано; Taproot внедрил ее в 2021 году как taptree, при трате по пути скрипта раскрывается один лист плюс доказательство размером 32 байта на каждый уровень. Для кошелька с несколькими путями восстановления цепочка узнает только о том пути, который вы действительно использовали.

Как это работает

Дерево скриптов сворачивается в один хеш, и именно на этот хеш ссылается адрес.

Начните с условий, которые вам нужны. Скажем, четыре: ваш повседневный ключ, семейный кворум два из трех, ключ юриста после года бездействия и аварийный ключ, хранящийся в другом месте. Каждое условие записывается как отдельный небольшой скрипт, и каждое хешируется в лист. Листы попарно объединяются и хешируются, полученные результаты снова попарно объединяются и хешируются, и процесс заканчивается одним корнем размером 32 байта.

При трате раскрываются использованный лист, его скрипт и хеши соседних узлов на пути от этого листа к корню. Два уровня дерева означают два хеша соседних узлов, 64 байта, и любой может пересчитать корень и подтвердить, что скрипт был в него включен. Остальные три условия никогда не появляются. Никто не узнает, что существует ключ юриста, что семейный кворум был два из трех или что ключ, хранящийся в другом месте, когда-либо входил в схему.

Стоимость растет с логарифмом числа условий, и именно поэтому структуру стоит использовать. Дерево из 8 скриптов добавляет 3 хеша в свидетель (witness), дерево из 128 скриптов добавляет 7, а BIP-341 допускает глубину в 128 уровней, поэтому блок управления, сопровождающий трату по пути скрипта, составляет не более 4129 байт.

С названиями всегда была путаница. MAST раскрывается как merkelized alternative script tree и как merkelized abstract syntax tree в зависимости от того, кто пишет; второе происходит из BIP-114, где дерево содержало части одного скрипта, а не набор альтернатив. На практике оба обозначают одну и ту же конструкцию.

Где это встречается

Каждый адрес Taproot, у которого есть более одного способа траты, использует MAST, независимо от того, употребляет ли кошелек это слово.

Кошельки наследования с блокировкой по времени (timelock) являются самым ясным случаем. Liana, например, пополняет адрес, taptree которого содержит обычный ключ расходования и ветвь восстановления, становящуюся доступной после фиксированной задержки, и обычная трата вообще никогда не публикует ветвь восстановления. Lightning использует ту же форму для своих более новых выходов каналов, сохраняя путь наказания скрытым при кооперативном закрытии.

Есть аспект комиссий, который стоит знать до того, как строить такое дерево. Баланс важен: лист, который вы рассчитываете использовать часто, должен находиться ближе к вершине дерева, потому что каждый дополнительный уровень добавляет 32 байта в свидетель каждой траты, проходящей через него. Кошельки, позволяющие задать структуру дерева, обычно делают это за вас, но координирующее программное обеспечение, которое сваливает все условия в плоское сбалансированное дерево, заставит обычный путь платить за редкие.

MAST vs Taproot

MAST представляет собой дерево; Taproot представляет собой дерево плюс запасной выход. Чистая конструкция MAST заставляла бы каждую трату раскрывать какой-либо скрипт, поэтому цепочка всегда узнавала бы, что контракт существовал, даже если бы ничего не узнала о неиспользованных ветвях.

Taproot добавляет ключ в корне. Адрес ссылается на внутренний публичный ключ, скорректированный корнем Меркла, и если все участники согласны, они подписывают скорректированным ключом и не публикуют ничего, кроме одной подписи. Такую трату невозможно отличить от платежа одного человека. Дерево по-прежнему существует, по-прежнему исполняемо и просто никогда не показывается. MAST обеспечивает конфиденциальность между ветвями, а Taproot обеспечивает конфиденциальность между контрактом и обычным платежом.

Не путать с

Часто задаваемые вопросы

Стоит ли трата с MAST дороже обычной?

Да, трата по пути скрипта оплачивает раскрытый скрипт плюс 32 байта за каждый уровень дерева. Экономия возникает по сравнению с альтернативой, то есть публикацией каждого условия расходования, которое вы когда-либо написали.

Является ли MAST отдельным обновлением, которое нужно включать?

Нет. MAST появился внутри Taproot как taptree, поэтому любой кошелек, создающий адрес bc1p с более чем одним условием расходования, уже его использует.

Читайте далее

Связанные термины

Еще в разделе «Протокол и обновления»

Читать эту страницу на английском