Вы здесь

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

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

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

Исследуя математические свойства подписей Шнорра, Эндрю Поельстра из Blockstream обнаружил, что сами подписи могут конструироваться и модифицироваться специальными способами для обеспечения исполнения различных соглашений между сторонами. Условия трат вводятся в блокчейн, но полностью скрыты от него. Только участвующие стороны знают об условиях договора или о том, что договор вообще существует. Для остального мира транзакции выглядят совершенно обычными и неотличимыми от обычных трат. Поельстра назвал эту новую методологию «Скриптами без скриптов».

Предыстория

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

Скрипты

Блокчейн может заменить посредников и выступать в качестве якоря доверия для сторон, желающих совершать сделки. Активы могут храниться и передаваться в соответствии с программируемой логикой, которую оценивает сеть. Эта логика называется скриптом (или другими словами – сценарием), который определяется как «автоматизированная серия инструкций, выполняемых в определенном порядке». Биткоин использует скриптовый язык, основанный на старом языке программирования, который называется Forth, в то время как Ethereum использует язык Solidity, который компилируется в код виртуальной машины Ethereum (EVM).

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

Примечание: в Биткоине проводится работа по сокрытию ветвей контракта, которые не имеют отношения к конечному результату, с помощью так называемых MAST (Мерклизованные абстрактные синтаксические деревья).

Скрипты без скриптов

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

Чтобы смарт-контракты применяли только подписи, мы используем преимущества агрегации подписей Шнорра. Агрегация – это свойство, которое мы получаем из подписей Шнорра, поскольку они линейны. Это означает, что они могут добавляться и вычитаться, и результатом является допустимая подпись, соответствующая тому же добавлению или вычитанию открытых ключей. Это не относится к подписям ECDSA, которые в настоящее время использует Биткоин. С ECDSA добавление и вычитание подписей приводит к тарабарщине.

Чтобы визуализировать процесс, рассмотрим следующий (упрощенный) пример:

pubkey1 + pubkey2 + pubkey3 = pubkeyY
signature1 + signature2 + signature3 = signatureY

Мы привязываем биткоин к pubkey Y, который не является ключом, к которому у кого-либо есть доступ, но на деле он представляет собой сумму ключей pubkeys 1, 2 и 3. Подписи от каждого из ключей 1,2 и 3 можно суммировать, чтобы создать подпись для pubkey Y, и блокчейн даже не догадается, что на самом деле было три ключа, участвующих в создании подписи. Она будет выглядеть так же, как обычная подпись из pubkey Y, но сеть будет воспринимать ее как разрешение на расходование.

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

Адаптивные подписи

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

(Упрощенный) процесс происходит следующим образом. Алиса и Боб хотят обменять монеты. Сначала Алиса и Боб оба кладут монеты на 2 из 2-х адресов, где они выступают в качестве подписчиков. Алиса использует эфемерный, или другими словами одноразовый закрытый ключ, потому что она предоставит его Бобу как часть процесса. Алиса отправляет Бобу адаптивную подпись, которую Боб находит убедительной. Боб знает, что когда Алиса опубликует свою подпись, требуя свои монеты, и у него будет достаточно информации, чтобы вычислить ее закрытый ключ и получить свои монеты. Итак, Боб подписывает сделку, выпуская монеты Алисы. Алиса подписывает свою половину и передает транзакцию, чтобы получить свои монеты. Это позволяет Бобу вычислить ее ключ и подписать сделку, чтобы претендовать на свои монеты.

Плюсы

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

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

Категория: 
Биткоин для "чайников"
Технология: 
Голосов еще нет
263 / 0
Аватар пользователя Daritas
Публикацию добавил: Daritas
Дата публикации: пн, 11/25/2019 - 11:00

Что еще почитать:

Добавить комментарий