Разработчики Vyper представили инструмент vyupgrade для безопасного переписывания контрактов

Если вы когда-нибудь пробовали обновить кодовую базу многолетней давности, не сломав при этом ничего, вам знакомо это чувство. Теперь представьте, что кодовая база контролирует миллионы долларов ликвидности DeFi. Разработчики Vyper только что выпустили инструмент, призванный сделать этот процесс значительно менее пугающим.
Инструмент называется vyupgrade, и его версия 0.2 вышла 29 мая. Созданный в основном участником Vyper, Banteg, он автоматизирует переписывание устаревших смарт-контрактов Vyper на современный синтаксис, совместимый с версиями компилятора до v0.4.3. Он поддерживает контракты, написанные в таких старых версиях, как серия 0.1b*, что означает, что даже самый ранний код Vyper может быть перенесен в настоящее время.
Как на самом деле работают проверки безопасности
Vyupgrade устраняет риск миграции, перекомпилируя исходный и измененный контракт, а затем выполняя серию проверок эквивалентности. Он сравнивает ABI, идентификаторы методов и схемы хранения между двумя версиями. Если что-то не совпадает или если перезапись потенциально может изменить поведение, инструмент явно помечает это. Переписывания, считающиеся потенциально небезопасными, вызываются, а не пропускаются незаметно.
Реклама
Интерфейс прост. Разработчики могут запустить его из командной строки с помощью чего-то вроде uvx vyupgrade Contracts/, с такими опциями, как –check for пробные прогоны и –target-version, чтобы указать, какую версию компилятора следует использовать.
Протестировано в боевых условиях на основных протоколах DeFi
Vyupgrade v0.2 использовался по контрактам от Curve, Yearn и Yield Basis. Совместимость также была подтверждена для ранних контрактов, таких как Uniswap v1, который восходит к самым ранним дням внутрисетевой торговли.
В частности, для Curve это важный контекст. Смарт-контракты Curve, как известно, написаны на Vyper, а не на Solidity. Этот выбор стал палкой о двух концах в июле 2023 года, когда уязвимость компилятора Vyper привела к эксплойтам в нескольких пулах Curve. Не просто приятно иметь инструменты, которые помогают Curve и подобным протоколам поддерживать свои контракты в соответствии с последними и наиболее безопасными версиями компилятора. Это прямой ответ на историческую боль.
Почему важен недостаток инструментов Vyper
Vyper спроектирован так, чтобы быть проще и более проверяемым, чем Solidity, с синтаксисом Pythonic, который намеренно ограничивает возможности разработчиков, чтобы уменьшить поверхность атаки. Сам компилятор Vyper активно развивался: версия 0.4.x внесла в язык существенные изменения. Но каждое обновление компилятора создает бремя миграции для существующих контрактов. Инструмент, который автоматизирует и проверяет миграцию, устраняет одно из самых серьезных препятствий в обновлении протоколов на основе Vyper.
Что это значит для инвесторов
Уязвимости смарт-контрактов остаются крупнейшим источником потерь средств в DeFi, а устаревшие версии компиляторов являются известным вектором атак. Инструмент, который упрощает поддержание контрактов в текущих исправленных версиях компилятора, напрямую снижает вероятность того, что эксплойт может в одночасье разрушить TVL протокола.
Для таких протоколов, как Curve и Yearn, которые уже тестировали vyupgrade, внедрение может послужить сигналом доверия. Объявление вызвало ограниченное освещение в средствах массовой информации, в основном распространялось через X и репозиторий проекта GitHub, хотя реакция сообщества была в основном положительной.