21 апреля 2021

Что такое смарт-контракты: теория со схемами и примерами

Сегодня смарт-контракты (smart-контракты, умные контракты, интеллектуальные контракты) на слуху у всех, кто так или иначе интересуется блокчейном и криптовалютами.

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

Т.е. это программа, которая осуществляет определенные действия в ответ на выполнение заданных условий (по схеме “если…то…”).

Почему “умный”?

Вот что на это ответил автор идеи, криптограф-юрист Ник Сабо:

Я называю эти новые контракты «умными», потому что они гораздо более функциональны, чем их неодушевленные бумажные предки.

 

Умный контракт — это набор обещаний, определенных в цифровой форме, включая протоколы, в рамках которых стороны выполняют эти обещания”.

Разные взгляды на суть

С тех пор (а это были 90-е годы прошлого века) многие работают над раскрытием потенциала смарт-контрактов, как теоретически, так и на практике.

Вот еще несколько более современных определений смарт-контракта:

  • компьютерный алгоритм, предназначенный для формирования, контроля и предоставления информации о владении чем-либо. Чаще всего речь идет о применении технологии блокчейна (Википедия)
  • юридический договор или его элемент, который представлен или исполняется посредством ПО (юридическая точка зрения)
  •  это фрагмент кода, компьютерный алгоритм, созданный для выполнения конкретных задач при наступлении заблаговременно определенных условий (техническое определение).

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

Немного истории 

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

Смарт-контракты биткоина

С распространением блокчейна, эта идея обрела практический смысл. Некоторые принципы смарт-контрактов были воплощены в протоколе биткоина.

Изначально протокол биткоина не предполагался как протокол смарт-контрактов — а лишь для передачи самых простых данных (входов и выходов транзакций, детально в статье).

Однако, на блокчейне биткоина  все же можно исполнять простейшие логические операции и фактически создать несколько вариантов смарт-контрактов, не обладавших полнотой по Тьюрингу (язык смарт-контрактов— Script, пример таких алгоритмов — ниже).

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

Примеры смарт-контрактов на блокчейне биткоина:

  • Эскроу — для использования средств нужна подпись третьего агента
  • Мультисиг — транзакция может быть завершена только после подписи нескольких лиц из заданного количества “владельцев” контракта, количество и адреса участников заранее определены в момент создания такого кошелька
  • Завещание — если кошелек не активен, наследники получают средства (вернее — владелец адреса тратит в любое время, а вот наследники могут потратить выходы из кошелька только после блока с определенной датой, каждая новая транзакция пересылает сдачу с продлением этого срока)
  • Сейф — к средствам нет доступа до определенной даты
  • Атомик свопы и скрипты создания платежных каналов — лейер 2 и децентрализованные обменки

Из-за сложности реализации более сложной логики в блокчейне биткоина возникла необходимость в разработке новых платформ.

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

Потенциал смарт-контрактов и недочеты BTC оценил в свое время Виталик Бутерин. Он разработал платформу Ethereum, позволяющую создавать тьюринг-полные смарт-контракты.

Основные отличия — язык программирования Solidity и возможность хранить в блокчейне информацию о состоянии (statefulness). Т.е. сеть Ethereum воспринимает каждую транзакцию как часть системы, в то время как биткоин — как совершенно отдельную.

В Эфириуме также есть возможность создавать смарт-контракты для генерации токенов. Самым распространенным стал токен стандарта ERC-20. Такая стандартизация позволила упростить взаимодействие между кошельками, проектами, биржами и пр.

Сегодня многие проекты разрабатывают свои платформы для смарт-контрактов (Tron, NEO, EOS, Hyperledger Fabric, Aeternity, Waves, Ontology, VeChain, Stellar), которые отличаются алгоритмом консенсуса, пропускной способностью, стоимостью обработки транзакций и функциональностью.

Однако Ethereum со стандартом ERC-20 и по сей день остается самой востребованной платформой.

Виды смарт-контрактов 

Рассмотрим, как смарт-контракты классифицируют по нескольким критериям.

  1. Среда выполнения:
  • централизованные смарт-контракты (действуют на централизованной платформе, с одним валидатором, реестр находится на одном сервере. Пример: контракты провайдеров мобильной связи или банков);
  • децентрализованные (созданные в блокчейн).

2. Процесс постановки задач и выполнения условий смарт-контракта:

  • произвольно программируемые (тьюринг-полные);
  • ограниченные (тьюринг-неполные);
  • предустановленные (строго типизированные).

3. Уровень приватности (касательно условий смарт-контракта):

  • полностью открытые;
  • частично открытые;
  • полностью конфиденциальные.

Как работают смарт-контракты в блокчейн

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

