Перейти к основному контенту
Change page

Введение в смарт-контракты

Редактировать страницу (opens in a new tab)

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

«Смарт-контракт» — это просто программа, которая работает в блокчейне Эфириума. Это набор кода (его функции) и данных (его состояние), который находится по определенному адресу в блокчейне Эфириума.

Смарт-контракты — это тип аккаунта Эфириума. Это означает, что у них есть баланс и они могут быть целью транзакций. Однако они не контролируются пользователем, вместо этого они развертываются в сети и работают так, как запрограммировано. Пользовательские аккаунты могут взаимодействовать со смарт-контрактом, отправляя транзакции, которые выполняют функцию, определенную в смарт-контракте. Смарт-контракты могут определять правила, как обычный контракт, и автоматически обеспечивать их выполнение с помощью кода. По умолчанию смарт-контракты не могут быть удалены, а взаимодействия с ними необратимы.

Предварительные требования

Если вы только начинаете или ищете менее техническое введение, мы рекомендуем наше введение в смарт-контракты.

Убедитесь, что вы прочитали об аккаунтах, транзакциях и виртуальной машине Эфириума, прежде чем погружаться в мир смарт-контрактов.

Цифровой торговый автомат

Возможно, лучшая метафора для смарт-контракта — это торговый автомат, как описал Ник Сабо (opens in a new tab). При правильных входных данных гарантируется определенный результат.

Чтобы получить снек из торгового автомата:

деньги + выбор снека = выдача снека

Эта логика запрограммирована в торговом автомате.

Смарт-контракт, как и торговый автомат, имеет запрограммированную в нем логику. Вот простой пример того, как выглядел бы этот торговый автомат, если бы он был смарт-контрактом, написанным на Solidity:

Подобно тому, как торговый автомат устраняет необходимость в продавце, смарт-контракты могут заменить посредников во многих отраслях.

Общедоступность

Любой может написать смарт-контракт и развернуть его в сети. Вам просто нужно научиться программировать на языке смарт-контрактов и иметь достаточно ETH для развертывания вашего контракта. Развертывание смарт-контракта технически является транзакцией, поэтому вам нужно заплатить за газ так же, как вы платите за газ при простом переводе ETH. Однако затраты газа на развертывание контракта намного выше.

В Эфириуме есть удобные для разработчиков языки для написания смарт-контрактов:

  • Solidity
  • Vyper

Подробнее о языках

Однако они должны быть скомпилированы перед развертыванием, чтобы виртуальная машина Эфириума могла интерпретировать и сохранить контракт. Подробнее о компиляции

Композируемость

Смарт-контракты в Эфириуме публичны, и их можно рассматривать как открытые API. Это означает, что вы можете вызывать другие смарт-контракты в своем собственном смарт-контракте, чтобы значительно расширить его возможности. Контракты могут даже развертывать другие контракты.

Узнайте больше о композируемости смарт-контрактов.

Ограничения

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

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

Еще одним ограничением смарт-контрактов является максимальный размер контракта. Смарт-контракт может иметь размер не более 24 КБ, иначе ему не хватит газа. Это можно обойти, используя паттерн Diamond (opens in a new tab).

Мультисиг-контракты

Мультисиг-контракты (контракты с мультиподписью) — это аккаунты смарт-контрактов, которые требуют нескольких действительных подписей для выполнения транзакции. Это очень полезно для предотвращения единых точек отказа для контрактов, хранящих значительные суммы эфира или других токенов. Мультисиги также разделяют ответственность за выполнение контракта и управление ключами между несколькими сторонами и предотвращают ситуацию, когда потеря одного приватного ключа приводит к необратимой потере средств. По этим причинам мультисиг-контракты могут использоваться для простого управления DAO. Для выполнения мультисигам требуется N подписей из M возможных допустимых подписей (где N ≤ M и M > 1). Обычно используются N = 3, M = 5 и N = 4, M = 7. Мультисиг 4/7 требует четырех из семи возможных действительных подписей. Это означает, что средства все еще можно вернуть, даже если три подписи утеряны. В этом случае это также означает, что большинство владельцев ключей должны согласиться и поставить подпись, чтобы контракт был выполнен.

Ресурсы по смарт-контрактам

Контракты ОпенЗеппелин - Библиотека для безопасной разработки смарт-контрактов.

Дополнительная литература

Руководства: Подписи смарт-контрактов (EIP-1271) в Эфириуме

Последнее обновление страницы: 25 февраля 2026 г.