Разработка и применение смарт-контрактов

У контрактов между людьми есть одна неприятная особенность — их можно нарушить, иногда даже без последствий. Можно заключить контракт, по которому даёшь человеку деньги в долг, а он не возвращает. Тогда вы взимаете деньги с человека в судебном порядке. Но мирные договора часто нарушаются, как показывает история.

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

Что такое смарт-контракт и как он работает

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

У смарт-контракта есть несколько условий:

  • Наличие участников контракта.
  • Обладание ресурсами, прописанными по условиям смарт-контракта.
  • Условие реализации смарт-контракта.
  • Время длительности смарт-контракта.

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

Влад заплатит 100$ Пете через 30 дней, если он напишет для него четыре статьи.

Участники контракта — Влад и Петя. Наличие ресурсов — 100$ у Влада и наличие счетов, куда смарт-контракт будет переводить награду в случае выполнения условий. Условие реализации — Петя напишет для Влада четыре статьи. Время длительности контракта — 30 дней. 

Все условия соблюдены → контракт реализован и Петя получает награду. Петя пишет три статьи → контракт не реализован и деньги возвращаются Владу. У Влада нет на счёт 100$ → контракт изначально не будет заключён. 

Написать три статьи и не получить деньги, несправедливо по отношению к труду Пети, хоть он и не выполнил весь объём работы, поэтому структура смарт-контрактов зачастую сложна и представляет собой множество условий «если». Например: «Если вместо четырёх статей Петя напишет три, надо перевести ему 75% от суммы контракта. Остаток вернуть Владу» и так далее, пока не дойдут до условия, где Петя вообще не пишет статьи. 

Чтобы смарт-контракт работал, его обязаны подписать обе стороны. Для подписи используют либо виртуальную подпись на документе — уникальное клеймо, использование уникального ID, или простую форму подтверждения — крестик в окошке «ознакомлен и согласен с условиями контракта».

Форма смарт-контракта
Форма смарт-контракта

В строке 83, после слов msg.sender отправитель ставит цифровую подпись, в виде своего ID, или номера кошелька, в зависимости от цели. То же самое делает пользователь, чьи данные должны быть указаны после to. То что пишут пользователи в этих строках — их уникальные ключи, которые существуют в единственном экземпляре и позволяют точно установить участников контракта.

Когда обе стороны подписали смарт-контракт, он заносится в блок данных и переходит в режим ожидания, пока информация не будет перенесена в блокчейн криптовалютного проекта. Способ создания звена блокчейна зависит от настроек сети — она работает по системе PoW или PoS.

В системе PoW новые блоки создают майнеры — люди, которые используют собственную технику и её вычислительные мощности для подбора комбинации, которой зашифрован новый блок данных. Кто потратил мощности — тот и получает право на создание блока.

В системе PoS блоки создают вкладчики — люди, которые купили определённое количество токенов проекта и «заморозили» их внутри сети. Для пользователей Ethereum нужно «заморозить» 32 монет ETH, чтобы получить право на выпуск блоков. Заморозку активов внутри проекта называют стейкингом. За вклад владельцы получают свои проценты в виде новых монет и право на создание блоков данных. 

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

Платформы и языки: где и на чём пишут смарт-контракты

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

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

Проекты, связанные с Ethereum

Ethereum, BNB, Avalanche, Polygon и десятки иных L2 проектов. 

L2 — второстепенные протоколы поверх основного блокчейна. Чтобы не забивать основную цепочку блоков сторонними контрактами, появляются «ветви» побочных проектов, в которых происходят вычисления для пользователей, а итоговые результаты могут вноситься в основную цепь проекта. 

Ethereum изначально создавали как огромный суперкомпьютер, который позволил бы людям заключать контракты с опорой на машину и при этом создавать собственные проекты. Для этого один из основателей проекта Виталик Бутерин часто рассказывает о сути обновлений сети, функционале Ethereum для создания объединений и смарт-контрактов для их основы. Эфир — криптовалютный проект для криптовалютных проектов. 

Основные используемые языки программирования в таких проектах:

  • Solidity.
  • Vyper — минималистичный Python-подобный язык.
  • Yul — низкоуровневый язык для оптимизации газа.

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

Solana

Сеть построена на параллельной обработке транзакций и использует языки Rust и C/C++. Смарт-контракты в этой сети подходят больше для dApps, о которых позже.

Cardano

Характеризуется использованием строгих математических моделей в процессе работы. Если вы не знакомы с высшей математикой и даже не помните определение арктангенса — вы вряд-ли поладите с этой сетью. Использует языки программирования Haskell и Marlowe для финансовых контрактов.

Сбор требований и дизайн: роли,  данные, события

Дизайн

Специалист, который создаёт контракт, узнаёт у заказчика детали:

  • Сколько участников контракта.
  • Какая длительность контракта.
  • Какие условия реализации программы.
  • Какая награда для сторон сделки.
  • Какой срок длительности контракта.
  • Может он быть продлён или нет.
  • Какие дополнительные условия существуют при частичном выполнении контракта.

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

Виды ролей:

  • Admin — он же владелец, который отвечает за всё состояние смарт-контракта.
  • User — базовый участник, выполняющий операции.
  • Operator — автоматизированные агенты, боты, которые выполняют техническую часть контракта «взять», «перевести», «посчитать».
  • Governance — правительство из тех, кто обладает правом голоса в проекте и связаны с ним смарт-контрактом. Зачастую эта роль принадлежит тем, кто отправил свои монеты в стейкинг.

