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

Что такое смарт-контракт и как он работает
Смарт-контракт — это программа с условиями активации, которая хранится внутри блокчейна криптовалютного проекта и выполняется автоматически. Блокчейн — непрерывная череда из блоков информации по сделкам и смарт-контрактам, где каждое новое звено содержит в себе информацию из предыдущего. Чтобы изменить условия уже заключенных транзакций или контрактов придётся менять все данные в сети, что практически невозможно.
У смарт-контракта есть несколько условий:
- Наличие участников контракта.
- Обладание ресурсами, прописанными по условиям смарт-контракта.
- Условие реализации смарт-контракта.
- Время длительности смарт-контракта.
Пример контракта в текстовом варианте:
| Влад заплатит 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 он считается отдельным типом аккаунта.
Смарт-контракт в блокчейне можно сравнить с цифровым соглашением между двумя или несколькими сторонами. Однако выполнение его условий обеспечивает не суд или законодательство, а программный код: при наступлении заранее заданных обстоятельств контракт автоматически выполняет предусмотренные действия.
Варианты применения смарт-контрактов:
— выпуск и управление стейблкоинами;
— создание и распространение уникальных цифровых активов;
— автоматический и прозрачный обмен криптовалют;
— разработка децентрализованных игр;
— оформление страховых полисов с автоматическими выплатами;
— выпуск настраиваемых и совместимых между собой цифровых валют.
В такой модели выполнение условий контракта проверяет и контролирует сама блокчейн-платформа, а не сторонние серверные приложения, подключённые к ней.
Содержание