Основы
кракен даркнет ссылка: программа, которая исполняет договор
Смарт-контракт — это программа, записанная в блокчейн, которая автоматически выполняет заданные условия. Она не устает, не берет взяток и не может передумать: если условие выполнено, действие произойдет.
Что такое смарт-контракт простыми словами
Самая известная аналогия — торговый автомат. Вы бросаете монету, выбираете товар, и автомат выдает его без продавца. Правила заложены в механизм заранее, и договариваться с автоматом не нужно. Смарт-контракт работает так же, только вместо механизма — код, а вместо монет — криптовалюта и токены.
Термин предложил криптограф Ник Сабо еще в 1990-х годах. Широкое применение идея получила после запуска эфириума в 2015 году.
Как работает смарт-контракт
- Написание. Разработчик описывает правила в коде: например, «если на контракт поступило 100 USDT, отправить покупателю цифровой билет».
- Публикация. Код компилируется и записывается в блокчейн. Контракт получает собственный адрес.
- Вызов. Пользователь отправляет на адрес контракта транзакцию с данными и, при необходимости, средствами.
- Исполнение. Все узлы сети выполняют код и получают одинаковый результат. За вычисления платится комиссия — в эфириуме она называется газом.
- Запись результата. Изменения состояния — балансы, владельцы, статусы — фиксируются в блокчейне.
Ключевые свойства
- Неизменность. Опубликованный код нельзя исправить. Если обновление предусмотрено, это прописывается заранее.
- Прозрачность. Код и все вызовы открыты для проверки.
- Детерминированность. Одни и те же входные данные всегда дают один и тот же результат.
- Автономность. Контракт работает, даже если его автор исчез.
Примеры применения
| Сфера | Что делает смарт-контракт |
|---|---|
| Обмен токенов | Децентрализованная биржа меняет один токен на другой по формуле. Подробнее — в статье о DeFi |
| Кредитование | Принимает залог, выдает заем и автоматически ликвидирует залог при падении цены |
| Выпуск токенов | Ведет учет балансов стейблкоинов и других токенов |
| NFT | Хранит список уникальных токенов и их владельцев — см. статью о NFT |
| Эскроу | Удерживает оплату, пока обе стороны не подтвердят выполнение сделки |
| Голосования | Подсчитывает голоса владельцев токенов и исполняет принятое решение |
Языки разработки
Для Ethereum и совместимых сетей чаще всего используют Solidity — язык с синтаксисом, напоминающим JavaScript. Существует и альтернатива — Vyper, похожий на Python. В Solana контракты пишут на Rust, в Aptos и Sui — на языке Move. Перед публикацией код тестируют в тестовых сетях, где монеты ничего не стоят.
Уязвимости и ограничения
- Ошибки в коде. Повторный вход (reentrancy), неверная проверка прав доступа, переполнение чисел. Самый известный пример — взлом The DAO в 2016 году, после которого сеть Ethereum разделилась.
- Зависимость от оракулов. Контракт не видит внешний мир. Курсы валют и результаты событий ему передают оракулы, и их можно атаковать.
- Права администратора. Возможность «обновить» контракт удобна, но дает команде власть над средствами пользователей.
- Юридическая неопределенность. Код исполняется буквально, даже если результат противоречит намерениям сторон.
Поэтому серьезные проекты проходят несколько независимых аудитов и запускают программы вознаграждений за найденные уязвимости.
Частые вопросы
Можно ли изменить смарт-контракт после публикации?
Код опубликованного контракта неизменен. Разработчики могут заранее заложить механизм обновления через прокси-контракт, но это означает, что у кого-то есть право менять логику.
Имеет ли смарт-контракт юридическую силу?
Сам по себе это программа, а не договор в юридическом смысле. Юридическая сила зависит от законодательства и от того, как стороны оформили свои отношения.
На каком языке пишут смарт-контракты?
Для Ethereum и совместимых сетей чаще всего используют Solidity и Vyper, для Solana — Rust.