В DeFi вклады, займы и обмены выполняются автоматически с помощью смарт-контрактов — без проверки человеком и без службы поддержки, которая могла бы вернуть деньги, отправленные не туда. Если контракт написан правильно, он становится самым надёжным сводом правил; если в нём ошибка, уязвимость будет столь же неукоснительно «исполняться».

$ETH Ethereum — один из первых публичных блокчейнов с поддержкой смарт-контрактов общего назначения. Текущая цена: 2128.02 (за 24 ч. −0.12%).

【Код — это правила, а уязвимости тоже】

После размещения смарт-контракта в блокчейне он автоматически выполняется в соответствии с кодом. Это обеспечивает прозрачность и предсказуемость: любой может прочитать код, а правила неизменяемого контракта не поменяются из-за того, что кто-то передумал.

И наоборот: если кто-то обнаружит и использует уязвимость в коде, средства могут быть выведены всего за несколько транзакций, и вернуть их будет сложно. The DAO в 2016 году — пример такого случая: контракт атаковали из-за уязвимости повторного входа, после чего Ethereum решил проблему с помощью хардфорка. Цепочка, которая не стала ветвиться, продолжила существовать как Ethereum Classic (ETC).

【Что именно проверяют при аудите】

Аудит безопасности — это проверка определённой версии кода сторонней командой специалистов по безопасности на конкретный момент времени. В отчёте об аудите обычно перечисляют обнаруженные проблемы, указывают степень их серьёзности и сообщают, устранила ли их команда проекта.

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

【Почему проблемы возникают даже после аудита】

Во-первых, аудит охватывает только определённую часть кода: контракты за пределами этой области и функции, добавленные позже, не проверяются. Если после аудита код изменили или фактически развёрнутая версия отличается от проверенной, выводы аудита уже нельзя применять напрямую.

Во-вторых, некоторые риски связаны не с самим кодом: проблемы с оракулом или другими протоколами, от которых зависит протокол; кража ключа администратора, имеющего право на обновление; подмена веб-интерфейса, побуждающая пользователей подписывать вредоносные транзакции, — всё это может привести к убыткам.

【Что могут сделать обычные пользователи】

Читая отчёт об аудите, обращайте внимание на дату, область проверки и проблемы, которые ещё не устранены, а не только на слова «прошёл аудит». Также можно проверить, можно ли обновить контракт в одностороннем порядке и защищено ли право на обновление мультиподписью и временной блокировкой.

Протоколы, которые работают давно и выдержали проверку значительными объёмами средств, обычно считают более надёжными, но это не значит, что в них нет уязвимостей. Поэтому в DeFi вкладывайте только те средства, потерю которых сможете пережить, распределяйте крупные суммы между разными протоколами и не забывайте отзывать разрешения у протоколов, которыми больше не пользуетесь.

【Краткий вывод】

Аудит — это начало, а не конец обеспечения безопасности. Практичнее считать риски смарт-контрактов неизбежной частью участия в DeFi, чем доверять одним лишь словам «прошёл аудит». Не ставьте все свои сбережения на один проект.

О какой теме вы хотели бы узнать? Напишите в комментариях.