К основному содержимому

Введите слово из вопроса или названия статьи.

1 · Основы

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

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

3 мин чтенияОбновлено:
В этой статье

Смарт-контракт - это программа, которая живёт в блокчейне. У неё есть собственный адрес, как у кошелька, и она может принимать, хранить и отправлять деньги по правилам, записанным в её коде. Название вводит в заблуждение: «смарт» здесь про автоматичность, а не про интеллект, и «контракт» - не юридический договор, а именно код.

Торговый автомат как образ

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

Чем смарт-контракт отличается от обычной программы

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

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

Он не может быть изменён после запуска (как правило). Если контракт написан без возможности обновления, правила остаются теми же навсегда. Это одновременно главное достоинство и главный риск - ошибки не исправить.

Он не может сам ничего «запустить». Контракт действует только в ответ на транзакцию: кто-то должен вызвать его функцию и заплатить комиссию сети.

Что умеет контракт и чего не умеет

Контракт отлично хранит деньги и исполняет жёсткие правила: «если выполнено условие X, отправь сумму Y по адресу Z». Но он не знает, что происходит вне блокчейна. Приехал ли товар, качественно ли выполнена работа, чьё слово правдивее - всего этого код проверить не может.

Поэтому в сделках с реальным миром смарт-контракт дополняется человеком - гарантом. Контракт обеспечивает то, что деньги не исчезнут и будут выплачены по правилам, а гарант решает вопросы, которые код решить не в силах: кто прав в споре. Подробнее - в статье про эскроу и гарантов.

Из чего состоит контракт

Если заглянуть внутрь на примере эскроу-контракта:

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

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

Риски, о которых надо знать

Ошибки в коде. Контракт делает ровно то, что написано, а не то, что имел в виду автор. Несколько громких потерь в истории блокчейна произошли именно так. Поэтому серьёзные контракты проходят тестирование, статический анализ и независимый аудит - об этом в статье про тестирование контрактов.

Необратимость. Нет кнопки «отменить». Если вы подписали транзакцию на контракт со злым умыслом, деньги не вернуть.

Зависимость от окружения. Контракт зависит от токенов и других контрактов, с которыми взаимодействует. Токен с нестандартным поведением может поломать логику - об этом в статье про нестандартные токены.

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

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

  1. Найдите адрес контракта на официальном сайте сервиса.
  2. Откройте его в обозревателе блоков вашей сети: проверьте, что код опубликован и верифицирован.
  3. Посмотрите, кто владелец и что он может: может ли менять правила, забирать деньги, ставить паузу.
  4. Узнайте, есть ли аудит и чем занимались разработчики.

Подробнее о чтении обозревателя - в статье как читать Etherscan.

Что почитать дальше

Теперь у вас есть картина целиком: блокчейн хранит данные, кошелёк подписывает, смарт-контракт исполняет правила. Следующий шаг - узнать, из чего состоят цифровые активы: токены и NFT, а затем - чем платить: стейблкоины и их риски. Читать код умеете? Загляните в обзор Solidity.

Упоминается в статьях

Готовы попробовать?

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