Смарт-контракты в сети Lightning Network: техническое описание концепции

lightnet1v1
lightnet1v1

Компания Bitlum, которая занимается разработкой приложений поверх сети Lightning Network, специально для журнала ForkLog создала цикл статей о работе данной сети. В предыдущем материале были рассмотрены технические особенности Lightning Network и прогноз дальнейшего развития сети.

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

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

  • 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 используются несколько типов смарт-контрактов, а точнее их смесь:

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

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

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

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

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

Смарт-контракты в сети Lightning Network: техническое описание концепции

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

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

Смарт-контракты в сети Lightning Network: техническое описание концепции

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

Заключение

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

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

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

Подписывайтесь на новости ForkLog в Twitter!

Подписывайтесь на ForkLog в социальных сетях

Telegram (основной канал) Discord Instagram
Нашли ошибку в тексте? Выделите ее и нажмите CTRL+ENTER

Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!

*Ежедневная рассылка — краткая сводка наиболее важных новостей предыдущего дня. Чтение занимает не больше двух минут. Выходит в рабочие дни в 06:00 (UTC)
*Еженедельная рассылка — объясняем, кто и как изменил индустрию за неделю. Идеально подходит для тех, кто не успевает за новостным потоком в течение дня. Выходит в пятницу в 16:00 (UTC).

Мы используем файлы cookie для улучшения качества работы.

Пользуясь сайтом, вы соглашаетесь с Политикой приватности.

OK