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

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

Ковенант

Что такое ковенант?
Ковенант представляет собой правило расходования, которое ограничивает, куда биткоин может уйти дальше, а не только кто может им распоряжаться, и сегодня ни один опкод в Bitcoin Script не может его обеспечить.

Каждый скрипт в блокчейне отвечает на один вопрос: разрешено ли это расходование? Ковенант позволил бы скрипту задать второй вопрос о транзакции, которая его расходует, и все предложения, которые это разрешают (BIP-119, BIP-118, BIP-345, BIP-347), годами остаются неактивированными. На то, что вы храните сегодня, это не влияет, но продукты для хранилищ и наследства, которые постоянно просят, ждут именно этого.

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

Статус: ни один опкод ковенанта не активен в основной сети Bitcoin. Каждый описанный ниже проект является предложением, и ни у одного из них нет параметров активации, включенных в Bitcoin Core.

У недостающей возможности есть точное название: интроспекция. Когда узел выполняет скрипт, скрипт может смотреть на подписи, хеши, блокировки по времени и стек, но он не может читать выходы транзакции, которая расходует монету. Именно из-за этого единственного слепого пятна биткоин может выразить «двое из этих трех человек должны договориться» и не может выразить «эти деньги могут уйти только на тот адрес».

Предложения закрывают этот пробел двумя разными способами, и разница между ними составляет суть спора.

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

Подход на основе интроспекции дает скрипту составные части и позволяет ему выполнять арифметику. Сочетание OP_CAT с проверкой подписи или добавление OP_CHECKSIGFROMSTACK позволяет скрипту собрать хеш подписи транзакции из элементов стека и проверить его, после чего скрипт может требовать от выходов чего угодно. Это универсально, и это рекурсивно: ковенант может настаивать на том, чтобы следующий выход нес тот же ковенант.

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

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

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

Liquid, сайдчейн на основе Elements, выполняет tapscript с опкодами интроспекции, которые напрямую читают выходы расходующей транзакции, и его федерация использует их для привязки. Любой также может протестировать предложенные опкоды биткоина в собственных signet, прежде чем решать, хотел бы он видеть их в основной сети.

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

Ковенант vs эскроу-контракт

Ковенант ограничивает место назначения; эскроу-контракт ограничивает подписантов. Они решают разные половины одной и той же задачи, и доступна только одна из них.

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

Не путать с

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

Можно ли использовать ковенант в биткоине уже сейчас?

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

Почему ковенанты вызывают споры?

Потому что общие версии рекурсивны: монета могла бы нести ограничение, которое заново прикрепляется к каждому будущему расходованию. Критики опасаются навсегда обремененных монет; сторонники указывают, что заранее подписанные транзакции уже имитируют этот эффект.

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

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

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

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