В среду компания 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 долларов по сегодняшней цене.

Источник