статья

Для чего нужен аудит смарт-контрактов. Уязвимости.

Плюсы и минусы смарт-контрактов
Что такое смарт-контракт и для чего он нужен?
По своему принципу смарт-контракт является алгоритмом (последовательностью действий), отвечающей за автоматическое исполнение контрактов внутри блокчейна. Основная задача таких алгоритмов - исключить расхождения в понимании условий договора между его участниками.
Сама идея таких алгоритм-контрактов была разработана Ником Сабо в 1996 году, когда он предложил использовать их при проведении сделок в области электронной коммерции. Правда, первое их применение на практике произошло лишь в 2013 году, когда они стали одним из важнейших элементов в только что созданной системе Эфириум (Ethereum). Вызвано это было тем, что полноценная реализация идеи смарт-контрактов в электронной среде стала возможной лишь с появлением блокчейн-технологии, поскольку последняя отвечает всем необходимым для этого требованиям:

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

По какому принципу это работает?
В системе Эфириум все алгоритмы смарт-контрактов выполняются внутри специальной среды EVM (или Виртуальной Машине Эфириум). При этом каждый из узлов этой вычислительной сети выполняет верификацию новых блоков, используя транзакции, расположенные внутри этих блоков. Таким образом, все узлы системы производят одни и те же вычисления и сохраняют одинаковые полученные данные.
Что такое смарт-контракт и для чего он нужен?
Уязвимость смарт-контрактов
Смарт-контракты, применяемые в системе Эфириум, не совершенны, и имеют следующие слабые места:
  • возможные ошибки при программировании на языке Solidity, на котором создаются все смарт-контракты;
  • нарушения в работе EVM, а также невозможность исправления ошибок в созданном контракте;
  • ошибки внутри блокчейна, связанные с временной задержкой при проверке статуса контракта (в результате чего одна из сторон может считать контракт исполненным, хотя этого еще не произошло).
Любая из этих уязвимостей, обнаруженная внимательным хакером, может привести к похищению огромных денежных сумм из системы. Самый яркий пример этого - атака на систему DAO, во время которой злоумышленником было похищено более, чем 64.000.000 долларов.

Зачем нужен аудит смарт-контрактов?
Наша компания предлагает своим клиентам написание безопасных смарт-контрактов, а также проверку уже имеющихся пользовательских контрактов на наличие уязвимостей. Подобная процедура необходима для того, чтобы защитить крупные суммы денег, собираемые пользователями во время реализации своих стартап проектов (ICO) - ведь даже одна ошибка в коде может стоить очень дорого (особенно учитывая то, что средняя сумма, собираемая во время ICO, равняется целым 10.000.000 $).