В среду компания Compound Finance представила Предложение № 62 по внедрению «Динамического распределения вознаграждений COMP» и исправлению ряда мелких ошибок.
Однако вскоре после выполнения обновления Compound Labs сообщила о «необычной активности», в результате чего некоторые пользователи смогли потребовать больше токенов $ COMP, чем допустимо.
🚨 Сообщалось о необычной активности в отношении распределения COMP после выполнения Предложения 062.
Никакие предоставленные / заемные средства не подвергаются риску - Compound Labs и члены сообщества исследуют несоответствия в распределении COMP.
- Compound Labs (@compoundfinance) 29 сентября 2021 г.
Изучив контракт, аудитор смарт-контрактов Курт Барри сказал, что ошибка возникла в результате малейшей ошибки. Он добавил, что эта незначительная ошибка обошлась Compound Labs в десятки миллионов.
Но насколько крошечной была эта ошибка?
Язык Solidity Эфириума неумолим
Solidity - это объектно-ориентированный язык программирования, то есть он организует дизайн вокруг объектов и данных. В отличие от функции и логики.
Он имеет сходство с C и C ++, поэтому его относительно просто изучить. А учитывая количество программистов, которые уже знакомы с C и C ++, переход на Solidity не займет много времени.
Однако этот императивный подход сопряжен с риском того, что программисты должны указывать коду, что именно делать на каждом этапе. И ошибка, даже небольшое упущение делает смарт-контракт уязвимым.
«При императивном подходе разработчик пишет код, который определяет шаги, которые компьютер должен предпринять для достижения цели. Это иногда называют алгоритмическим программированием. Напротив, функциональный подход предполагает составление проблемы в виде набора функций, которые необходимо выполнить. казнен ".
В этом случае расследование Барри показало, что ошибка Compound`s Proposal # 62 возникла из-за того, что программист пропустил знак «=» в двух местах.
«Смарт-контракты не прощают мельчайших ошибок… Ошибка COMP - трагический случай«> »вместо«> = »(в двух местах кода). Два символа, десятки миллионов потерянных значений».
Критики утверждают, что процесс аудита и тестирования Compound должен был быть более тщательным. Однако не является ли это еще одним примером недостатков Solidity, которые усиливаются, когда под угрозой находятся миллионы долларов?
Что такое Предложение № 62 о комплексном финансировании?
Ранее ставка вознаграждения за комбинированное финансирование была одинаковой как для поставщиков, так и для заемщиков, и это способствовало возникновению таких проблем, как отрицательные процентные ставки при заимствовании определенных активов.
Предложение № 62 направлено на разделение распределения COMP между поставщиками ликвидности и заемщиками на основе установленных корпоративным соотношением, а не на основе модели равных долей 50/50.
«Это предложение меняет логику Контроллера, чтобы иметь две разные ставки распределения COMP для каждого рынка - ставку на стороне заемщика (compBorrowSpeeds) и ставку на стороне предложения (compSupplySpeeds)».
Однако ошибка, содержащаяся в обновлении, позволила некоторым пользователям потребовать больше токенов $ COMP, чем допустимо.
На данном этапе точные детали утраты неизвестны. Однако генеральный директор Compound Роберт Лешнер заявляет, что наихудший сценарий - это чрезмерное истребование 280 000 токенов COMP, что составляет 82 880 000 долларов по сегодняшней цене.
Источник