Обычный перевод отправляет актив с одного адреса на другой. Транзакция к смарт-контракту вызывает программу. Она может обменять токены, выдать цифровой актив, зафиксировать голос или распределить средства по заранее заданной логике.
Смарт-контракт как программа в блокчейне
В Ethereum смарт-контракт является особым типом аккаунта. У него есть адрес, баланс, код и состояние. Пользователь отправляет транзакцию на адрес контракта и указывает функцию, которую хочет выполнить.
Условия программы одинаково проверяются узлами сети. Если вызов соответствует коду и у отправителя хватает средств на комиссию, сеть рассчитывает новое состояние. После включения транзакции в блок результат становится частью общей истории.
Контракт выполняет только доступные ему инструкции. Намерение пользователя сеть получает из подписанной команды.
Слово «контракт» описывает способ исполнения логики. Юридическая сила отношений определяется отдельно. Код может быть частью сделки, техническим инструментом или самостоятельным протоколом.
Из чего состоит смарт-контракт
Точка в сети, на которую отправляют вызовы и активы.
Набор функций, проверок и правил изменения данных.
Хранимые значения: балансы, владельцы, лимиты и параметры.
Записи, по которым интерфейсы и аналитические системы отслеживают действия.
Описание функций и параметров, помогающее приложению сформировать понятный вызов.
Адреса, которым код разрешает менять параметры или выполнять специальные действия.
Контракт токена обычно хранит правила выпуска, перевода и учёта балансов. Адрес контракта отличает оригинальный токен от копии с тем же названием и тикером.
Как исполняется вызов
- 1
Интерфейс получает адрес контракта и описание его функций.
- 2
Пользователь выбирает действие: обмен, депозит, выпуск токена или другую функцию.
- 3
Приложение кодирует параметры и передаёт их кошельку.
- 4
Кошелёк показывает доступное описание, сумму, сеть и комиссию.
- 5
Приватный ключ подписывает транзакцию, после чего она публикуется в сети.
- 6
Узлы выполняют код и принимают один результат по правилам блокчейна.
Если проверка внутри функции не пройдена, изменение состояния отменяется. Сетевая комиссия при этом может быть потрачена, поскольку узлы уже выполнили вычисления.
Чтение данных и запись состояния
Посмотреть данные
Баланс, владельца, лимит или параметр можно запросить у узла. Такой запрос обычно не создаёт транзакцию и не требует gas от пользователя.
Изменить состояние
Перевод, обмен, депозит или голосование требует подписанной транзакции, включения в блок и оплаты вычислений.
Gas измеряет объём вычислительной работы. Итоговая комиссия зависит от количества использованного газа и его цены. Сложный обмен через несколько контрактов обычно требует больше операций, чем простой перевод базовой монеты.
Кошелёк может показать только технические данные или неполное описание. Непонятная команда относится к причинам остановиться. Подпись подтверждает действие от имени адреса, даже если человек неверно понял интерфейс.
Где используют смарт-контракты
Токены
Выпуск, учёт балансов, переводы, ограничения и административные полномочия.
Обмен
Пулы ликвидности и правила расчёта результата сделки в DEX.
Кредитование
Залог, начисление процентов, лимиты и ликвидация позиции.
Управление
Предложения, голоса и исполнение решений сообщества.
Цифровые права
Связь токена с правилами владения, доступа или распределения.
Мультиподпись
Выполнение операции после подтверждения заданного числа участников.
Контракты можно соединять друг с другом. Эта composability ускоряет разработку и создаёт цепочку зависимостей. Ошибка базового протокола, токена, оракула или моста способна повлиять на приложения выше.
Ограничения и риски
- Ошибка кода.Неверное условие или уязвимость могут привести к результату, который сложно исправить после запуска.
- Административный ключ.Отдельный адрес может менять комиссии, останавливать функции, обновлять код или выпускать токены.
- Прокси-контракт.Пользователь видит постоянный адрес, а исполняемая логика может обновляться владельцем роли.
- Оракул.Данные о цене и внешнем событии поступают из отдельной системы со своими ограничениями.
- Экономическая модель.Технически корректный код может работать с недостаточной ликвидностью или опасными параметрами залога.
- Интерфейс.Поддельный сайт способен направить подпись на другой адрес или функцию.
- Разрешение токена.Одно подтверждение может дать контракту право перемещать активы позднее.
Что проверить перед взаимодействием
- 1
Откройте официальный домен проекта и подтвердите нужную сеть.
- 2
Сверьте адрес контракта с документацией и обозревателем блокчейна.
- 3
Проверьте, опубликован ли исходный код и совпадает ли проверенная версия.
- 4
Найдите владельца, административные роли, паузу, обновление и право выпуска активов.
- 5
Изучите аудиты, дату проверенной версии, инциденты и изменения после аудита.
- 6
Перед подписью прочитайте функцию, актив, сумму, получателя и объём разрешения.
- 7
Для нового приложения используйте отдельный кошелёк и ограниченный тестовый объём.
Плашка «verified» в обозревателе означает, что опубликованный исходный код сопоставлен с байткодом по адресу. Она не является оценкой безопасности или экономической надёжности.
Короткие ответы
Что такое смарт-контракт простыми словами?
Это программа, размещённая по адресу в блокчейне. Она хранит данные и выполняет функции, когда получает корректный вызов. Результат записывается по правилам сети.
Смарт-контракт считается юридическим договором?
Техническое название не определяет юридический статус. Правовые последствия зависят от содержания отношений, документов, участников и применимого законодательства.
Можно ли изменить смарт-контракт после запуска?
Некоторые контракты неизменяемы, другие используют обновляемую архитектуру или административные роли. Возможность изменения нужно проверять в коде и настройках конкретного проекта.
Почему взаимодействие со смарт-контрактом стоит денег?
Операция, которая меняет состояние блокчейна, требует вычислений и места в блоке. Пользователь оплачивает gas в базовом активе сети. Простое чтение публичных данных обычно не создаёт транзакцию.
Аудит гарантирует безопасность контракта?
Нет. Аудит снижает часть риска в проверенной версии кода. После него могут измениться контракт, настройки, зависимости, интерфейс или экономические условия протокола.
На чём основан материал
- Ethereum.org: Introduction to smart contracts ↗
Код, состояние, адрес контракта, транзакции, composability и ограничения.
- Ethereum.org: Interacting with smart contracts ↗
Чтение данных, запись состояния, ABI и отправка транзакций.
- Ethereum.org: Transactions ↗
Поля транзакции, gas, подпись и выполнение функции контракта.
- OpenZeppelin Contracts ↗
Библиотека модулей и стандартов для разработки смарт-контрактов.
Материал носит образовательный характер и не является индивидуальной инвестиционной, юридической или налоговой рекомендацией. Условия сервисов, сетей и регулирование нужно проверять на дату конкретной операции.