Что такое Solidity? Язык программирования для смарт-контрактов.
Однажды одна неосторожная строка кода на Solidity позволила злоумышленнику получить 3,6 миллиона ETH. Код сделал именно то, что было указано. В этом и заключается проблема. Solidity управляет денежными потоками. Его исходный код обычно находится на виду. И как только контракт запущен, тихого исправления не бывает — ошибка остаётся, средства остаются открытыми, и весь мир может прочитать и то, и другое. Это доминирующий язык программирования для написания смарт-контрактов на Ethereum и всех блокчейнах EVM, кроме него. Отбросим жаргон, и большая часть DeFi и NFT — это Solidity. Мощный. Но и беспощадный. Вот что это такое, как на самом деле работает код, как выглядит первый контракт и почему безопасность никогда не покидает комнату.
Что такое Solidity как язык программирования?
Во всех руководствах говорится одно и то же: Solidity — это высокоуровневый язык для смарт-контрактов. Хорошо. Это вам мало чем поможет. Но какой это язык? Статически типизированный. Объектно-ориентированный. Фигурные скобки и точки с запятой, синтаксис, заимствованный из JavaScript, C++ и Python. Если вы когда-либо выпускали код на любом из этих языков, файл `.sol` покажется вам знакомым примерно через десять минут.
Гэвин Вуд набросал это в 2014 году при помощи небольшой команды Ethereum, в которую входил Кристиан Райтвайснер. Цель была предельно ясна: позволить людям писать смарт-контракты для публичного блокчейна. Его основной единицей является «контракт». Представьте его как «класс», который существует в цепочке — он хранит состояние, предоставляет доступ к функциям, наследует от других. Изюминка заключается в том, где он выполняется. Скомпилируйте его в байт-код, и один и тот же контракт будет выполняться идентично на каждом узле децентрализованной сети, при этом все они будут проверять друг друга. Это единственное требование объясняет, почему Solidity кажется таким ограниченным.
| Надежность с первого взгляда | |
|---|---|
| Первый релиз | 2014 |
| Ведущий дизайнер | Гэвин Вуд (Ethereum) |
| Парадигма | Объектно-ориентированный, контрактно-ориентированный подход |
| Набор текста | Статический |
| Компилируется в | Байткод EVM |
| Последний компилятор | v0.8.35 (апрель 2026 г.) |
| Расширение файла | .sol |
Как работает Solidity: от кода до EVM
Самое интересное в Solidity — это не синтаксис, а конвейер обработки данных. Читаемый код становится чем-то, что тысячи машин соглашаются выполнять одинаково. Детерминизм — вот в чём вся суть. Если бы два узла выполнили один и тот же контракт и получили разные ответы, сеть не смогла бы договориться о балансе ни одного из них. Это единственное требование объясняет множество странных ограничений языка: нельзя получать случайное число, нельзя вызывать внешний веб-API во время выполнения. Всё должно быть воспроизводимо непосредственно в цепочке.
Компилятор и байт-код
Вы создаёте файл `.sol`, удобочитаемый и высокоуровневый. Компилятор Solidity, `solc`, преобразует его в байт-код EVM — длинную последовательность низкоуровневых операций, а также ABI, в котором перечислены функции контракта. Именно байт-код попадает в блокчейн. Никто не читает его вручную. Это машинная целевая среда, то, как C в конечном итоге превращается в ассемблер.
Электронная машина для голосования и газ
Виртуальная машина Ethereum выполняет этот байт-код. Каждый узел Ethereum имеет такой узел. Каждая выполняемая им операция стоит газа, комиссия, оплачиваемая в ETH. Газ — это не второстепенная деталь. Именно так сеть оценивает вычислительные затраты и защищает себя: неконтролируемый цикл не замораживает цепочку — он просто расходует газ отправителя и возвращает управление. Хороший Solidity поддерживает низкий уровень газа.
Черепно-мозговая травма
ABI, или Application Binary Interface (бинарный интерфейс приложения), — это JSON-карта, описывающая способ взаимодействия с развернутым контрактом. Кошелек, такой как MetaMask, или децентрализованное приложение (dApp) используют его для кодирования вызова функции в формат, ожидаемый EVM, а затем декодируют полученный результат. Представьте ABI как мост между интерфейсом, который видит пользователь, и контрактом, расположенным по адресу в блокчейне.

