Bug COMP Proposition 62 de Compound
Un bug de la Proposition 62 de Compound a versé jusqu'à 147 M$ de récompenses COMP non intentionnelles. La majorité fut rendue ; une partie conservée.
- Date
- Victime
- Compound Finance
- Chaîne(s)
- Statut
- Partiellement récupéré
Le 30 septembre 2021, Compound Finance a exécuté la Proposition 62 — un vote de gouvernance destiné à affiner la distribution des récompenses COMP à travers les marchés de prêt du protocole. Le contrat Comptroller mis à jour a livré un bug critique qui a fait que certains utilisateurs ont reçu largement plus de COMP que les règles ne le permettaient. L'exposition théorique maximale : jusqu'à ~147 millions de dollars de COMP aux prix du jour, selon avec quelle agressivité les utilisateurs réclamaient.
Ce qui s'est passé
L'ancien Comptroller avait distribué les récompenses COMP sur une répartition fixe de 50:50 entre fournisseurs de liquidité et emprunteurs. La Proposition 62 a introduit un schéma plus flexible qui laissait la gouvernance spécifier différents ratios par marché. Le contrat d'implémentation — écrit par Compound Labs et approuvé par la gouvernance — contenait un bug dans la logique de suivi des récompenses : sous certaines séquences de réclamation, le contrat calculait le COMP accumulé de l'utilisateur sur la base d'une comptabilité périmée ou dupliquée, versant beaucoup plus que ce que le calendrier de récompenses réel prescrivait.
Dans les heures suivant la mise en vigueur de la Proposition 62, les utilisateurs avaient déjà réclamé ~168 000 COMP (~50 M$ à l'époque) auxquels ils n'avaient pas droit. L'analyse de l'équipe a montré que l'exposition théorique du pire cas — si les utilisateurs continuaient de réclamer via chaque chemin comptable accessible — était d'environ 280 000 COMP (~84 M$) depuis le contrat de distribution immédiat, avec une exposition additionnelle depuis les retraits plus larges des réserves de Compound étendant potentiellement la perte à la plage que Rekt et d'autres citent comme ~147 M$.
L'erreur n'était pas malveillante du côté de l'équipe — c'était un bug logiciel dans une mise à jour approuvée par la gouvernance. Mais les contrats étaient non upgradables au niveau patch, et le bug ne pouvait être adressé que via une autre proposition de gouvernance.
Conséquences
- La gouvernance Compound a adopté la Proposition 63 pour arrêter la distribution supplémentaire de COMP pendant qu'un patch était préparé, et la Proposition 64 (« Fix COMP Accrual Bug ») pour livrer le patch.
- Robert Leshner, fondateur de Compound, a publiquement demandé que les utilisateurs ayant reçu du COMP en excès le retournent, notant que quiconque ne le ferait pas serait signalé à l'IRS comme recevant un revenu.
- Une fraction significative du COMP mal attribué a été retournée volontairement dans les semaines. Certains utilisateurs — particulièrement ceux qui avaient réclamé et immédiatement échangé contre d'autres actifs — n'ont pas rendu les fonds.
Pourquoi c'est important
L'incident Proposition 62 de Compound est l'un des exemples les plus clairs de comment les mises à jour approuvées par la gouvernance héritent du même risque que tout changement de contrat — et souvent sans la rigueur des cycles d'audit pré-déploiement. Voter contre une proposition boguée nécessite que les votants de gouvernance lisent réellement les contrats proposés ; en pratique, la plupart des votes passent avec une revue superficielle.
La réponse défensive qui a émergé dans les années suivantes :
- Timelocks sur toutes les mises à jour contrôlées par la gouvernance, donnant aux examinateurs white-hat une fenêtre pour signaler les bugs avant exécution.
- OpenZeppelin Defender et outillage similaire pour la simulation d'actions de gouvernance.
- Audits tiers obligatoires de toute proposition touchant la distribution de récompenses, la comptabilité de parts, ou autres chemins de code critiques aux invariants.
Le bug de Compound est aussi l'un d'un petit nombre d'incidents où « l'attaquant » n'est pas vraiment un attaquant — c'est une population d'utilisateurs qui se sont trouvés exposés à un bug et ont choisi, individuellement, de garder l'aubaine ou de la rendre. La question éthique on-chain — quoi faire quand un protocole vous paie plus qu'il n'avait l'intention — reste contestée.
Sources & preuves on-chain
- [01]beincrypto.comhttps://beincrypto.com/compound-finance-passes-proposal-to-fix-comp-distribution-bug/
- [02]theblock.cohttps://www.theblock.co/linked/119086/compound-bug-comp-risk-misreward
- [03]newsbtc.comhttps://www.newsbtc.com/news/compound-finance-suffers-bug/