Solidity — высокоуровневый язык со статической типизацией для смарт-контрактов, исполняемых виртуальной машиной Ethereum (EVM). Он позволяет определять состояние контракта, функции, события и правила взаимодействия с цифровыми активами.
От исходного кода к контракту
Компилятор преобразует код Solidity в байт-код EVM. Двоичный интерфейс приложения (ABI) описывает, как другое ПО вызывает функции контракта и интерпретирует данные. Развертывание контракта и изменение его состояния в блокчейне требуют транзакций и газа. Чтение существующего состояния через локальный вызов узла не обязательно требует платной транзакции.
Solidity применяют для токенов, условного депонирования и управления протоколами. Синтаксис может напоминать JavaScript, но выполнение подчиняется правилам блокчейна, а не браузера. Совместимость зависит от настроек компилятора и функций EVM, поддерживаемых целевой сетью.
Открытость кода и безопасность
Публикация верифицированного исходного кода помогает сопоставить его с развернутым контрактом, но не доказывает безопасность. Права доступа, внешние вызовы, допущения об оракулах и административные полномочия требуют отдельной проверки.
Переменная с пометкой private не является секретной в публичном блокчейне. Повторный вход возникает, когда внешний вызов возвращается в контракт до безопасного обновления его состояния. Тестирование и независимая проверка безопасности снижают риски, но не устраняют их полностью.