В конце апреля неизвестная разработчица Молли Уинтермьют запустила DeFi-протокол Hegic. Она заказала аудит кода у известной фирмы Trail of Bits, но это не помогло избежать проблем. Уже спустя день после запуска банальная опечатка в одну букву в коде привела к потере почти $48 000 средств пользователей. Уинтермьют возвратила средства, перезапустила протокол и думает, что пользователи DeFi должны быть на полной готовности к рискам ради высокой прибыли. Инцидент с Hegic наглядно демонстрирует проблемы стандартов безопасности DeFi-протоколов: спешка в разработке и в аудите и, как следствие, потеря средств. Как происходил запуск Hegic, с какими проблемами столкнулась Уинтермьют и каких результатов ей удалось достичь к июлю?
Поспешный запуск Hegic
Hegic — DeFi-протокол торговли опционами, самостоятельно разработанный и запущенный сразу в мейннете анонимной программисткой Молли Уинтермьют.

Молли Уинтермьют в Twitter. Источник.
Главная идея проекта — максимально сделать проще работу с опционами как с финансовым инструментом. Опционные смарт-контракты дают право (но не обязательство) купить или продать определённый актив до конкретной даты или по согласованной цене. В принципе, опционные контракты — это ставка с привлечением заемных средств на то, будет ли цена актива идти вверх (колл-опцион) или вниз (пут-опцион) в течение конкретного периода времени. Hegic оказывает поддержку ETH, что позволяет любому пользователю получить доступ к заемной ставке на цену активов в любом направлении.
В Hegic любой пользователь имеет возможность продавать опционные контракты и зарабатывать премии в автоматическом режиме. Если контракт не выполняется и срок его действия истекает, продавцы (поставщики ликвидности) получают премию за продажу контракта и обязуются соблюдать цену исполнения, если она погашена.
Основное отличие Hegic от других похожих опцион-протоколов (например, Opyn) — коллективные риски при продаже контрактов. Традиционно, когда трейдеры продают опционный контракт, они рискуют средствами только в этом конкретном контракте. Но Hegic диверсифицирует этот риск по всем поставщикам ликвидности пула. Таким образом, продавцы разделяют риск и вознаграждение для всех контрактов, выпущенных из соответствующего пула.
В первый раз о работе над протоколом Уинтермьют объявила в начале января 2020 года. В начале февраля было выложено техническое описание проекта и запущен сайт. В марте первые пользователи начали тестировать Hegic.
Опечатка ценой в $48 000
В апреле Уинтермьют заказала аудит кода Hegic известной аудиторской компании Trail of Bits — протокол прошел проверку. Уверенная в его надёжности, 23 апреля разработчица запустила мейннет Hegic.
Но уже 24 апреля Уинтермьют была вынуждена перезапустить протокол. Причиной стала банальная опечатка в его коде — вместо функции «OptionsIDs», отвечающей за разблокировку ликвидности в истекших контрактах, была начертана несуществующая команда «OptionIDs» — без буквы «s». Ошибка привела к сбою, контракт оказался не исполненным и в результате средства пользователей на сумму $28 537 в ЕТН и DAI оказались заблокированы навсегда — в просроченных контрактах их разблокировать нельзя. Уинтермьют не могла исправить опечатку задним числом — протокол просто не предусматривал такой возможности.

