Скрипты без скриптов: поддержка смарт-контрактов без смарт-контрактов в Биткойне

Известно, что пропускная способность блокчейна Биткойна ограничена. При этом смарт-контракты могут быть ресурсоёмкими. Поэтому, хотя Биткойн-блокчейн всегда поддерживал основные функции смарт-контрактов, две эти технологии никогда не подходили друг другу.

Однако, недавнее исследование, проведённое по инициативе Эндрю Поэлстра (Andrew Poelstra) – математика компании Blockstream — может помочь исправить это. Недавно представленное в качестве ключевой части его презентации на конференции  Scaling Bitcoin Stanford предложение под названием «скрипты без скриптов»  (Scriptless Scripts) имеет потенциал для полного переноса некоторых смарт-контрактов с Биткойн-блокчейна, оставляя при этом в распоряжении пользователей все средства безопасности сети Биткойн.

Биткойн и смарт-контракты

Смарт-контракты, впервые предложенные ветераном цифровой валюты Ником Сабо (Nick Szabo) в 1990-х годах, по сути являются самоисполнимыми договорами. В наиболее типичной варианте применения они посылают деньги от одного участника сделки к другому при выполнении определенных условий. Например, если кто-то прослушивает песню, автоматически происходит оплата от получателя контента к исполнителю (правообладателю).

В то время как смарт-контракты часто ассоциируются со «вторым поколением» блокчейнов, таких как Эфириум, Биткойн тоже всегда поддерживал основные функции смарт-контрактов. Некоторым образом, любая Биткойн-транзакция технически является смарт-контрактом: средства обычно перемещаются при условии предоставления действительной криптографической подписи. Немного более продвинутые смарт-контракты, такие как мультиподпись (multisig) и временные блокировки (timelocks), используются для работы протоколов второго уровня, таких как Lightning Network.

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

Такое исполнение контракта по всей сети также означает, что об условиях контракте будет известно не только сторонам контракта: вся сеть будет точно знать суть контракта. В дополнение, это также негативно отразится на взаимозаменяемости. Если смарт-контракт по какой-то причине окажется непопулярен, репутация связанных с ним средств — публично видимых на блокчейне – может быть подпорчена.

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

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

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

Шнорр

Первоначально, Поэлстра начал исследование «скриптов без скриптов» (название, которое он также придумал сам) в контексте протокола Mimblewimble. Это урезанная версия Биткойна предлагает более высокую конфиденциальность и лучшую масштабируемость, но не поддерживает скрипт (элементы кода, встроенного в Биткойн-транзакции, которые поддерживают самые основные функции смарт-контрактов).

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

Главное в «скриптах без скриптов» состоит в том, что (довольно) регулярные криптографические подписи могут косвенно указывать на то, что не является частью транзакции, включающей саму эту подпись. Другими словами, когда кто-либо прикладывает подпись для проверки обычной Биткойн-транзакции, считается, что смарт-контракт, даже находящийся вне блокчейна, добросовестно исполнен.

Это становится возможным благодаря подписям Шнорра (Schnorr signatures). Эти типы подписей пока не реализованы в протоколе Биткойна, однако, возможно, что они начнут применяться уже в течение года или чуть позже.