Если вы когда-либо пытались обновить многолетнюю кодовую базу, не сломав при этом всё остальное, вы знаете это чувство. Теперь представьте, что эта кодовая база управляет миллионами долларов в ликвидности DeFi. Разработчики Vyper только что выпустили инструмент, призванный сделать этот процесс значительно менее пугающим.
Инструмент называется vyupgrade, и его версия v0.2 вышла 29 мая. Созданный преимущественно контрибьютором Vyper banteg, он автоматизирует переработку устаревших смарт-контрактов Vyper до современного синтаксиса, совместимого с версиями компилятора вплоть до v0.4.3. Он поддерживает контракты, написанные в версиях, начиная с серии 0.1b*, что означает возможность перевода даже самого раннего кода Vyper в современный вид.
Vyupgrade снижает риски миграции, перекомпилируя как оригинальный, так и изменённый контракт, а затем выполняя серию проверок на эквивалентность. Инструмент сравнивает ABI, идентификаторы методов и структуры хранилища между двумя версиями. Если что-то не совпадает или переработка может потенциально изменить поведение, инструмент явно на это указывает. Переработки, признанные потенциально небезопасными, помечаются открыто, а не пропускаются незаметно.
Интерфейс прост. Разработчики могут запустить его из командной строки с помощью команды вида uvx vyupgrade contracts/, с такими опциями, как –check для пробных запусков и –target-version для указания целевой версии компилятора.
Vyupgrade v0.2 был запущен на контрактах Curve, Yearn и Yield Basis. Совместимость также подтверждена для ранних контрактов, таких как Uniswap v1, который восходит к самым ранним дням он-чейн торговли.
Для Curve в особенности это важный контекст. Смарт-контракты Curve известны тем, что написаны на Vyper, а не на Solidity, — выбор, который обернулся обоюдоострым мечом в июле 2023 года, когда уязвимость компилятора Vyper привела к эксплойтам в нескольких пулах Curve. Инструменты, помогающие Curve и аналогичным протоколам поддерживать свои контракты в соответствии с последними, наиболее защищёнными версиями компилятора, — это не просто приятная возможность. Это прямой ответ на исторический опыт болезненных потерь.
Vyper разработан так, чтобы быть проще и более доступным для аудита, чем Solidity, с синтаксисом в стиле Python, который намеренно ограничивает возможности разработчиков с целью сокращения поверхности атаки. Компилятор Vyper активно развивается: версия v0.4.x вносит существенные изменения в язык. Но каждое обновление компилятора создаёт нагрузку по миграции для существующих контрактов. Инструмент, который автоматизирует и валидирует эту миграцию, устраняет одну из наибольших точек трения при поддержании актуальности протоколов на базе Vyper.
Уязвимости смарт-контрактов по-прежнему остаются крупнейшим источником потерь средств в DeFi, а устаревшие версии компилятора являются известным вектором атак. Инструмент, упрощающий поддержание контрактов на актуальных, исправленных версиях компилятора, напрямую снижает вероятность эксплойта, способного мгновенно обрушить TVL протокола.
Для таких протоколов, как Curve и Yearn, уже тестировавших vyupgrade, его внедрение может стать сигналом надёжности. Анонс получил ограниченное медиаосвещение и распространялся преимущественно через X и репозиторий проекта на GitHub, однако реакция сообщества оказалась крайне положительной.
Запись Vyper Developers Release Vyupgrade for Safe Contract Rewrites впервые появилась на TheCryptoUpdates.