Опечатка в коде Hegic, приведшая к потере средств пользователей. Источник.
Уинтермьют заприметила ошибку самостоятельно, предупредила об этом пользователей в Twitter, Discord и Telegram и скоро исправила опечатку. Она попросила активных держателей опционов реализовать свои контракты, чтобы избежать блокировки своих средств на контрактах пулов навсегда. Тем, кто успел установить связь с Уинтермьют, удалось возвратить средства, а остальным разработчица дала обещание полностью компенсировать потерянные активы. Уже на следующий день Уинтермьют выпустила подробный отчет и сообщила о трех ошибках, которые совершила при запуске Hegic:
Решила, что исправление замечаний аудиторов гарантирует безопасность кода;
Не провела автоматизированное тестирование кода, которое могло бы выявить опечатку;
Сделала скорость, а не безопасность главным в развитии проекта.
Тогда же Уинтермьют пообещала, что ошибка не остановит развитие Hegic: она перепроверит код в соответствии с самыми суровыми требованиями безопасности и вскоре перезапустит протокол.
Спор о компетенциях аудиторской проверки
После инцидента компания Trail of Bits, проверившая код Hegic, подверглась критике. В ответ глава компании Дэн Гвидо заявил, что проверка кода — это не проверка на безопасность, а скорее сводка рекомендаций для разработчиков, чтобы понять ошибки их кода и исправить их. Также он заметил, что у Trail of Bits не было достаточно времени для доскональной проверки кода Hegic. В комментариях изданию Decrypt он сказал, что инцидент — «это явная ошибка, которая была бы легко выявлена, если бы были проведены какие-либо юнит-тесты», то есть проверка на корректность отдельных модулей кода протокола в разных ситуациях использования. По его словам, команда Trail of Bits нашла 10 критических недочётов в коде Hegic и рекомендовала отложить запуск протокола в основной сети. Но Уинтермьют проигнорировала предупреждения об ошибках и ряд критических недостатков, поспешно запустив непроверенный до конца протокол. Это дало пользователям ложное впечатление, что Hegic надёжен.
В своем посте от 26 апреля Уинтермьют сообщила, что с самого начала хотела заказать недельный аудит, но Trail of Bits убедили ее, что трехдневной проверки будет достаточно. В подтверждение своих слов она предоставила скриншоты переписки. Разработчица внесла правки в код согласно рекомендациям аудита, но это не избавило ее от ошибки.
Аудит смарт-контрактов — основная часть проверки безопасности DeFi-протоколов. Криптосообщество воспринимает его как гарантию того, что код безопасен и ошибок не будет. Но, как продемонстрировал инцидент с Hegic, сами аудиторские компании не считают, что аудит избавляет от проблем. В любом случае, понятно, что на момент активации Hegic не прошел полную проверку и оставался ряд нерешенных вопросов безопасности.
Работа над обновлением и еще одна ошибка
9 мая Уинтермьют запустила новую версию Hegic. Перед этим она провела автоматизированные тесты, обнаружив и исправив ряд новых проблем. На этот раз протокол был создан вообще без аудита, о чем разработчица честно предупредила пользователей: «Вы можете потерять до 100% своих средств, предоставленных в пулы ликвидности контрактов. Существует технический риск, что контракты новой версии протокола могут быть взломаны. Никогда не вкладывайте средства, которые вы не можете позволить себе потерять».
Но 21 мая в протоколе Hegic была найдена еще одна ошибка. На нее обратил внимание крипто-инвестор Эндрю Кан. В серии твитов он сообщил, что в коде протокола был недостаток, позволявший более ранним поставщикам ликвидности получать прибыль без выполнения своих обязательств. Поставщики ликвидности, которые продают опционные контракты (короткие опционы), получают свою премию и могут выйти из пула после его сбора. Проблема заключалась в том, что более поздние поставщики ликвидности затем вынуждены нести все риски, так как более ранние поставщики могут забрать свои премии за опционы и уйти. Эта уязвимость была применена Каном — он сначала депонировал ликвидность, потом приобрёл пут-опционы, вывел ликвидность и осуществил опционы. Это принесло ему прибыль без рисков, но заставило более поздних поставщиков ликвидности нести большие потери, чем они ожидали. Уинтермьют никак не прокомментировала твиты Кана.
В мае Уинтермьют все же провела аудит новой версии протокола Hegic, заказав его у компании Bramah Systems.
Результаты деятельности Hegic за июнь
Обновленная версия протокола Hegic была активирована 1 июня, а код выложен в открытом доступе на GitHub. 1 июля Уинтермьют отчиталась о достигнутых за месяц результатах:
Торговый объем — 220.24 ETH;
Торгуется в колл-опционах — 164.82 ETH;
Торгуется в пут-опционах — 55.42 ETH;
Общая стоимость заблокированных средств — $39 145, из них $31 411 в ЕТН, остальные — в пуле DAI.
Разработчица не упомянула о каких-либо недостатках в протоколе за месяц.
В начале месяца Уинтермьют также дала интервью платформе The Defiant, в котором подробнее рассказала о совершенной работе и запуске протокола. Она утверждает, что исправила все ошибки, поменяла свой подход к разработке и теперь ставит качество выше скорости. Уинтермьют также сообщила, что осуществляет деятельность над созданием собственных токенов проекта.
Для тех, кто находится в сомнениях о безопасности Hegic, разработчица дала простую рекомендацию: «Не используйте его. Пока соотношение риска и вознаграждения при использовании протокола Hegic не устроит многих людей. Просто наблюдайте, учитесь и с завистью следите за высокими доходами других людей от торговли опционами на Hegic (шутка)».
Она сообщила, что доходность пула поставщиков ликвидности на ETH — около 25% годовых в ETH. Уинтермьют думает, что если кто-то хочет получать такую прибыль, то он должен быть готов внести средства на недавно запущенные протоколы. «Самые большие возможности всегда находятся далеко от текущего внимания стада», — сказала она, заметив, что когда-то Ethereum тоже был сырым продуктом, но те, кто поверил в него, не ошиблись.
Отвечая на вопрос, почему она запустила Hegic сразу в мейннете, Уинтермьют ответила, что «один протокол, запущенный в мейннете, стоит тысячи проектов, создатели которых разрабатывают их в течение многих лет и играют с новыми подходами, которые они находят, посещая различные хакатоны». Разработчица также отметила, что уже заплатила высокую цену за свой подход к запуску протоколов.
В заключение
Надёжность — главная из проблем нового криптосектора. DeFi-протоколы постоянно подвергаются атакам злоумышленников. Ранее DeCenter уже писал о том, как в феврале хакер дважды воспользовался уязвимостью протокола bZx и вывел ЕТН почти на $1 млн, а в апреле мошенник вывел $25 млн, заблокированных в китайском DeFi-протоколе dForce. Тогда мы предсказывали, что количество новых атак будет расти, и наши прогнозы, к сожалению, сбылись. Но история с Hegic продемонстрировала, что средства в DeFi-протоколах могут быть потеряны и по вине разработчиков — из-за чрезмерной спешки.
Инцидент с опечаткой в Hegic — очередной урок для DeFi. Экосистема развивается настолько волшебно быстрыми темпами, что не успевает достаточно тестировать и проверять свои сервисы. Если бы Уинтермьют взяла хотя бы месяц на тестирование, то проблемы не было бы. В мае она самостоятельно обнаружила и исправила несколько ошибок. Если бы Trail of Bits были более внимательными, ошибку тоже легко бы заметили. Но если аудит кода не гарантирует его безопасность, то какой в нем смысл?
Понятно, что случившееся — проблема не только Hegic и его пользователей. Вся DeFi-отрасль нуждается в более суровых правилах безопасности, без которых она не будет готова к массовому принятию. Чтобы DeFi-продукты стали надёжнее, нужно проведение комплексных аудитов от разных компаний, а также страхование от ошибок смарт-контрактов и хакерских атак. В противном случае пользователи будут терять средства все чаще.