Что такое смарт-контракт и почему ему можно доверять деньги
Смарт-контракт - программа в блокчейне, которая сама исполняет условия сделки. Как он работает, чем отличается от обычного договора и какие у него риски.
В этой статье
Смарт-контракт - это программа, которая живёт в блокчейне. У неё есть собственный адрес, как у кошелька, и она может принимать, хранить и отправлять деньги по правилам, записанным в её коде. Название вводит в заблуждение: «смарт» здесь про автоматичность, а не про интеллект, и «контракт» - не юридический договор, а именно код.
Торговый автомат как образ
Классическое сравнение - торговый автомат. Вы кладёте монеты, нажимаете кнопку, и автомат выдаёт товар. Не нужен продавец, которому надо доверять: механизм сам проверяет условия и исполняет их. Смарт-контракт - такой же автомат, только условий и «товаров» может быть сколько угодно, а исполняется он одинаково для всех на тысячах компьютеров.
Чем смарт-контракт отличается от обычной программы
Он публичен. Код контракта и его состояние видны всем в обозревателе блоков. Любой может проверить, что именно произойдёт с деньгами.
Он исполняется сетью. Нет сервера, который можно выключить или подкупить. Каждый узел сети выполняет код и получает одинаковый результат.
Он не может быть изменён после запуска (как правило). Если контракт написан без возможности обновления, правила остаются теми же навсегда. Это одновременно главное достоинство и главный риск - ошибки не исправить.
Он не может сам ничего «запустить». Контракт действует только в ответ на транзакцию: кто-то должен вызвать его функцию и заплатить комиссию сети.
Что умеет контракт и чего не умеет
Контракт отлично хранит деньги и исполняет жёсткие правила: «если выполнено условие X, отправь сумму Y по адресу Z». Но он не знает, что происходит вне блокчейна. Приехал ли товар, качественно ли выполнена работа, чьё слово правдивее - всего этого код проверить не может.
Поэтому в сделках с реальным миром смарт-контракт дополняется человеком - гарантом. Контракт обеспечивает то, что деньги не исчезнут и будут выплачены по правилам, а гарант решает вопросы, которые код решить не в силах: кто прав в споре. Подробнее - в статье про эскроу и гарантов.
Из чего состоит контракт
Если заглянуть внутрь на примере эскроу-контракта:
- Состояние - данные, которые контракт помнит: список сделок, суммы, участники, статусы.
- Функции - действия, которые можно вызвать: создать предложение, принять, подтвердить получение, открыть спор.
- Правила доступа - кто имеет право вызвать функцию: подтвердить получение может только покупатель, вынести решение - только гарант.
- События - записи в журнале блокчейна: «сделка создана», «сделка завершена». Их читают интерфейсы и сервисы.
Например, в нашем контракте у сделки есть пять состояний: нет сделки, предложение, активна, спор, завершена. Переходы между ними жёстко ограничены - например, из «завершена» выхода нет вообще. О том, как это записывается в коде, можно прочесть в статье про конечный автомат на Solidity.
Риски, о которых надо знать
Ошибки в коде. Контракт делает ровно то, что написано, а не то, что имел в виду автор. Несколько громких потерь в истории блокчейна произошли именно так. Поэтому серьёзные контракты проходят тестирование, статический анализ и независимый аудит - об этом в статье про тестирование контрактов.
Необратимость. Нет кнопки «отменить». Если вы подписали транзакцию на контракт со злым умыслом, деньги не вернуть.
Зависимость от окружения. Контракт зависит от токенов и других контрактов, с которыми взаимодействует. Токен с нестандартным поведением может поломать логику - об этом в статье про нестандартные токены.
Человеческий фактор вокруг. Контракт может быть безупречен, а интерфейс - поддельным. Поэтому проверяйте адрес сайта и читайте, что подписываете.
Как проверить смарт-контракт
- Найдите адрес контракта на официальном сайте сервиса.
- Откройте его в обозревателе блоков вашей сети: проверьте, что код опубликован и верифицирован.
- Посмотрите, кто владелец и что он может: может ли менять правила, забирать деньги, ставить паузу.
- Узнайте, есть ли аудит и чем занимались разработчики.
Подробнее о чтении обозревателя - в статье как читать Etherscan.
Что почитать дальше
Теперь у вас есть картина целиком: блокчейн хранит данные, кошелёк подписывает, смарт-контракт исполняет правила. Следующий шаг - узнать, из чего состоят цифровые активы: токены и NFT, а затем - чем платить: стейблкоины и их риски. Читать код умеете? Загляните в обзор Solidity.
Читайте также
- 1 · Основы
Токены и NFT: что это, чем отличаются и где применяются
Обзор токенов в Ethereum: взаимозаменяемые (ERC-20) и уникальные (NFT, ERC-721 и ERC-1155), как они устроены, где используются и какие у них риски.
3 мин чтения - 3 · Под капотом
Обзор языка Solidity: типы, функции, ошибки и события на примерах
Короткий практический тур по Solidity для тех, кто умеет читать код: структура контракта, типы, видимость, модификаторы, ошибки и события. Примеры из эскроу.
4 мин чтения
Упоминается в статьях
- Что такое блокчейн простыми словами
- Что такое криптовалюта и откуда берутся монеты
- Bitcoin и Ethereum: в чём разница и почему сделки строят на Ethereum
- Криптокошелёк, адрес и seed-фраза: как не потерять деньги
- Токены и NFT: что это, чем отличаются и где применяются
- dApp и DeFi: децентрализованные приложения и финансы без посредников
- Эскроу: как работает сделка с гарантом
- Словарь терминов: блокчейн, кошельки, смарт-контракты и эскроу от A до Я
- Жизненный цикл сделки: от оферты до выплаты шаг за шагом
- ENS: читаемые имена вместо длинных адресов Ethereum
- Мультиподпись и таймлок: как управлять контрактом без единой точки отказа
- Аккаунты и состояние Ethereum: EOA, контракты и мировое состояние
- Обзор языка Solidity: типы, функции, ошибки и события на примерах
- Прокси и обновляемые контракты: delegatecall, UUPS и цена гибкости
- Оракулы и проблема оракулов: как блокчейн узнаёт о внешнем мире
- Роллапы изнутри: батчи, доказательства мошенничества, ZK, блобы и вывод средств
Готовы попробовать?
Создайте первую сделку за пару минут. Деньги блокируются в смарт-контракте и выплачиваются по правилам, которые видны заранее.

