Автор оригинала: Фрэнк, Foresight News
Начиная со вчерашнего дня, Curve пострадал от сбоя блокировки повторного входа в некоторых версиях Vyper, что привело к взлому его alETH/msETH/pETH и других стабильных пулов. Это спровоцировало серию вторичных катастроф DeFi и потрясений в мире криптовалют. который все еще назревает в середине.
Это также редкий инцидент в мире DeFi, связанный с атакой на ошибку на языковом уровне смарт-контрактов. Однако по сравнению с языком Solidity, о котором часто говорят в мире шифрования, Vyper на самом деле не так известен.
Так что же такое Vyper, какую роль он играет в мире DeFi и почему его ошибка вызывает большую обеспокоенность в отрасли? В этой статье Foresight News поможет вам понять язык Vyper, который в настоящее время находится на переднем крае.
Vyper: второй по популярности язык программирования смарт-контрактов.
Vyper был создан в 2017 году. До этого самым распространенным языком, используемым разработчиками для написания смарт-контрактов, был Solidity. Vyper, как и Solidity, — это язык программирования для смарт-контрактов, который можно скомпилировать в байт-код виртуальной машины Ethereum (EVM) и запустить на EVM.
Однако компилятор Vyper написан на Python. Это язык программирования, основанный на Python и совместимый с EVM. Он обладает характеристиками строгой типизации, небольшим кодом компилятора и эффективной генерацией байт-кода, что также делает его идеальным выбором для тех, кто хочет. введите Web3. Один из лучших вариантов для разработчиков Python.
Это приводит к тому, что с точки зрения скорости внедрения текущий Vyper также является «вторым по величине языком программирования смарт-контрактов, совместимым с EVM» после Solidity. Что касается последней статистики DeFiLlama до атаки, последняя статистика показывает:
В текущей ситуации развития DeFi (размер доли TVL) Solidity занимает абсолютную монополию с долей рынка 94,71%, а Vyper занимает второе место с долей рынка 3,04%.
Начиная с третьего места, Rust (0,9%), Cairo (0,53%) и Haskell (0,26%) уже скатились с обрыва.
Помимо того, что Vyper основан на Python, он не использует объектно-ориентированный режим, встроенную ассемблерную систему и не поддерживает повторное использование кода, модификаторы, наследование, перегрузку функций, рекурсивные вызовы, циклы бесконечной длины, двоичные числа с плавающей запятой фиксированной длины и т. д. .
Кроме того, он оптимизирован с точки зрения безопасности, читаемости, проверки и эффективности использования газа:
Безопасность: поддержка создания безопасных смарт-контрактов в Vyper;
Читабельность: язык смарт-контрактов и реализация компилятора Vyper стремятся быть простыми, чтобы улучшить читаемость кода, особенно для пользователей, у которых нет опыта использования Vyper и, как правило, опыта программирования;
Возможность аудита: код Vyper максимально читаем, а его простая архитектура уменьшает количество ошибок в программном обеспечении и повышает проверяемость смарт-контрактов;
Джон Макс Скаллер, основатель Vyper, однажды сказал, что он создал Vyper по двум причинам: «Во-первых, мне нравится Python, особенно его простота, но мне не нравится отсутствие определенности в области применения и большое количество изменений, необходимых для внесения изменений. Progress., поэтому я решил исправить эти проблемы, построив язык программирования гораздо более высокого уровня и встроив в него некоторые концепции функциональных языков программирования, сохранив при этом совместимость с Python.
Вторая причина — производительность. У меня есть основная программа на Python под названием interscript, грамотный инструмент программирования, который страдает отсутствием хорошей структуры в Python и проблемами с производительностью».
В целом, первоначальная цель дизайна Vyper — создать прозрачный упрощенный процесс смарт-контракта, который будет легко понять участникам смарт-контракта, с упором на читаемость и возможность аудита для обеспечения безопасности.
Преимущества и недостатки Вайпера
Преимущества и недостатки Vyper, обсуждаемые в этой главе, в основном сравниваются с языком Solidity. В конце концов, с точки зрения упомянутой выше доли рынка, другие языки смарт-контрактов еще не сформировали большого климата.
Прежде всего, одним из самых больших преимуществ Vyper перед Solidity является то, что он разработан на основе Python. Поэтому, хотя Vyper не такой мощный и популярный, как Solidity, он является идеальной альтернативой языку для разработчиков, знакомых с Python.
В то же время компилятор Vyper также предпочитает хранить локальные переменные в памяти, а не в стеке, что делает контракт более простым и эффективным, а также решает проблему «слишком глубокого стека», распространенную в других языках высокого уровня.
Vyper также предоставляет больше встроенных функций, благодаря чему почти все функции Solidity и Yul также доступны в Vyper. Разработчики могут получать доступ к низкоуровневым битовым операциям, внешним вызовам и операциям прокси-контрактов с помощью встроенных функций, а также могут реализовывать собственные макеты хранилища, предоставляя файлы наложения во время компиляции.
Недостатки Vyper по сравнению с Solidity также очевидны, главным образом потому, что это более новый язык, чем Solidity, поэтому, естественно, основная тяжесть приходится на недостатки поддержки разработчиков и инструментов сообщества:
Vyper по-прежнему не хватает широкой поддержки сообщества, которую имеет Solidity. Solidity имеет множество отличных инструментов разработки, таких как OpenZeppelin, предоставляющий библиотеки с открытым исходным кодом для безопасной разработки смарт-контрактов, а также IDE, такие как онлайн-IDE Remix и локальная среда разработки Hardhat It. предоставляет инструменты и функции, которые позволяют легко разрабатывать DApps.
На момент публикации данные GitHub показывают, что у Solidity 568 участников, а у Vyper — 189 участников, то есть разница в три раза.
Однако, хотя Vyper не имеет богатого набора инструментов разработки, у него есть инструменты, которые более тесно интегрированы и могут быть подключены к инструментам разработки Solidity, например, интерпретатор Titanaboa, который имеет множество встроенных инструментов, связанных с EVM и Vyper. и может использоваться для экспериментов и разработки Dasy, Lisp на основе Vyper с выполнением кода во время компиляции.
Кроме того, с технической точки зрения в Vyper отсутствуют модификаторы, наследование классов и рекурсивные вызовы, а язык программирования не является полным по Тьюрингу.
Конечно, большинство из них — это то, что Vyper намеренно предоставляет меньше функций с целью улучшить безопасность и возможность аудита, чтобы сделать контракты более безопасными и простыми для аудита, но это также требует от разработчиков дополнительной работы для устранения этих ограничений, а это означает, что Vyper, у которого нет преимущество в рабочей силе, обречено на низкую эффективность развития.
Откуда берется влияние Вайпера?
В настоящее время этот сбой Vyper затрагивает только несколько конкретных версий, таких как 0.2.15, 0.2.16 и 0.3.0, и, как видно из вышеизложенного, объем ведущих проектов DeFi, написанных с использованием Vyper, невелик, только бухгалтерский учет. занимает менее 5% рынка ТВЛ.
Так почему же провал Vyper имел такое большое влияние?
Короче говоря, хотя среди основных протоколов DeFi не так много проектов, активно использующих язык Vyper для разработки, и на этот раз проблемы возникли с несколькими конкретными версиями Vyper, существует ведущий проект DeFi, разработанный на основе Vyper:
Да, это Curve. Основная причина, похоже, связана с упомянутой выше функцией оптимизации Gas — поскольку контракт Curve более сложен, Vyper упрощает управление этими сложностями и дополнительно экономит Gas (другие известные контракты, разработанные на основе Vyper). Существует лишь несколько проектов, таких как версия Uniswap v1, первый депозитный контракт ETH 2.0 и т. д.).
Поскольку Curve стала ключевой инфраструктурой для мира DeFi и даже для всех сетевых финансов, под уровнями вложенности стабильный пул Curve, по сути, является основным источником средств и доходов для большинства протоколов, поэтому произошел этот инцидент с безопасностью. Основная причина продолжающихся потрясений от JPEG'd, Alchemix, Metronome, deBridge, Ellipsis Finance и т. д. по сей день.
Однако в новой версии Vyper эта уязвимость устранена. Однако, поскольку затронутый контракт стабильного пула Curve не может быть обновлен, развертывание и обновление невозможно выполнить. Единственный вариант — отказаться от соответствующего контракта и вывести средства.
краткое содержание
Вообще говоря, причина, по которой все до сих пор беспокоятся об этом инциденте с безопасностью, заключается главным образом в том, что риск ошибок на языковом уровне смарт-контрактов намного выходит за рамки самого протокола DeFi или логики смарт-контрактов.
Только представьте, если на этот раз проблемы возникнут не только у Vyper, но и у Solidity, то от всех протоколов DeFi в цепочке будет трудно избавиться, и мы даже можем действительно столкнуться с риском того, что «DeFi больше не существует».
Но от этого зависят несчастья и благословения. На этот раз Curve пассивно приоткрыла завесу над проблемой атаки на языковой уровень смарт-контрактов, заставив всех осознать эту возможность. Для мира DeFi это большое испытание и спасение. . возможность.
