Lightning Network Часть №3: Смарт-контракты

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

Цикл статей состоит из следующих частей:

  • Lightning Network, Часть №1. Введение: описание предпосылок создания концепции Lightning Network, сравнительный анализ с другими платежными системами.
  • Lightning Network, Часть №2. Области применения: поверхностное описание технологии и примеры использования в различных областях.
  • Lightning Network, Часть №3. Смарт-контракты: объяснение основных блоков, необходимых для углубления в техническое описание концепции.
  • Lightning Network Часть №4. Платежный канал: объяснение понятия платежного канала и его применения для быстрого обмена Bitcoin.
  • Lightning Network Часть №5. Решение проблемы масштабирования. Объяснение использования платежных каналов для построения платежной сети и решения проблемы масштабирования.

В предыдущих статьях мы выделили свойства, присущие Lightning Network, а также дали поверхностной описание сети. Мы выделили два элемента: узел и платежный канал.

В этой статье нашей задачей будет разобраться в ключевых элементах, необходимых для понимания термина “платежный канал”. Такими элементами являются смарт-контракт, htlc, multisig, time-lock.

Смарт-контракт

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

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

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

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

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

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

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

В Lightning Network используются несколько типов смарт-контрактов, а точнее их смесь:

  • 2x2 multisig — это смарт-контракт, который открывается при условии предоставления электронной подписи двумя людьми. Как правило, это те же самые люди, которые предоставили деньги.
  • hash time lock contract (htlc) — это смарт-контракт, который разблокирует деньги, если предоставлено секретное число x, которое первоначально есть только у создателя смарт-контракта. Передача числа x кому-либо другому по сути означает передачу денег. Важно отметить, что так как транзакции передаются в открытом виде, то число x будет видно всем, поэтому вместо числа x в смарт-контракт записывают h = H(x), где H — это хеш-функция. Мы еще вернемся к объяснению этого смарт-контракта в последней статье.
  • time-lock — это смарт-контракт, который блокирует деньги до указанного в нем времени.

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

Отправка транзакции

Когда вы хотите потратить деньги, криптовалютный кошелек сканирует блокчейн / базу данных на наличие принадлежащих вам сейфов (inputs) и генерирует доказательства владения этими сейфами (segregated witness). Далее он берет предоставленный вами адрес для отправки и генерирует смарт-контракт, который заблокирует ваши деньги в новом сейфе (outputs), и этот сейф сможет открыть только получатель.

Вышеперечисленные данные объединяются в одну структуру — транзакцию — и отправляются в сеть майнеров.

Рисунок №1: Строение биткоин-транзакции

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

Рисунок №2: Отправка денег от Алисы к Бобу.

Заключение

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

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

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

Данная статья была опубликована на сайте Forklog, хотим поблагодарить их за информационную поддержку.

Like what you read? Give Andrey Samokhvalov a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.