• Смарт-контракт Comptroller продолжает выплачивать пользователям необоснованно большое вознаграждение.
  • Пользователи нашли лазейку и инициировали пополнение запасов Comptroller на 202 472 COMP.
  • На текущий момент контракт может суммарно раздать около 490 000 COMP ($154 млн).

На прошлой неделе пользователи протокола Compound смогли получить излишнее вознаграждение в размере 280 000 COMP (около $80 млн на момент эксплоита). Тогда казалось, что больше потерять уже невозможно. По крайней мере, так заявлял основатель Compound Роберт Лешнер. Однако очередная ошибка может стоить протоколу еще около $63 млн.

Вознаграждение между пользователями распределяет смарт-контракт Comptroller, именно он дарит людям огромное число токенов COMP за непропорционально малые вклады в пул ликвидности или взятые займы. Изначально в распоряжении Comptroller было всего 280 000 COMP, однако кто-то из пользователей вызвал общедоступную функцию drip(), которая позволяет автоматически пополнять баланс Comptroller.

Вызов функции drip() привел к совершению транзакции размером 202 472 COMP (около $63 млн на момент написания) из смарт-контракта Reservoir в смарт-контракт Comptroller. Таким образом, распределяющий средства контракт теперь может выплатить еще целых $63 млн. Причем часть из этих денег, а точнее $21.5 млн, уже была затребована как награда. Об этом сообщил в своем Twitter разработчик yEarn.Finance под ником banteg.

«Самый главный секрет в DeFi раскрыт. Кто-то вызвал функцию drip() на Compound Reservoir, и он отправил Comptroller еще $68.8 млн в токенах COMP. На данный момент четыре пользователя уже смогли потребовать $21.5 млн. Возможно, риску подвержена и большая сумма».

В Compound, естественно, знали о подобной возможности, поскольку функция drip() работает так, как и должна работать. При этом она фактически общедоступна, то есть любой может добавить токены в смарт-контракт, занимающийся распределением средств. Однако все надеялись, что никто не вызовет функцию до исправления бага в коде Comptroller, сообщил в своем Twitter Роберт Лешнер.

«Никто не вызывал эту функцию уже несколько недель, и разработчики надеялись, что мы успеем накатить обновление до того, как кто-то вызовет drip()».

По заявлениям Роберта Лешнера, всего под угрозой находится около 490 000 токенов COMP ($154 млн), причем весомая часть из них уже распределена между пользователями, а в распоряжении Comptroller осталось всего около 136 000 токенов ($42.8 млн). Стоит отметить, что некоторые из пользователей пошли навстречу Compound и вернули всю сумму или часть полученной награды. На адреса протокола уже возвращено около 117 000 COMP ($36.8 млн).

«Суммарно в зоне риска находится 490 000 COMP, из которых 136 000 все еще находятся в Comptroller, а 117 000 уже возвращены сообществу».