Смарт-контракты: как программа заменяет посредника

Бесплатный курс по криптовалюте
Уровень 1: Основы блокчейнаУрок 1.6 · 15 из 698 мин чтения

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

Коротко о главном
  • Смарт-контракт — это код, записанный в блокчейн, который выполняется по заданным правилам у всех узлов сети одинаково.
  • Он не умный и не юридический договор: он делает ровно то, что написано в коде, включая ошибки.
  • На смарт-контрактах работают обменники, кредитные сервисы, стейблкоины, NFT и почти весь DeFi.
  • Главные риски — уязвимости в коде, ключи администратора и разрешения, которые вы сами выдаёте контракту.

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

Термин ввёл криптограф Ник Сабо ещё в 1990-х, задолго до биткоина. Чтобы пояснить суть, он приводил в пример торговый автомат: опустил монету, нажал кнопку — и напиток твой. Продавец не нужен, потому что правило «заплатил — получил» встроено в сам механизм.

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

Массово смарт-контракты появились после запуска Ethereum в 2015 году. Сегодня они есть в Solana, BNB Chain, Avalanche, Tron и десятках других сетей. Названия и языки программирования отличаются, но суть общая: правила прописаны в коде и исполняет их сеть, а не человек.

Термин · Почему «смарт», если он не умный

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

Как смарт-контракт исполняется

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

За выполнение кода платят комиссию. В Ethereum её называют газом: чем сложнее операция, тем больше вычислений и тем дороже. Если газа не хватило или условие в контракте не выполнилось, транзакция откатывается, но комиссия за попытку всё равно списывается.

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

Отсюда простое практическое правило: перед подписью смотрите не только на сумму, но и на то, с каким контрактом вы имеете дело и какую функцию вызываете. Хорошие кошельки показывают это прямо в окне подтверждения, а некоторые ещё и предупреждают о подозрительных адресах.

  1. Разработчик пишет код, например на Solidity, и публикует его в сети.
  2. Контракт получает адрес, и его код становится виден всем.
  3. Пользователь подписывает транзакцию с вызовом функции контракта.
  4. Узлы сети выполняют код и включают результат в блок.
  5. Балансы и данные контракта меняются, а запись об этом остаётся в блокчейне навсегда.

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

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

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

Обычный договор Смарт-контракт
Кто исполняет Стороны, банк, нотариус, суд Узлы блокчейна автоматически
Скорость Дни и недели Время подтверждения транзакции
Можно ли изменить Да, по соглашению сторон Нет, если не заложено обновление
Что, если ошибка Можно оспорить Ошибка исполнится как написано
Связь с реальным миром Прямая Только через оракулы

Пример · Торговый автомат в DeFi

В обменнике вроде Uniswap вы отправляете в контракт USDC, а он по формуле рассчитывает, сколько ETH вам положено, и сразу их переводит. Ни оператора, ни заявки на обмен — только код и пул ликвидности.

Где вы уже встречаете смарт-контракты

Почти любой токен, кроме нативных монет вроде BTC и ETH, — это смарт-контракт. Тот же USDT в сети Ethereum или Tron существует как контракт, который хранит таблицу балансов и правила перевода. Отправляя токен другу, вы на самом деле вызываете функцию этого контракта.

На смарт-контрактах построены децентрализованные приложения: обменники, кредитные протоколы, где можно занять под залог, маркетплейсы NFT, мультиподписные кошельки, которым для перевода нужно несколько подписей. Целый сектор таких сервисов называют DeFi, и подробнее о нём рассказано в отдельном уроке.

За пределами финансов контракты используют для голосований в сообществах, игровых предметов, билетов и подтверждения владения цифровыми объектами. Не все эти идеи прижились, но принцип везде один: правила открыты, и их исполнение не зависит от доброй воли одной компании.

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

Чтобы смарт-контракты перестали быть абстракцией, достаточно один раз открыть обозреватель блоков. Это сайт, который показывает всё, что происходит в сети: транзакции, адреса, балансы и код контрактов. Если вы помните из урока о том, как работает блокчейн, что все записи публичны, обозреватель — просто удобное окно в эти записи.

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

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

  1. Найдите адрес контракта токена USDT в сети Ethereum на CoinGecko или CoinMarketCap.
  2. Вставьте его в поиск на etherscan.io.
  3. Откройте вкладку Contract и убедитесь, что код верифицирован.
  4. Во вкладке Read Contract найдите функцию totalSupply и посмотрите текущий выпуск.
  5. Пролистайте последние транзакции: каждая строка — это вызов функции контракта.

Совет · Учитесь в тестовой сети

Если хотите попробовать взаимодействие с контрактами, используйте тестовые сети вроде Sepolia. Монеты там бесплатные, и ошибка не будет стоить денег.

Риски: когда код против вас

Ошибку контракт выполнит так же старательно, как и правильную логику. Классический пример — The DAO в 2016 году: через уязвимость в коде злоумышленник вывел крупную сумму ETH. Сообщество решило откатить последствия, и из-за несогласия с этим решением сеть разделилась на Ethereum и Ethereum Classic.

С тех пор протоколы, мосты и обменники взламывают регулярно. Частые причины — ошибки в логике, манипуляции с ценой у оракула и украденные ключи администратора. Аудит кода снижает риск, но не даёт стопроцентной гарантии: взламывали и проверенные проекты.

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

  • Проверяйте, что код контракта верифицирован в обозревателе блоков, например в Etherscan.
  • Ищите публичные аудиты и смотрите, кто и когда их делал.
  • Читайте, что именно просит подписать кошелёк, а не нажимайте «Подтвердить» автоматически.
  • Периодически отзывайте старые разрешения через сервисы вроде Revoke.cash.
  • Держите основные средства на кошельке, который не подключаете к экспериментальным сайтам.

Важно · Отменить транзакцию нельзя

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

Задание к уроку

Пройдите по шагам из раздела «Как посмотреть на смарт-контракт своими глазами»: найдите на Etherscan контракт USDT в сети Ethereum, убедитесь, что код верифицирован, и узнайте через Read Contract значение totalSupply (у USDT шесть знаков после запятой, так что последние шесть цифр — это дробная часть). Затем откройте любую свежую транзакцию этого контракта и посмотрите, какая функция в ней вызвана — чаще всего Transfer. Так вы своими глазами увидите, что перевод токена — это вызов кода.

Учитесь и зарабатывайтеБесплатные турниры каждый день — путь к призам в USDT

Вход бесплатный, торговля на демо-счёте — свои деньги не нужны. В бесплатных турнирах выигрывают Tour Pass, а с ними заходят в турниры с призами в USDT. Лучшие идут дальше — к funded-счёту на $5 000.

Частые вопросы

Можно ли написать смарт-контракт без знания программирования?

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

У биткоина есть смарт-контракты?

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

Смарт-контракт имеет юридическую силу?

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

Что делать, если я подписал подозрительное разрешение?

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

Обсуждение

Комментарии из BuyCrypt Live. Войдите через Google или Apple — аккаунт BuyCrypt создадим сразу, тот же, что в приложении.