Написание вашего первого смарт-контракта на Solidity
Достаточно теории. Самый быстрый способ понять Solidity — прочитать небольшой контракт и распознать его части.
Анатомия контракта
«твердость»
// Идентификатор лицензии SPDX: MIT
pragma solidity ^0.8.20;
Контракт Счетчик {
uint256 public count;
event Incremented(uint256 newCount);
function increment() public {
count += 1;
emit Incremented(count);
}
}
```
Несколько элементов составляют всю систему. Строка `pragma` фиксирует версию компилятора, поэтому несовместимая версия не сможет незаметно перекомпилировать ваш код. `contract Counter` открывает контракт, подобно открытию класса. `count` — это переменная состояния, которая хранится в блокчейне постоянно. `increment()` — это публичная функция, которую может вызвать любой. `event Incremented` регистрирует каждое изменение, чтобы приложения вне блокчейна могли реагировать. Объектно-ориентированный код с блокчейном в основе.
Инструменты, которые вы действительно используете
Для начала ничего устанавливать не нужно. Remix — это браузерная IDE: пишите, компилируйте и развертывайте Solidity всего за несколько кликов, что делает её стандартным местом для изучения Solidity. Реальные проекты переносятся на локальные фреймворки. Hardhat и Foundry обеспечивают корректную компиляцию, тестирование и развертывание. И почти все используют OpenZeppelin — библиотеку проверенных, многократно используемых контрактов для токенов и контроля доступа, вместо того чтобы заново изобретать рискованный код.
От кода к рабочему адресу
Развертывание означает отправку скомпилированного байт-кода в транзакции. Сначала протестируйте на бесплатной тестовой сети. Обычно в 2026 выбирают Sepolia. Подключите кошелек, например MetaMask. Отправляйте данные в основную сеть только тогда, когда контракт будет работать корректно. Развертывание также требует газа, оплачиваемого реальными ETH. И вот фраза, которую стоит вытатуировать на запястье: после развертывания код становится неизменяемым. Вы не можете редактировать работающий контракт. Именно этот факт — больше, чем любая синтаксическая особенность — является причиной существования следующего раздела.
Какие блокчейны поддерживают Solidity?
Solidity перестал быть «языком Ethereum» много лет назад. Многие сети перешли на EVM, чтобы повторно использовать инструменты Ethereum, и Solidity стал общим языком целого семейства блокчейнов. ChainList отслеживает более 385 блокчейнов, совместимых с EVM, в 2026. Все крупные сети соответствуют этому критерию: Polygon, BNB Chain, Arbitrum , Base и Avalanche, все они используют один и тот же байт-код, в который компилируется ваш файл `.sol`.
Ethereum по-прежнему остается центром притяжения. По данным DeFiLlama , общая заблокированная стоимость Ethereum составляет около 45 миллиардов долларов, что превышает половину всего объема DeFi. И активность растет: по подсчетам Token Terminal, только в четвертом квартале 2025 года было развернуто около 8,7 миллиона новых смарт-контрактов. Для разработчика такой охват является реальной причиной выбрать Solidity вместо языка, привязанного к одной блокчейн-сети.
Так что же создаётся с его помощью? Практически все категории децентрализованных приложений, о которых вы слышали. Протоколы кредитования и торговли DeFi. Контракты ERC-20, лежащие в основе большинства токенов, контракты ERC-721, лежащие в основе NFT. DAO кодируют свои правила голосования на Solidity. Стейблкоины управляют предложением с его помощью. Игры в блокчейне хранят свою логику там. Когда проект заявляет, что он «на Ethereum», кто-то почти наверняка написал и развернул Solidity.
Почему сложно обеспечить безопасность смарт-контрактов Solidity
Свойства, которые делают Solidity мощным языком, — это те же самые свойства, которые делают его ошибки такими дорогостоящими. В коде хранятся деньги. Исходный код часто находится в открытом доступе. Его нельзя исправить. Злоумышленник может спокойно прочитать ваш контракт, и средства окажутся прямо по указанному адресу. Это не язык для быстрой разработки и постоянного сбоя. Я никогда не работал с программным обеспечением, где разрыв между «он компилируется» и «он безопасен» настолько велик.
Реентрантность и взлом DAO
Классическая уязвимость Solidity — это реентрантность. Контракт отправляет ETH на внешний адрес, прежде чем обновить свой внутренний баланс, а принимающий контракт снова и снова вызывает функцию вывода средств, пока не завершится первый вызов. В июне 2016 года именно эта уязвимость привела к потере около 3,6 миллионов ETH, что на тот момент составляло примерно 60 миллионов долларов, из The DAO . В результате Ethereum разделился на ETH и Ethereum Classic, цепочку, которая торгуется и по сей день. А решение? Почти до смешного простое. Сначала обновите состояние, а деньги отправьте в последнюю очередь. У этой схемы даже есть название: проверки-эффекты-взаимодействия.
Переполнение целых чисел и SafeMath
До версии Solidity 0.8 арифметические операции могли незаметно переполняться. Прибавив 1 к максимальному значению `uint256`, значение обнулялось, что использовалось злоумышленниками для создания абсурдных балансов токенов, как это произошло в инциденте с BeautyChain (BEC) в 2018 году. В течение многих лет разработчики защищались от этого с помощью библиотеки SafeMath, которая некоторое время была одним из самых импортируемых файлов во всем Solidity. Затем в версии 0.8 в сам язык были добавлены проверки на переполнение и недополнение. Самая распространенная арифметическая ошибка теперь устраняется по умолчанию, без необходимости использования дополнительных библиотек.
Аудиты и их стоимость
Поскольку ошибки необратимы, серьёзные проекты платят за проверку. Они используют проверенные компоненты OpenZeppelin, а затем нанимают фирмы для аудита всей системы. Профессиональный аудит смарт-контрактов для DeFi-протокола обычно стоит от 25 000 до более 100 000 долларов, согласно данным рынка от Sherlock , а аудиты на Solidity, как правило, на 25-40 процентов дешевле, чем аналогичные аудиты на Rust, просто потому, что у них больше квалифицированных специалистов. Хорошие фирмы тоже быстро заполняют график. Протоколу среднего размера может потребоваться несколько недель, чтобы получить место, а затем ещё несколько недель — чтобы получить отчёт. Всё это не быстро и не является необязательным.
| Уязвимость | Что идёт не так? | Известный случай | Исправить |
|---|---|---|---|
| Реентрансация | Внешний вызов повторно подключается до обновления состояния. | DAO, 2016 | Проверки-эффекты-взаимодействия |
| Переполнение целочисленного типа | Арифметические вычисления выходят за пределы своих возможностей. | BeautyChain (BEC), 2018 | Встроенные проверки (Solidity 0.8+) |
| контроль доступа | Любой может вызвать привилегированную функцию. | Различный | `onlyOwner` / защита ролей |
| Неконтролируемые внешние вызовы | Неудачный вызов проигнорирован, логика продолжается. | Различный | Проверьте возвращаемые значения |
Хорошая новость в том, что масштабы разрушений сокращаются. По данным Immunefi , потери криптовалюты от эксплойтов, специфичных для DeFi, снизились примерно до 680 миллионов долларов в 2025 году, что примерно на 74 процента меньше пикового значения в 2,62 миллиарда долларов в 2022 году. Улучшенные инструменты и проверки безопасности, встроенные в компилятор, — отчасти тому причина.

Solidity против других языков для смарт-контрактов
У Solidity есть конкуренты. И это даже не самый безопасный из них. Vyper минималистичен и похож на Python, специально упрощен, чтобы исключить любые возможности для саморазрушения; Curve работает на нем. Rust используется в контрактах на Solana и NEAR, в некоторых отношениях безопаснее, но сложнее в изучении и дороже в аудите. Так почему же Solidity все еще побеждает? Не дизайн языка. Сетевые эффекты. Самый глубокий набор инструментов, наиболее проверенные библиотеки, целая экосистема EVM с блокчейнами и кошельками — все это уже говорит на языке Solidity.
| Язык | Цепи | Синтаксическая основа | Лучше всего подходит для | Компромисс |
|---|---|---|---|---|
| Сплошность | Ethereum + все EVM | JavaScript/C++ | Максимальная дальность действия, отработанный инструментарий | Легко написать небезопасный код |
| Вайпер | EVM | Python | Простые контракты, критически важные для безопасности. | Меньше функций, меньшее сообщество |
| Ржавчина | Солана, рядом | Ржавчина | Высокая производительность, строгая безопасность | Крутая кривая, более дорогостоящие аудиты |
Если вы хотите внедрять продукты там, где уже есть пользователи и деньги, Solidity — это прагматичный вариант по умолчанию, даже если конкурент технически безопаснее.
Стоит ли изучать программирование на Solidity в 2026?
Спекулятивный ажиотаж вокруг криптовалюты утих, но спрос на специалистов, умеющих писать корректный код на Solidity, не снизился. По подсчетам Electric Capital , с января по сентябрь 2025 года в Ethereum появилось около 16 181 новых разработчиков, и примерно 74% всех разработчиков, работающих с мультичейн-платформами, работают на блокчейнах EVM. Именно там сосредоточена оплачиваемая работа и многоразовые библиотеки.
Разумный путь изучения программирования на Solidity: начните с Remix, прочтите официальную документацию Solidity, затем изучите контракты OpenZeppelin, чтобы понять, как профессионалы структурируют токены и контроль доступа. Развертывайте небольшие проекты в тестовой сети, пока шаблоны безопасности не станут автоматическими, а не заученными наизусть. Редкий навык — это не написание компилируемого кода на Solidity; этим могут заниматься многие. Разработчику на Solidity платят за написание кода, который выдерживает столкновение с противником — тем, кто прочитал ваш контракт и рискует деньгами.
Почему Solidity остается языком программирования по умолчанию
Solidity используется по умолчанию по конкретной причине, а не из-за хайпа. Он присутствует во всех цепочках EVM. Он обладает самым богатым набором инструментов. Он лежит в основе большинства DeFi и NFT. Но первое, что нужно усвоить, — это не синтаксис. А вот что важно: в блокчейне развернутый код — это закон, а ошибки — навсегда. Изучайте язык и шаблоны безопасности вместе, потому что здесь они неразделимы. Следующий честный шаг — небольшой и бесплатный. Откройте Remix, напишите контракт из десяти строк и разверните его в тестовой сети на этой неделе.