Как сообщалось на этой неделе, адрес, связанный с эксплойтом FTX, перемещал средства через ряд кросс-чейн проектов.

Хотя большая часть средств прошла через Thorchain, некоторые из них были перенаправлены через tBTC. В процессе были выявлены две ошибки.

Ни одна из ошибок не подвергает риску средства пользователей. Первый был исправлен и выпущен вчера, а второй требует обсуждения и консенсуса сообщества.

Первая ошибка — вектор отказа в обслуживании

В субботу, 30 сентября, адрес, связанный с FTX, запросил выкуп 76,81431578 BTC.

В tBTC сегодня выкупы могут быть запрошены любым пользователем с балансом L1 tBTC. Через некоторое время офчейн-мейнтейнер, делегированный Threshold DAO в

WalletCoordinator

контракт проверяет запрос на выкуп, побуждая подписантов считать запрос на выкуп действительным. Если 51 из 100 подписантов для конкретного кошелька согласны, они совместно подписывают и выпускают эти средства в блокчейне Bitcoin.

Через некоторое время этот запрос на выкуп был одобрен ответственным за выкуп. По крайней мере 51 из подписантов в соответствующем кошельке согласились, и выкуп был завершен.

9 часов спустя другой адрес, связанный с эксплойтом FTX, запросил еще один выкуп — на этот раз на 76,62186419 BTC.

Вскоре после этого произошло нечто невероятное.

Неизвестная третья сторона отправила транзакции BTC на два кошелька, стоящих за tBTC.

Теперь это происходит постоянно — в конце концов, tBTC чеканится путем внесения BTC. Но вместо обычной транзакции внесения эти транзакции были созданы вручную таким образом, что подписавшие tBTC клиенты думали, что кошельки «заняты» перемещением средств и не могут обслуживать запросы на выкуп. Сопровождающий утверждения ждал, пока кошельки перестанут быть «занятыми» — чего так и не произошло.

По сути, эти транзакции BTC заблокировали все невыполненные погашения tBTC.

Мы не знаем, кто отправил эти транзакции. Но кем бы они ни были, они знали достаточно, чтобы принудительно остановить мост tBTC, сжигая в процессе простой эксплойт 0-day и не давая одобрить второй выкуп, связанный с FTX.

Для меня это новость. Ни одна белая шляпа не связалась, никто не предложил никаких объяснений — но момент невероятный.

В этот момент системы оповещения и мониторинга, используемые участниками DAO, завыли. Команда разработчиков Keep начала готовить патч для исправления отказа в обслуживании на выходных.

К тому времени мы также поняли, что один из заблокированных выкупов был связан с FTX.

Вторая ошибка — недостаток конструкции механизма выкупа

Вторая ошибка стала очевидной, когда мы готовили первый патч.

Threshold DAO может делегировать полномочия нескольким адресам утверждающих в

WalletCoordinator

договор.

К сожалению, на сегодняшний день было только одно делегирование на один адрес мейнтейнера — единая точка отказа. Сегодня этот адрес контролируется американской компанией, которой запрещено одобрять выкуп, связанный с FTX.

Исправление конструкции механизма

Наличие только одного делегированного утверждающего с $25 млн в TVL было упущением. Тем не менее, более серьезной проблемой является сама конструкция механизма.

Любая система, полагающаяся на явное одобрение выкупа, обязательно столкнется с другой проблемой, подобной этой. Когда протокол был впервые запущен, обоснованием механизма одобрения были скорость и удобство для пользователя — альтернативы означали худший пользовательский опыт.

Я не верю, что нынешняя система сделала правильные компромиссы.

Есть два четких подхода к исправлению этого недостатка.

  1. Переход от процесса, основанного на одобрении, к процессу, основанному на вето

  2. Удалить все проверки погашения на уровне протокола

Я считаю, что наиболее безопасный механизм, в будущем, это то, что я называю «оптимистичными погашениями». Вместо списка адресов, которые завершают погашения, у нас есть список адресов, которые могут наложить вето на погашение — аналогично роли Guardian в оптимистичном чекане.

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

Недостатком является то, что этот гипотетический механизм требует дополнительной задержки для каждого погашения. Со временем, однако, эта задержка может быть сокращена до 15 минут, а для небольших транзакций и вовсе отменена.

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

Однако этот недостаток конструкции механизма был устранен, и мы многому научились из этого опыта — и я рад, что мы усвоили его на этой неделе, а не в 10 раз позже.

Что дальше?

DAO и сообществу предстоит принять решения.

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