Как запрограммировать будущие траты биткоина

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

«РБК-Крипто» не дает инвестиционных советов, материал опубликован исключительно в ознакомительных целях. Криптовалюта — это волатильный актив, который может привести к финансовым убыткам.

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

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

Хранилище с окном для отмены

Допустим, компания хранит 10 биткоинов. Обычный вывод проходит в два этапа: сначала создается заявка, затем нужно подождать 144 блока — примерно сутки. Если ключ украден, злоумышленник запустит операцию, но не завершит ее сразу. Компания заметит движение и переведет средства по аварийному пути — например, на кошелек с подписями двух руководителей и внешнего хранителя.

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

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

OP_CHECKTEMPLATEVERIFY, или CTV (проверка шаблона транзакции), описан в BIP-119. BIP (предложение по улучшению биткоина) — технический документ об изменении протокола. CTV проверяет версию транзакции, время блокировки, число входов, их последовательности и выходы, включая суммы и условия получения. Несовпадение обязательного параметра блокирует перевод.

Представим биржу, которой нужно вернуть средства 10 тыс. клиентов во время роста комиссий. Она создает один выход, связанный с деревом будущих выплат. Каждый клиент может проверить свою сумму, а отдельные пакеты переводов публикуются позже. CTV не увеличивает пропускную способность сети биткоин, но позволяет распределить расчеты по времени.

Недостаток CTV — жесткость. Если в шаблоне указан неверный выход или не предусмотрено повышение комиссии, исправить схему после получения монет нельзя. Поэтому заранее нужны запасные ветви: повторная отправка, аварийный возврат и добавление комиссии.

Что предлагает OP_CAT

OP_CAT (операция объединения данных) соединяет два элемента внутри сценария транзакции. Сам по себе код не задает маршрут монет. Он позволяет проверять более сложные структуры данных, на основе которых можно создавать хранилища, деревья условий и ковенанты.

Например, хранилище может разрешить вывести 1 биткоин, а оставшиеся 9 вернуть под прежнее ограничение. Другой сценарий предусматривает три пути: обычный вывод через сутки, немедленный перевод на холодный кошелек или передачу наследнику после длительного бездействия. Такие правила более гибкие, чем у одного шаблона CTV, но сложнее для проверки.

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

Совместные пулы

Допустим, 100 участников внесли по 0,1 биткоина в общий выход. Внутри пула они меняют распределение без публикации каждой операции в блокчейне. Один участник может раскрыть предусмотренную ветвь и забрать свою долю без согласия остальных.

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

Риски и текущий статус

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

BIP-119 сохраняет статус черновика. BIP-347 для OP_CAT имеет статус «завершен», но это относится к спецификации, а не к активации команды. Ни CTV, ни OP_CAT не действуют в основной сети биткоин. Для включения потребуется софтфорк — совместимое ужесточение правил протокола.

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

Узнать больше по теме
Транзакция: понятие, виды и принципы работы
Разбираем, что такое транзакция, какие ее виды бывают и как она обрабатывается.
Читать дальше