Я пошёл смотреть миграционный поток Dusk-моста в ожидании интересной части — EVM-контракта. Оказалось, что за всем этим стоит сейнер.
Сам миграционный контракт был довольно простым. Пользователи блокировали ERC20 или BEP20 DUSK, и происходило событие миграции. Но это событие не создавало нативный DUSK «волшебным образом». Необходим был внешний сервис, который наблюдал бы за ним и переиздавал средства на Dusk.
Это различие важнее, чем кажется на первый взгляд.
Более широкая архитектура Dusk двигалась в сторону нативной модели моста, где стоимость могла перемещаться между DuskDS и DuskEVM без обёрнутых активов или внешних кэстодианов. Но старый миграционный путь всё ещё зависел от операционного кошелька с подписями, который превращал наблюдаемое событие EVM в реальную транзакцию Dusk.
Данные об инциденте делают эту зависимость наглядной. 16 января атакующий скомпрометировал этот кошелёк, а затем перевёл украденный DUSK по мостовому пути. Последовательность включала 7 880 DUSK, переброшенных через мост, а затем ещё 1,91 млн DUSK, прежде чем меры по смягчению остановили следующую попытку на 8,91 млн DUSK.
То, что я считаю важным, — не просто то, что кошелёк был скомпрометирован.
Важно, что приём событий и выпуск стоимости были по сути связаны через один операционный путь. Смарт-контракт может быть детерминированным, но система вокруг него всё равно зависит от хранения ключей (custody), изоляции серверов, мониторинга и обработки транзакций.
Поэтому переработка, разделяющая приём событий и подписание, а также превращение событий миграции в сохраняемые задачи, — это больше чем просто патч безопасности. Она меняет то, где живёт доверие.
Читая это, я стал по-другому думать о мостах. Контракт — это часто та часть, которую мы проверяем в первую очередь, но реальная граница доверия может находиться на несколько уровней глубже, внутри ПО, которое решает, когда событие становится деньгами.
#dusk $DUSK @Dusk