BTC/USD 59846.57 -1.72%
ETH/USD 2302.54 -2.89%
LTC/USD 63.69 0.23%
BRENT/USD 73.55 0.86%
GOLD/USD 0.00 0.00%
RUB/USD 91.67 0.26%
Tokyo
Moscow
New-York
300

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

0

Аппаратные мощности биткойна ограничены, а смарт-контракты ресурсоёмки. Даже если биткойн поддерживает функциональность базового смарт-контракта, биткойн и контракт не находятся в идеальном рабочем соответствии. Но это можно исправить. К такому заключению пришёл математик из Blackstream Эндрю Поэльстра. Итоги своего исследования «Бесскиртовые скрипты» он представил на блокчейн-мероприятии "Масштабирование биткойна" в Стэнфорде. Эти самые скрипты, по выводу математика, могут полностью "исключить из уравнения" некоторые смарт-контракты, а именно – вывести их из блокчейна, сохранив при этом всю систему безопасности биткойна. 

Andrew Poelstra

Суть исследования

Смарт-контракты, впервые предложенные ветераном цифровых валют Ником Сабо в 1990-х, представляют собой самоисполняющиеся контракты. То есть, при выполнении условий контракта денежные средства автоматически переводятся от одного участника сделки к другому. Например, если кто-то исполняет песню в стриме, оплата самостоятельно перечисляется от стримера к ее автору/исполнителю по факту.

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

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

Биткойн всегда поддерживал функциональность смарт-контрактов, хотя последние часто ассоциируются со вторым поколением продуктов блокчейна, такими как эфириум. На самом деле, любая биткойн-транзакция технически является смарт-контрактом: денежные средства перемещаются при условии предоставления действительной криптоподписи. Более продвинутые смарт-контракты, такие как multising и timelocks, используют протоколы второго уровня - например, LighhningNetwork.

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

Schnorr-подпись

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

Schnorr позволяет агрегировать подписи, то есть математическим путём трансформировать несколько подписей в одну. Важно, что данные математические операции линейны. Это означает возможность выполнения относительно простых, но информативных математических действий над данными подписями. 

Сема работы Schnorr в упрощённом виде:

Приватные ключи и подписи являются в действительности лишь числами, в которых значение вычисляется на основе предыдущих результатов. Так как в данной статье приводится упрощенное объяснение, давайте присвоим значение 10 некому приватному ключу. Первая половина Schnorr-подписи, вычисляемая из данного ключа, равна 10000. Другой ключ имеет значение 15, вторая половина Schnorr-подписи равна 15000. В данном упрощенном примере итоговая Schnorr-подпись равна 25000 (10000 + 15000).

То, что обе части подписи являются числами, делает возможным проведение математических операций между ними. В нашем примере разность между двумя значениями равна 5000 (15000-10000). Конечно, в реальности все гораздо сложнее, но, в целом, линейность Schnorr-подписей позволяет использовать некоторые математические трюки. 

Смарт-контракт или нет

Теперь давайте представим, что стример хочет прослушать песню исполнителя. Исполнитель владеет авторскими правами на эту песню, и она будет доступна для стримера только в том случае, если подпись исполнителя передана серверу, где хранится песня. Так как мы используем упрощённое объяснение, давайте предположим, что эта "подпись песни" равна 7000. Стример готов заплатить за неё один биткойн, так как очень хочет прослушать эту песню.

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

Второй шаг несколько сложнее. Исполнителю известно, чему равна его половина Schnorr-подписи - предположим, 8000. Он также знает, что подпись песни равна 7000. Таким образом, исполнитель может посчитать разность между двумя значениями - 1000. Это называется адаптер подписи.

Далее исполнитель передает адаптер - 1000 - стримеру.  В этот момент и происходит криптографическая магия.  Модифицируя стандартный метод подтверждения подписи, стример может подтвердить действительность полученного адаптера подписи (1000), вычитая из значения своей половины Schnorr-подписи значение подписи песни исполнителя, еще даже не имея доступа к другой части Schnorr-подписи (все это – благодаря криптографической фишке, называемой "доказательство с нулевым разглашением информации", которая может быть использована во множестве других ситуаций, помимо рассматриваемого кейса с подписями).

Теперь, подтвердив подлинность адаптера подписи, стример может передать свою часть Schnorr-подписи исполнителю. Как только исполнитель получит вторую половину подписи, он создаст полную подпись и об этой операции станет известно всей биткойн-сети. Кроме того, исполнитель автоматически раскроет свою половину Schnorr-подписи (8000) стримеру.

Используя половину Schnorr-подписи исполнителя, стример может вычесть адаптер подписи (1000). Вычитая адаптер подписи из второй половины Schnorr-подписи исполнителя (8000-1000), стример получает "подпись песни" 7000. Теперь он может ее прослушать.

Другими словами, сообщая сети о проведении транзакции, которая по условиям выплачивает сети один биткойн, исполнитель автоматически продает стримеру подпись, то есть срабатывает смарт-контракт. 

Таким образом, с точки зрения блокчейна проведённая операция и есть смарт-контракт, с точки зрения остального мира - самая обыкновенная транзакция. Никакой информации о смарт-контракте, кроме "отчета о завершении транзакции", в блокчейне не сохранится, и никто не будет знать ни о том, что контракт был исполнен, ни о самой песне. Никому, кроме сторон сделки, нет смысла хранить метаданные контракта.