Элементы смарт-контрактов:

  1. Платформа, в которой написан алгоритм (например, Ethereum).
  2. Предмет — активы, подлежащие обмену на основании смарт-контракта (товары, услуги, крипта, данные).
  3. Условия, которые необходимо выполнить для осуществления обмена.
  4. Стороны, участвующие в обмене, имеющие уникальную цифровую подпись.
  5. Оракулы (по необходимости) — независимые источники внешней информации.

 Характерные черты смарт-контрактов:

  1. Распределенность (они реплицированы и распределены по всем узлам сети)
  2. Детерминированность (четкий алгоритм действий и всегда предсказуемый результат).
  3. Автономность (после инициирования условия выполняются автоматически, без решения посредников).
  4. Неизменность (обычно после создания в них нельзя внести изменения).
  5. Настраиваемость (в процессе создания можно прописать любой вычислимый алгоритм).
  6. Доверительность (стороны доверяют протоколу, ведется учет всех данных).
  7. Прозрачность (в основном, исходный код — открыт. Бывают и исключения — MAST — но после выполнения код все равно открывается).

Схема работы смарт-контрактов

Часто смарт-контракт активируется лицом, которое хочет осуществить обмен. Корректное соблюдение условий смарт-контракта подтверждается узлами сети.

Технологию смарт-контракта схематически можно изобразить так:

  1. Лицо инициирует транзакцию
  2. Информация о ней попадает в сеть, состоящую из нод (узлов сети блокчейн)
  3. Ноды, на основании определенных алгоритмов консенсуса, подтверждают информацию о статусе инициатора и саму транзакцию.
  4.  После подтверждения транзакция попадает в состав нового формирующегося блока (который включает другие транзакции)
  5. Новый блок присоединяется к цепи блоков (блокчейн)
  6. Транзакция завершена

Применение смарт-контрактов

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

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

Схема применения (например, приобретение электронной книги за криптовалюту):

  1. По условиям смарт-контракта, доступ к книгам открывается после оплаты определенного количества монет.
  2. Покупатель инициирует запрос на получение доступа к книге и отправляет монеты
  3. Узлы, получив информацию от сторон, проверяют соблюдение условий контракта (статус сторон, права сторон на владение активами, соответствие суммы монет) и подтверждают транзакции при соблюдении условий.
  4. Эти транзакции попадают в блок, а затем — в сеть.
  5. Транзакции завершены: продавец получает монеты, покупатель — доступ к книге.

Пока самым успешным примером применения смарт-контрактов можно назвать ICO (первичное предложение монет). Кроме того, смарт-контракты активно применяются на рынке децентрализованных финансов (DeFi), токенизации активов, обработки платежей для dApps и DEX, в играх и мобильных приложениях.

Большинство ICO используют смарт-контракты на платформе Ethereum.

Условия функционирования смарт-контрактов

Чтобы смарт-контракты можно было широко применять в реальной жизни, для них необходимо создать определенные условия.

  • Во-первых, нужна среда — блокчейн, т.е. распределенный реестр данных, на базе которого будет создаваться смарт-контракт, и прочая инфраструктура.
  • Во-вторых, важно распространение криптовалюты как платежного средства (пока никакое другое не подходит) и повышение доверия к ней.  Смарт-контракты криптовалюту используют как “топливо”, расчетную единицу.
  • В-третьих, необходимо расширить круг лиц, имеющих доступ и возможности использовать смарт-контракты.
  • И в-четвертых, нужно правовое регулирование использования: смарт-контракты, криптовалюты являются предметом правового регулирования, которое только зарождается.

Плюсы и минусы смарт- контрактов

Так что же делает смарт-контракты такими перспективными и востребованными?

И что, в то же время, мешает им “захватить мир”?

Плюсы Минусы
Независимость (отсутствие посредников) Репутация (нет полноценного доверия общества)
Безопасность (вся информация надежно хранится в блокчейн в зашифрованном виде) Юридический статус (неурегулированность законом мешает внедрению в разные сферы жизни)
Безошибочность (нет человеческого фактора, высокая точность исполнения) Риск ошибок в коде, юридическая корректность оцифровки условий контракта
Скорость (автоматизированные процессы происходят практически мгновенно) Сложность реализации (интеграция высоких технологий во все сферы жизни пока слишком ресурсозатратна)
Экономия (нет операционных расходов и посредников, кроме платы за газ) Расчеты в криптовалюте (крипта не признана законным платежным средством)
Прозрачность (все условия и результаты заранее известны) Оракулы (потребность в надежных внешних источниках информации)
Неизменяемость (нельзя внести изменения в уже созданный контракт) Неизменяемость (отсутствие гибкости условий, невозможность исправления ошибки)

Создание и разработка смарт-контрактов

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

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

Для начала, исходя из целей проекта, нужно выбрать децентрализованную платформу для создания смарт-контракта (Ethereum, Tron, Lisk, Cardano, Hyperledger Fabric, Nem, Stellar, NEO, Ontology …).

Основные языки программирования для смарт-контрактов: JavaScript, Solidity, Fe, Rust, Vyper, Script, Serpent.

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

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

Итог

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

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

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