Cointelegraph Research выпустил пятую часть своей серии о ковенантах Bitcoin, в которой описан новый фреймворк под названием MATT (Merkleize All The Things) и opcode OP_CHECKCONTRACTVERIFY (OP_CCV). Предложение направлено на то, чтобы дать Bitcoin возможность переносить изменяемое состояние контракта через несколько транзакций, чего не хватает в стандартных скриптах Bitcoin, где каждая транзакция оценивается изолированно.

BTC / USD
Источник: CoinGecko. Цены ориентировочные.

Как MATT внедряет состояние в Taproot‑ключи

MATT опирается на существующий механизм твика Taproot, где публичный ключ вывода Q вычисляется как Q = P + t·G, где P — внутренний ключ, а t — тег‑хеш данных, которые нужно зафиксировать. Вместо того чтобы фиксировать только Merkle‑корень скриптового дерева, MATT предлагает также включать состояние контракта в твик. Состояние хешируется и включается в твик, позволяя следующему выводу перенести новое состояние, которое будет пересчитано в момент траты.

OP_CHECKCONTRACTVERIFY обеспечивает переходы состояния

Основная примитивная операция для MATT — OP_CHECKCONTRACTVERIFY. По данным отчёта, OP_CCV позволяет скрипту проверять, что Taproot‑ввод или‑вывод был твикнут с определённым куском данных состояния. Формат стека opcode выглядит так: <data> <index> <pk> <taptree> <mode> OP_CHECKCONTRACTVERIFY, при этом поддерживаются три режима работы: default (полное значение входа переходит в назначенный вывод), deduct (перемещается только сумма вывода, оставшаяся часть может идти на другие выводы) и ignore (проверка без ограничений по суммам). Эти режимы сохраняют стоимость, позволяя использовать отдельные входы для комиссии и избегая проблем с сжиганием средств, характерных для ранних ковенант‑дизайнов, таких как OP_CTV или SIGHASH_ANYPREVOUT.

Расширение выразительности с OP_CAT

Когда OP_CHECKCONTRACTVERIFY комбинируется с OP_CAT, фреймворк может конструировать и проверять Merkle‑доказательства в цепочке. У Taproot‑вывода ассоциированы два Merkle‑дерева: стандартное скриптовое дерево и отдельное дерево состояния, хранящее промежуточные шаги вычислений. OP_CAT конкатенирует байтовые строки, позволяя скрипту воссоздать Merkle‑доказательство текущего состояния, вычислить новый корень после перехода и затем с помощью OP_CCV заставить следующий вывод зафиксировать этот новый корень. Такой подход поддерживает системы fraud‑proof, аналогичные optimistic rollups, где большинство вычислений происходит вне цепочки, а только спорные шаги публикуются в цепочке для проверки.

Что будет дальше

Следующие шаги для MATT включат формальные BIP‑предложения и тестирование реализаций OP_CHECKCONTRACTVERIFY в Bitcoin Core сообществом. Следите за обновлениями в рассылке разработчиков Bitcoin и за развертываниями в тестовой сети, демонстрирующими состоянийные контракты, fraud‑proof хранилища или другие кейсы, описанные в серии.