Один и тот же человек может выполнять не взаимоисключающие роли. User не может перейти в роль Admin просто так, поскольку контракты изначально создаются на равных условиях.

Данные 

Данные — это экономическое состояние системы, записанное в блокчейне. Они формируют основу контракта.

Основные типы хранимых данных:

  • Балансы пользователей.
  • Комиссии и лимиты в криптовалютном проекте.
  • Источники финансов пользователей — средства свои или заемные.
  • Состояние контракта — активен/заморожен.

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

События

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

Они используются для:

  • Индексации транзакций «посчитай кто, что и сколько получит/отдаст».
  • Работы интерфейсов dApp «покажи».
  • Аналитики блокчейна «зафиксируй или найди в блокчейне».
  • Сигналов ботам и оракулам.

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

цикл смарт-контракта

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

мем про баги

Безопасность: типовые уязвимости и контроль качества

Уязвимы не столько смарт-контракты, сколько сети, в которых эти контракты хранятся. В 2016 году Ethereum взломали через уязвимость в смарт-контракте с компанией The DAO, а после инцидента цепь разделилась на Ethereum с более жестким контролем разработчиков и Ethereum Classic для несогласных пользователей. 

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

Для усиления безопасности разработчики нанимают «белых» хакеров. Это специалисты, которые намеренно ищут уязвимости в коде и сообщают о них разработчику. 

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

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

Развертывание: газ и стоимость эксплуатации

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

Развертывание 

Развертывание — это момент, когда код контракта впервые записывается в блокчейн и получает собственный адрес. Это называется CAPEX протокола.

Стоимость развёртывания зависит от:

  • Размер кода.
  • Сложности контракта и числа условий.
  • Количества переменных в контракте.
  • Тип сети — размещение в L1 дороже, чем в L2, поскольку это основная сеть. 

Газ 

Газ — это комиссия, которую нужно заплатить за размещение смарт-контракта в блокчейне. Чем больше газа добавить, тем скорее и более вероятно контракт попадёт в криптовалютную сеть. 

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

Стоимость эксплуатации

После размещения контракта в сети начинается фаза операционных расходов — OPEX смарт-контракта.

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

Интеграции контрактов

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

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

Оракул

Смарт-контракт сам по себе «слеп» — он видит только данные внутри файла. Оракулы выступают как поставщики внешней информации, без которых невозможны реальные финансовые сценарии. Оракулы следят за ценами активов, результатами событий и показателями сторон.

dApp

Это смарт-контракт + инфраструктура для доступа к контракту. Он состоит из контрактов в сети, сервера для связи с другим приложениями, понятный пользователям интерфейс, оракулов, которые занимаются поиском данных и кошельков.

Взаимодействие сетей

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

Существует три основных подхода к решению задачи:

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

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

Мосты ликвидности. Они передают активы между сетями через блокировку и выпуск токенов. Проекты Multichain и CoreBridge обеспечивают передачу валюты между блокчейнами. В основном их используют брокеры.

Все элементы работают в связке:

Оракул поставляет данные → контракт исполняет условия → dApp отображает результат → кроссчейн-слой синхронизирует состояние между сетями.

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

Главный вопрос регуляторов: является ли смарт-контракт договором в юридическом смысле или просто программой. 

Текущая правовая трактовка в большинстве случаев такова: код сам по себе — не договор, но код с намерением сторон и экономическим результатом — договорное обязательство.

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

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

Ключевые надзорные органы:

  • SEC — если контракт выпускает инвестиционные инструменты, в России доходы по контракту контролирует ФНС. 
  • CFTC — если логика напоминает деривативы. 
  • FCA — контроль финансовых сервисов в Великобритании. 
  • ESMA — надзор за рынками капитала ЕС. 

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

Если контракт работает неисправно, потенциальными виновными могут быть разработчики, участники проекта, провайдеры оракулов и операторы интерфейса. Всё зависит от того, что именно работает не так, как должно и кто принял решение о внедрении обновления. Суды начинают применять аналогию с ответственностью разработчиков ПО. Чем более централизован контроль над контрактом — тем выше юридические риски команды участников проекта, а не разработчика.

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

Примеры

Частично смарт-контракты уже применяют для выплат работникам организации или поставщикам. Работодателю не нужно следить за эффективностью сотрудника — этим занимаются оракулы, а также и за наградой следить не нужно. Так поступил Walmart, внедрив смарт-контракты в механизмы управления цепочкой поставок. Помимо этого, смарт-контракты лежат в основе децентрализованных организаций, где руководство осуществляется советом, который никогда друг друга в лицо не видел. Их влияние определяется вложениями в проект, а смарт-контракт следит за честностью сделок между участниками организации. Такие объединения называют DAO.

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

Умный ли ход использовать смарт-контракт

По сути своей, смарт-контракт — удобный инструмент автоматизации части процессов, таких как выплата зарплаты. Однако юридические нюансы заставляют задуматься, стоит ли над ними корпеть. В любой момент государство может сказать: «Всё, бан», и те, кто сделал смарт-контракт основой своей организации — просто её лишаются. 

С одной стороны, как инструмент управления — классная штука. Как инвестиционный проект — можно найти и получше.  

Что такое смарт-контракт простыми словами?

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

Что такое смарт-контракты на блокчейне?

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

Какие есть примеры смарт-контрактов?

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

Кто контролирует смарт-контракты?

В такой модели выполнение условий контракта проверяет и контролирует сама блокчейн-платформа, а не сторонние серверные приложения, подключённые к ней.

Не нашли свой ответ на вопрос?
Задайте его нам и мы с удовольствием ответим вам в течение 5 минут!
Комментариев ещё нет!