Я думаю, люди читают «security audited» в криптопроекте и сразу переходят дальше.

Я — нет.

В Dusk интереснее всего не список аудиторов. А то, что они действительно должны были найти.

Dusk проверяли в PLONK, Piecrust, Phoenix, Kadcast, BLS, consensus, Rusk и в контрактах миграции. На бумаге это выглядит обнадёживающе.

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

Не потому, что внезапно перестаёт работать криптография в заголовке.

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

В Dusk как раз были примеры такого.

Проблема в PLONK однажды допускала возможность поддельных доказательств, потому что общедоступные входные данные обрабатывались некорректно в транскрипте Fiat-Shamir. Это обнаружили и исправили.

Затем AEGIS вскрыла кое-что ещё более интересное.

39 находок. 7 — отмечены как критические.

Страшным был не сам номер.

Страшными были места: изоляция VM, десериализация на стороне хоста, логика fee/refund в Phoenix и подписи BLS.

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

Вот где я обращаю внимание.

Потому что ZK-доказательство, математически корректное само по себе, мало что даёт, если VM вокруг него интерпретирует состояние неверно.

Хорошая схема подписи не спасает от плохой реализации.

И даже умный контракт может быть написан идеально, если среда, которая подаёт ему данные, даёт мусор.

Поэтому я ещё больше интересуюсь тем, что Dusk сделала после этих находок.

Они не просто залатали пару строк и сказали «готово». Исправления стали строже: дополнительные регрессионные тесты, более жёсткие правила декодирования, лучшее связывание fee/refund и изменения вокруг верификации BLS.

И именно это большинство людей пропускают, когда говорят об аудитах.

Аудит — это не доказательство того, что ничего не сломается.

Это свидетельство того, что происходит, когда кто-то достаточно старательно пытается это сломать.

И честно говоря, наблюдать за этим куда полезнее.

#dusk $DUSK @Dusk