Смарт-контракт простыми словами: что это такое и как он работает
Разбираем на примере, как смарт-контракт исполняет условие сделки без посредника, чем он отличается от обычного договора и какие у него реальные ограничения.
Содержание
- Что такое смарт-контракт простыми словами
- Откуда взялось это понятие и при чём тут Ethereum
- Как работает смарт-контракт: условие → действие
- Пример: как выглядит смарт-контракт на условной сделке
- Чем смарт-контракт отличается от обычного договора
- Неизменяемость после запуска: сила и ловушка
- Где смарт-контракты используются на практике
- Риски и ограничения: что смарт-контракт не может гарантировать
- Правовой статус смарт-контрактов в России: что фактически изменилось
- Частые вопросы
- Как вести учёт капитала, пока раздел криптовалюты в Fundstate в разработке
Дизайнерка Оксана закрыла проект для заказчика из другой страны — макеты понравились, оставалось получить оплату. Заказчик предложил не банковский перевод, а смарт-контракт-эскроу: сумма в криптовалюте, эквивалентная 60 000 ₽, ложится в контракт и уходит Оксане автоматически, как только заказчик подтвердит получение файлов, либо возвращается заказчику обратно через 14 дней, если подтверждения не будет. Звучало честно для обеих сторон — пока Оксана не задала себе один вопрос: а что, если заказчик просто не подтвердит вовремя, хотя работа объективно сделана? Кому звонить, куда жаловаться, кто разберётся, кто прав? Оказалось — некому. У смарт-контракта нет ни менеджера поддержки, ни кнопки «отменить», ни судьи. Деньги пойдут ровно по тому правилу, которое было записано в код в момент запуска, — а не по тому, что справедливо на самом деле. Дальше — что это за правило, кто его пишет и почему исправить его потом почти никогда нельзя.
Что такое смарт-контракт простыми словами
Смарт-контракт — это программа, которая выполняется на блокчейне и работает по принципу «если случилось X — автоматически сделать Y», без участия человека на этапе исполнения. На сайте Ethereum — сети, где смарт-контракты впервые заработали по-настоящему массово, — их сравнивают с вендинговым автоматом: вы выбираете позицию и вносите нужную сумму, автомат сам, без продавца, проверяет условие (деньги внесены полностью) и выдаёт результат. Смарт-контракт устроен так же: код заранее знает, при каком условии что должно произойти, и делает это сам, как только условие технически выполнено.
В истории Оксаны условие было простым: «заказчик подтвердил получение файлов» → «перевести деньги дизайнеру», либо «прошло 14 дней без подтверждения» → «вернуть деньги заказчику». Ни то, ни другое правило не требует, чтобы кто-то из людей лично одобрил перевод в нужный момент, — сеть блокчейна проверяет условие и переводит средства сама.
Аналогия с автоматом хорошо объясняет, что происходит, когда всё идёт по плану. Но она не отвечает на другой вопрос: что если автомат сам был собран с ошибкой? Это отдельный и важный разговор — вернёмся к нему, когда будем говорить про неизменяемость кода.
Откуда взялось это понятие и при чём тут Ethereum
Термин «смарт-контракт» придумал в 1994 году американский криптограф Ник Сабо — он описал теоретическую идею программы, которая сама проверяет и исполняет условия сделки, ещё до появления блокчейна как технологии. Реализовать идею массово тогда было не на чем: не существовало среды, где код одновременно исполняется и проверяется множеством независимых участников, а не одним сервером, которому нужно доверять на слово.
Первое такое массовое воплощение — сеть Ethereum, запущенная в 2015 году. У Bitcoin, появившегося раньше, тоже есть встроенный язык условий, но он специально сделан простым и не позволяет писать сколько-нибудь сложную логику. Ethereum добавил полноценный язык программирования для контрактов, поэтому именно с него принято отсчитывать смарт-контракты в том виде, в котором ими пользуются сегодня, — от DeFi-протоколов до NFT и DAO.
Как работает смарт-контракт: условие → действие
Механика одинаковая для любого смарт-контракта — от простого эскроу, как у Оксаны, до сложного финансового протокола:
- Кто-то пишет код с условиями и действиями и публикует («деплоит») его на блокчейн — с этого момента у контракта появляется собственный адрес, как у обычного кошелька.
- Пользователь отправляет на этот адрес транзакцию — переводит средства или вызывает конкретную функцию контракта.
- Сеть блокчейна — тысячи независимых компьютеров-узлов — проверяет условие, заложенное в коде, и, если оно выполнено, исполняет действие: переводит средства, меняет запись, выпускает токен.
- Результат записывается в блокчейн и виден всем участникам сети; подделать его или тихо отменить после этого нельзя.
Ключевое отличие от «просто программы на сервере» — то, что код и его текущее состояние хранятся не в одном месте, которому нужно доверять, а копируются на множество независимых узлов сети. Именно поэтому Оксане и её заказчику не пришлось доверять друг другу напрямую или платить третьей компании-посреднику: они доверяли правилу, которое видно всем и которое исполнит себя само.
Пример: как выглядит смарт-контракт на условной сделке
Разберём тот же принцип на цифрах — для наглядности на продаже цифрового актива. Иван продаёт Марии предмет за сумму, эквивалентную 50 000 ₽ в криптовалюте, через смарт-контракт-эскроу. Деньги Марии сразу уходят не Ивану, а в сам контракт — и лежат там до наступления одного из двух условий.
| Что происходит | Мария подтвердила получение | Мария не подтвердила за 7 дней |
|---|---|---|
| Кому достаются 50 000 ₽ | Ивану — автоматически, в момент подтверждения | Марии — автоматически, деньги возвращаются |
| Нужно ли ещё чьё-то одобрение | Нет, кроме самого подтверждения Марии | Нет — контракт сам видит, что срок истёк |
| Может ли кто-то передумать после этого момента | Нет | Нет |
Обратите внимание: решение контракта в обоих случаях зависит от одного факта — «подтвердила Мария получение или нет». Сам смарт-контракт этот факт наблюдать не умеет: он не видит посылку и не видит переписку сторон, он видит только то, что ему прислали как входные данные. Значит кто-то посторонний по отношению к коду должен сообщить контракту, что факт наступил, — и вопрос, можно ли доверять этому сообщению так же, как самому коду, пока остаётся открытым. Вернёмся к нему в разделе про риски.
Чем смарт-контракт отличается от обычного договора
Та же логика, что развела Ивана и Марию без посредника, работает и в паре «заказчик — дизайнер» из начала статьи. Но полностью ли смарт-контракт заменяет обычный договор? Нет: у него то же самое свойство «исполнится буквально то, что записано» оборачивается противоположной стороной — если формулировка спорная, разобрать спор по существу контракту нечем.
| Обычный договор | Смарт-контракт | |
|---|---|---|
| Кто исполняет | Стороны сами — добровольно, или по решению суда | Код автоматически, при выполнении условия |
| Что делать при спорном факте | Можно разбираться в суде, привлекать свидетелей и доказательства | Код не разбирает споры — видит только то, что заложено как входные данные |
| Можно изменить после подписания/запуска | Да, дополнительным соглашением сторон | Как правило нет (см. следующий раздел про исключения) |
| Кто гарантирует исполнение | Государство и судебная система | Сеть блокчейна, без участия третьей стороны |
| Что если в тексте есть ошибка | Можно исправить допсоглашением | Код исполнится буквально, включая ошибку, если заранее не предусмотрен аварийный механизм |
Раз суду разбирать нечего, легко подумать, что смарт-контракт вообще надёжнее обычного договора. На деле он просто переносит вопрос «кто прав» на более ранний этап — не после спора, а до запуска, в момент написания кода. Если условие сформулировано не так, как стороны на самом деле имели в виду, исправить это постфактум почти всегда нельзя. Это и подводит к следующему разделу.
Неизменяемость после запуска: сила и ловушка
Вернёмся к вопросу, который остался открытым в начале статьи: что будет, если сам смарт-контракт написан с ошибкой? Здесь работает главное свойство смарт-контрактов — неизменяемость. После деплоя на блокчейн код контракта в общем случае нельзя ни отредактировать, ни удалить: он останется на сети именно таким, каким был опубликован, и будет исполняться буквально — включая любую свою ошибку. Для Оксаны это как раз то свойство, из-за которого у эскроу-контракта физически нет кнопки «отменить»: её туда никто не встроил, а встроить постфактум уже нельзя.
Это же свойство — одновременно и главная сила смарт-контракта (никто, включая разработчика, не может втихую переписать правила после того, как деньги уже внесены), и его главная ловушка: если ошибка обнаружилась после запуска, исправить её так же просто, как обычный договор — допсоглашением, — уже нельзя.
Неизменяемость — не абсолютное правило
Разработчики могут заранее заложить в контракт механизм обновления — например, через отдельный контракт-«прокси», который хранит адрес актуальной версии логики и может его сменить. Тогда обновить контракт технически можно, но только если такая возможность была продумана и вписана в код с самого начала, а не придумана постфактум под конкретную проблему. Прежде чем доверять контракту деньги, стоит понимать, обычный он или обновляемый, — это меняет, кто на самом деле контролирует правила игры.
Где смарт-контракты используются на практике
Механика «условие → действие без посредника» лежит в основе большей части того, что вообще называют крипто-инфраструктурой, а не только простых эскроу вроде истории Оксаны:
- DeFi (децентрализованные финансы) — займы, обмен токенов и пулы ликвидности целиком работают на смарт-контрактах вместо банка или биржи.
- NFT — уникальный цифровой токен и правила его передачи задаются смарт-контрактом.
- DAO (децентрализованные организации) — голосования и распределение средств сообщества исполняются кодом, а не советом директоров.
- Простой эскроу — ровно тот случай, что был у Оксаны: деньги «замораживаются» до выполнения условия обеими сторонами.
Каждое из перечисленных направлений добавляет свою специфику поверх одной и той же базовой механики — а специфика неизбежно добавляет и свои риски.
Риски и ограничения: что смарт-контракт не может гарантировать
Вопрос, отложенный в примере с Иваном и Марией, — можно ли доверять сообщению «условие выполнено» так же, как самому коду, — называется проблемой оракула. Смарт-контракт видит только то, что ему прислали как входные данные, и не может сам сходить проверить реальность: получила ли Мария посылку, какая на самом деле сейчас цена актива, наступило ли страховое событие. Эти данные в контракт приносит отдельный внешний источник — «оракул», — и если его данные неверны или подделаны, контракт исполнит свои действия так же чётко, но на основе неправды.
Отсюда и остальные практические ограничения, которые стоит держать в голове до того, как доверять смарт-контракту деньги:
Ошибка в коде — это не опечатка, которую потом поправят. Из-за неизменяемости уязвимость, замеченная уже после запуска, часто означает, что деньги из контракта можно вывести способом, который автор не предполагал, — и в истории криптовалют было несколько случаев многомиллионных потерь ровно по этой причине: логическая ошибка в коде, которую никто не заметил вовремя.
Смарт-контракт не понимает намерение сторон, только буквальный текст условия. Если условие сформулировано формально верно, но не так, как стороны имели в виду по-человечески, контракт всё равно исполнит именно формулировку.
Контракт ничего не гарантирует за пределами своего кода. Он не проверяет платёжеспособность стороны заранее, не занимается взысканием долга, если у контрагента физически нет средств на балансе, и не заменяет собой ни один вид государственной защиты потребителя.
Правовой статус смарт-контрактов в России: что фактически изменилось
Формулировка «закон не запрещает автоматическое исполнение сделки» на слух звучит как «смарт-контракты в России разрешены» — но это не совсем то, что сказано в законе, и разницу стоит понимать до того, как заводить с кем-то договорённость на таких условиях.
В 2019 году в статью 309 Гражданского кодекса РФ (поправка внесена законом № 34-ФЗ) добавили формулировку: условиями сделки может быть предусмотрено исполнение обязательств «при наступлении определённых обстоятельств без отдельно выраженного дополнительного волеизъявления сторон путём применения информационных технологий». По сути это описание механизма смарт-контракта на языке гражданского права — просто без самого слова «смарт-контракт» в тексте закона.
Отдельного закона именно про смарт-контракты — с лицензированием или специальными требованиями к таким программам — в России нет: регулирование ограничивается этой общей нормой ГК РФ и общими положениями о цифровых правах. Это не то же самое, что полная правовая ясность: конкретные вопросы (ответственность за ошибку в коде, за неверные данные оракула, соотношение с валютным и налоговым регулированием при использовании криптовалюты) отдельно не описаны, и практика по ним ещё формируется. Если планируете входить в сделку через смарт-контракт на заметную для себя сумму — разумно свериться с актуальной практикой или юристом, а не полагаться на то, что «раз есть код — значит, есть и защита».
Частые вопросы
Смарт-контракт — это то же самое, что криптовалюта? Нет. Криптовалюта — актив, «валюта» сети, а смарт-контракт — программа на блокчейне, которая может этим активом управлять по заданным правилам. Один не существует без сети, где работает другой, но понятия не тождественны.
Можно ли отменить смарт-контракт после того, как он запущен? Как правило нет — в этом состоит неизменяемость, разобранная выше. Изменить логику можно, только если такая возможность (например, через контракт-прокси) была заранее заложена при разработке.
Нужно ли уметь программировать, чтобы пользоваться смарт-контрактом? Нет — большинство людей взаимодействует со смарт-контрактами через обычный интерфейс приложения (кошелёк, DeFi-сервис, платформа NFT), не читая и не написая код самостоятельно. Разбираться в коде нужно тем, кто его пишет или проверяет.
Легален ли смарт-контракт в России? Сам механизм автоматического исполнения обязательств учтён в статье 309 ГК РФ с 2019 года. Отдельного специального регулирования смарт-контрактов при этом нет, и не все смежные вопросы описаны законом одинаково подробно — уточняйте актуальную практику под конкретную ситуацию.
Чем смарт-контракт отличается от обычного электронного договора, подписанного онлайн? Электронная подпись подтверждает, что стороны согласились с текстом договора, но исполнение всё ещё зависит от их дальнейших действий — перевести деньги, передать товар. Смарт-контракт сам исполняет согласованное условие: перевод происходит автоматически, без отдельного шага «теперь я перевожу».
Где смарт-контракт можно увидеть своими глазами, не разбираясь в коде? Практически в любом действии внутри DeFi-протокола, при покупке или продаже NFT, в переводе через децентрализованную биржу (DEX) — во всех этих случаях за кнопкой в интерфейсе стоит именно вызов смарт-контракта.
Как вести учёт капитала, пока раздел криптовалюты в Fundstate в разработке
Смарт-контракт исполняет ровно то, что в нём записано, — и ничего за пределами своего кода. Он не видит, сколько денег в целом лежит у человека на бирже, в кошельке, на брокерском счёте и во вкладах, и не сведёт это в одну картину: это по-прежнему отдельная задача самого человека, а не свойство блокчейна.
Раздел учёта криптовалюты в Fundstate пока в разработке — говорим об этом прямо, а не выдаём его за готовую функцию. Но остальной капитал уже можно свести в одном месте: портфель акций и облигаций, вклады и накопительные счета, недвижимость — без ручного пересчёта по каждому источнику отдельно.
Ведите учёт портфеля бесплатно
Заносите сделки и дивиденды вручную или загрузите брокерский отчёт — Fundstate соберёт портфель за вас.
Учёт портфеля — бесплатно