Сокращенный перевод статьи Питера Вулле и Эндрю Поэльстра в блоге Blockstream на Medium.
В биткоине всегда был механизм, позволяющий тратить монеты более сложным (не только через один ключ) методом: система скриптов (Script). И хотя скрипты сегодня в первую очередь используется в платежах с одним ключом, они также являются основой для кошельков с мультиподписью, атомарных свопов и Lightning Network.
Однако это еще не всё. Скрипт может использоваться для представления сложных условий, необходимых для совершения транзакции: например, "два из A, B, C" и "D или (E и F)", где каждый A-F представляет уникальный ключ.
Одна из причин, по которой мы не слишком близки к использованию всего потенциала скриптов, заключается в том, что создание скриптов для нетривиальных задач является обременительным: сложно проверить их правильность и безопасность, а еще труднее найти самый оптимальный метод их применения.
И это лишь часть проблемы: даже когда у вас есть безопасный скрипт, разработка приложений и протоколов для согласования и построения транзакций с их использованием требует много отдельной разработки каждый раз, когда создается новая конструкция. Любой изменение часто требует сопоставления совместимых скриптов, и каждое добавление требует больше ресурсов для анализа и обеспечения их безопасной работы.
Но что, если вместо этого биткоин мог бы работать с любым скриптом, а не только с несколькими? Мы бы не были ограничены использованием одноразовых проектов и могли бы приступить к разработке приложений, которые создают и используют созданные на лету скрипты на основе определенных пользователем требований. Разработчики кошельков могут также ввести больше вариантов на основе скриптов, сохраняя при этом совместимость с другими кошельками.
Miniscript — это язык для представления биткоин-скриптов в структурированном виде, обеспечивающий эффективный анализ, сопоставление, общие подписи и многое другое. Создание скриптов, удобных для восприятия человеком (или разработчиком...), является лишь одной из особенностей Miniscript. Его основная цель — включить автоматическую логику над Script.
Одним из возможных вариантов примерения Miniscript может стать поиск оптимального скрипта, который реализует заданный набор условий расходования. В биткоин-скрипте есть много разных способов требовать подписи. Даже для опытного разработчика правильный выбор может зависеть от относительной вероятности выполнения различных условий, и его будет сложно рассчитать. Наш онлайн-компилятор может мгновенно найти оптимальный Miniscript, соответствующий определенному способу расходования.
Как только эффективный скрипт найден, общим препятствием является отсутствие взаимодействия между различными механизмами расходования. Пользователи, которые хотят реализовать, например, долгосрочную временную блокировку или сложные требования к мультиподписи, могут опасаться, что их контрагенты не имеют (или не будут иметь) программное обеспечение для распознавания и расходования монет определенным способом.