Что такое смарт-контракты: теория со схемами и примерами
- Luda Kukuetu
2024-04-08
8 мин
- 22
8 212
Все, что вы хотели знать о смарт-контрактах, их сути, видах, особенностях создания и применения на практике.
Что такое смарт-контракт простыми словами
Сегодня смарт-контракты (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 и по сей день остается самой востребованной платформой.
Виды смарт-контрактов
Рассмотрим, как смарт-контракты классифицируют по нескольким критериям.
-
Среда выполнения:
-
централизованные смарт-контракты (действуют на централизованной платформе, с одним валидатором, реестр находится на одном сервере. Пример: контракты провайдеров мобильной связи или банков);
-
децентрализованные (созданные в блокчейн).
2. Процесс постановки задач и выполнения условий смарт-контракта:
-
произвольно программируемые (тьюринг-полные);
-
ограниченные (тьюринг-неполные);
-
предустановленные (строго типизированные).
3. Уровень приватности (касательно условий смарт-контракта):
-
полностью открытые;
-
частично открытые;
-
полностью конфиденциальные.
Как работают смарт-контракты в блокчейне
Смарт-контракт представляет собой приложение (или программу), созданное и работающее в блокчейне. Это цифровое соглашение, в котором соблюдение определенного условия всегда приводит к одному результату — обмену активами, правами, данными.
Элементы смарт-контрактов:
-
Платформа, в которой написан алгоритм (например, Ethereum).
-
Предмет — активы, подлежащие обмену на основании смарт-контракта (товары, услуги, крипта, данные).
-
Условия, которые необходимо выполнить для осуществления обмена.
-
Стороны, участвующие в обмене, имеющие уникальную цифровую подпись.
-
Оракулы (по необходимости) — независимые источники внешней информации.
Характерные черты смарт-контрактов:
-
Распределенность (они реплицированы и распределены по всем узлам сети).
-
Детерминированность (четкий алгоритм действий и всегда предсказуемый результат).
-
Автономность (после инициирования условия выполняются автоматически, без решения посредников).
-
Неизменность (обычно после создания в них нельзя внести изменения).
-
Настраиваемость (в процессе создания можно прописать любой вычислимый алгоритм).
-
Доверительность (стороны доверяют протоколу, ведется учет всех данных).
-
Прозрачность (в основном, исходный код открыт. Бывают и исключения — MAST — но после выполнения код все равно открывается).
Схема работы смарт-контрактов
Часто смарт-контракт активируется лицом, которое хочет осуществить обмен. Корректное соблюдение условий смарт-контракта подтверждается узлами сети.
Технологию смарт-контракта схематически можно изобразить так:
-
Лицо инициирует транзакцию.
-
Информация о ней попадает в сеть, состоящую из нод (узлов сети блокчейн).
-
Ноды, на основании определенных алгоритмов консенсуса, подтверждают информацию о статусе инициатора и саму транзакцию.
-
После подтверждения транзакция попадает в состав нового формирующегося блока, который включает другие транзакции.
-
Новый блок присоединяется к цепи блоков (блокчейну).
-
Транзакция завершена.
Применение смарт-контрактов
Сегодня мы наблюдаем зарождение эры смарт-контрактов. Потенциал и преимущества позволяют внедрять их в сферах, где требуется четкое, прозрачное и оперативное выполнение простых рутинных задач, для которых не нужно дорогостоящее юридическое сопровождение.
Например, контроль поставок (логистика), интернет-продажи, ведение реестров (регистрация прав собственности, медицинские карты), ряд банковских услуг (например, клиринг), бухгалтерский учет, страхование, голосование, идентификация личности и прочее. Т.е. сферы, где рутинную работу клерка можно успешно автоматизировать, убрав риски человеческого фактора.
Схема применения (например, приобретение электронной книги за криптовалюту):
-
По условиям смарт-контракта, доступ к книгам открывается после оплаты определенного количества монет.
-
Покупатель инициирует запрос на получение доступа к книге и отправляет монеты.
-
Узлы, получив информацию от сторон, проверяют соблюдение условий контракта (статус сторон, права сторон на владение активами, соответствие суммы монет) и подтверждают транзакции при соблюдении условий.
-
Эти транзакции попадают в блок, а затем — в сеть.
-
Транзакции завершены: продавец получает монеты, покупатель — доступ к книге.
Пока самым успешным примером применения смарт-контрактов можно назвать ICO (первичное предложение монет). Кроме того, смарт-контракты активно применяются на рынке децентрализованных финансов (DeFi), токенизации активов, обработки платежей для dApps и DEX, в играх и мобильных приложениях.
Большинство ICO используют смарт-контракты на платформе Ethereum.
Условия функционирования смарт-контрактов
Чтобы смарт-контракты можно было широко применять в реальной жизни, для них необходимо создать определенные условия.
-
Во-первых, нужна среда — блокчейн, т.е. распределенный реестр данных, на базе которого будет создаваться смарт-контракт, и прочая инфраструктура.
-
Во-вторых, важно распространение криптовалюты как платежного средства (пока никакое другое не подходит) и повышение доверия к ней. Смарт-контракты криптовалюту используют как “топливо”, расчетную единицу.
-
В-третьих, необходимо расширить круг лиц, имеющих доступ и возможности использовать смарт-контракты.
-
И в-четвертых, нужно правовое регулирование использования: смарт-контракты, криптовалюты являются предметом правового регулирования, которое только зарождается.
Плюсы и минусы смарт-контрактов
Так что же делает смарт-контракты такими перспективными и востребованными? И что, в то же время, мешает им “захватить мир”?
Плюсы | Минусы |
Независимость (отсутствие посредников) |
Репутация (нет полноценного доверия общества) |
Безопасность (вся информация надежно хранится в блокчейн в зашифрованном виде) |
Юридический статус (неурегулированность законом мешает внедрению в разные сферы жизни) |
Безошибочность (нет человеческого фактора, высокая точность исполнения) |
Риск ошибок в коде, юридическая корректность оцифровки условий контракта |
Скорость (автоматизированные процессы происходят практически мгновенно) |
Сложность реализации (интеграция высоких технологий во все сферы жизни пока слишком ресурсозатратна) |
Экономия (нет операционных расходов и посредников, кроме платы за газ) |
Расчеты в криптовалюте (крипта не признана законным платежным средством) |
Прозрачность (все условия и результаты заранее известны) |
Оракулы (потребность в надежных внешних источниках информации) |
Неизменяемость (нельзя внести изменения в уже созданный контракт) |
Неизменяемость (отсутствие гибкости условий, невозможность исправления ошибки) |
Создание и разработка смарт-контрактов
Для того, чтобы создать собственный смарт-контракт, можно либо воспользоваться услугами профессиональных программистов, либо попробовать сделать это самостоятельно.
В интернете можно найти пошаговые инструкции для разработки смарт-контракта, но без базовых знаний программирования все-таки не обойтись.
Для начала, исходя из целей проекта, нужно выбрать децентрализованную платформу для создания смарт-контракта (Ethereum, Tron, Lisk, Cardano, Hyperledger Fabric, Nem, Stellar, NEO, Ontology …).
Основные языки программирования для смарт-контрактов: JavaScript, Solidity, Fe, Rust, Vyper, Script, Serpent.
Обычно на платформах смарт-контрактов есть готовые шаблоны, т.е. не придется полностью писать программный код. Достаточно будет ввести параметры сделки в специально отведенные поля и подтвердить ее исполнение.
Прежде чем использовать написанный код, важно протестировать его для обнаружения различных багов и скрытых уязвимостей.
Итог
Итак, смарт-контракт — это гибрид соглашения и кода, алгоритм, по которому при выполнении определенного условия автоматически, без участия третьих лиц, наступают конкретные последствия.
Пока применение смарт-контрактов в повседневной жизни ограничивается техническими, юридическими и социальными факторами.
Но уже очевидно, что у смарт-контрактов есть будущее. Возможно, они станут революцией в мире управления и финансов. Или просто автоматизируют стандартные процедуры. Так или иначе, потенциал этой технологии дает пространство для новых идей.