Смарт-контракты в сети Lightning Network: техническое описание концепции
Компания 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, теперь дадим абстрактное определение платежного канала, суть которого мы раскроем в следующей статье.
Платежный канал — это отношение между двумя пользователями, зафиксированное в блокчейне и регулируемое смарт-контрактом, которое позволяет обмениваться деньгами между двумя участниками в быстром формате без использования блокчейна.
В следующей статье мы рассмотрим, как именно изученные нами типы смарт-контрактов используются для создания платежного канала.
Подписывайтесь на новости ForkLog в Twitter!
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!