Capitalisation 2,63 T $ −1,41 % sur 24 heuresVolume 24 h 61,69 Md $Dominance BTC 59,3 %ETH 10,6 %Fear & Greed 26 PeurCryptos 22 751

Oracle blockchain en DeFi : push, pull, TWAP et manipulations de prix

Oracle blockchain en DeFi : flux push Chainlink, mises à jour pull Pyth, TWAP Uniswap, prix périmés, Mango Markets, cas 2026 et vérifications à faire.

Avancé 35 min de lectureMis à jour À lire d'abord : Stablecoin rendement : sUSDS, bons du Trésor tokenisés et règles sur l’intérêt
Une parabole satellite, des nœuds reliés, des chandeliers et une loupe
Sommaire
  1. Ce qu’un protocole de prêt fait d’un prix, et pourquoi 3 % suffisent
  2. Oracles push : comment les flux de prix Chainlink se mettent à jour
    1. Nœuds, rapports hors chaîne et médiane
    2. Seuil de déviation, heartbeat et paramètres réels pour ETH, BTC et USDC
    3. Flux bornés, source unique et heures de marché
  3. Oracles pull : Pyth, Chainlink Data Streams et RedStone amènent le prix à la transaction
    1. Pyth après la mise à jour Core : routeurs, racines de Merkle et quorum 3 sur 5
    2. Chainlink Data Streams : rapports signés et vérificateur on-chain
    3. Push ou pull : celui qui choisit la mise à jour décide où se trouve le risque
  4. Oracle TWAP on-chain : utiliser les pools d’Uniswap comme source de prix
    1. Uniswap v2 : un prix de début de bloc, cumulé dans le temps
    2. Uniswap v3 : accumulateurs de ticks et moyenne géométrique
    3. Ce que coûte l’attaque d’un TWAP, et ce qu’il cache
  5. Prix périmés : quel âge un prix d’oracle peut-il avoir avant de devenir dangereux ?
    1. Contrôler updatedAt et fixer un âge maximal
    2. Séquenceurs de couche 2 : flux de disponibilité et délai de grâce
    3. Quand un plancher ou un plafond devient le bug
  6. Manipulation d’oracle : de bZx à Mango Markets et aux cas de 2026
    1. bZx, février 2020 : deux attaques, un seul cas d’oracle
    2. Mango Markets, octobre 2022 : un oracle honnête qui lit un marché étroit
    3. Le dénouement judiciaire : condamnations annulées le 23 mai 2025
    4. 2026 : marchés étroits, mauvais réglages et mises à jour falsifiées
  7. Se défendre à un coût inférieur à celui de l’attaque
  8. Oracles pour fonds tokenisés et preuve de réserves
    1. Une valeur liquidative publiée une fois par jour ; la chaîne ne ferme jamais
    2. Preuve de réserves : trois façons de savoir que la couverture existe
  9. Le cadre français : AMF, MiCA et fiscalité
  10. Comment vérifier l’oracle d’un protocole avant d’y déposer des fonds

Le 15 février 2026, à 18 h 01 UTC selon Decrypt, une proposition de gouvernance de Moonwell baptisée MIP-X43 a été exécutée sur Base. L’un des nouveaux paramètres de prix du cbETH, l’ether staké emballé de Coinbase, prenait le taux de change brut cbETH/ETH sans jamais le multiplier par le cours ETH/USD. Le marché de prêt s’est mis à valoriser le cbETH autour de 1,12 dollar au lieu d’environ 2 200 dollars. Des liquidateurs ont remboursé à peu près un dollar de dette et saisi au total 1 096 cbETH, d’après Anthias Labs cité par Decrypt.

Moonwell s’est retrouvé avec 1,78 million de dollars de créances irrécouvrables, selon The Block, qui cite l’analyse post-incident du protocole. Personne n’a piraté quoi que ce soit : un contrat a fait confiance à un nombre. C’est tout l’enjeu d’un oracle blockchain en finance décentralisée, qui n’est pas un simple tuyau de données neutre mais une décision de confiance, avec un coût, un délai et une surface d’attaque. Chaque conception répond à sa façon à trois questions. Qui signe le nombre ? Quel âge peut-il avoir quand un contrat s’en sert ? Et combien coûte-t-il à un attaquant de le déplacer ?

Un rappel d’abord. Un contrat intelligent ne peut ni ouvrir un site web ni demander un cours à une plateforme : tout prix qu’smart contract holding reserves of two or more tokens, supplied by users, that a decentralized exchange uses to execute trades automatically at a price set by a formula.">pool diverge, compared with simply holding the same tokens in a wallet. It becomes permanent when the provider withdraws.">il lit a dû être écrit sur la chaîne par une transaction, et celui qui l’écrit entre dans la sécurité du protocole. ethereum.org appelle cela le problème de l’oracle : prouver que la donnée injectée vient de la bonne source, qu’elle n’a pas été altérée et qu’elle arrive à temps. Notre entrée de glossaire sur l’oracle blockchain donne la définition ; cette leçon la suppose acquise et entre dans la mécanique.

Elle prolonge aussi notre leçon sur les stablecoins à rendement. Des jetons comme le sUSDS, le sUSDe ou les parts de fonds tokenisés ont eux aussi besoin d’un prix, et plusieurs l’obtiennent d’un taux de change ou d’une valeur liquidative plutôt que d’un marché. Pour situer la couche des oracles parmi les portefeuilles, les chaînes, les protocoles et les interfaces, notre carte de la pile DeFi la replace.

Ce qu’un protocole de prêt fait d’un prix, et pourquoi 3 % suffisent

Les protocoles de prêt sont les plus gros consommateurs d’oracles. Ils multiplient le prix de votre garantie par un seuil pour décider combien vous pouvez emprunter, puis le comparent à votre dette pour savoir quand vous pouvez être liquidé. L’oracle est lu à chaque emprunt, à chaque retrait et à chaque appel de liquidation.

Un exemple chiffré, avec des nombres ronds illustratifs qui ne sont les réglages d’aucun marché réel. Vous déposez 10 000 dollars de garantie sur un marché dont le seuil de liquidation est de 80 % et vous empruntez 7 500 dollars. Vous devenez liquidable quand la garantie, telle que l’oracle la voit, passe sous 9 375 dollars, soit une baisse de 6,25 %. Si l’oracle sous-évalue la garantie de 3 % pendant une heure, une position déjà à 4 % de la limite est liquidée alors que le marché n’a pas bougé. Le liquidateur rachète votre garantie avec une décote, et cette décote est votre perte.

L’erreur inverse est pire pour tous les autres. Si l’oracle surévalue la garantie, les emprunteurs peuvent sortir plus que ce qu’elle vaut, partir, et laisser le manque en créances irrécouvrables partagées entre les déposants. C’est le schéma de la plupart des cas de manipulation plus bas.

Quatre familles de conception existent. Les flux push écrivent le prix sur la chaîne selon un calendrier (les Data Feeds de Chainlink sont les plus connus). Les oracles pull signent les prix hors chaîne et laissent l’utilisateur les amener dans sa transaction (Pyth, Chainlink Data Streams, le mode pull de RedStone). Les TWAP on-chain lisent l’historique d’une plateforme d’échange décentralisée (Uniswap). Et les protocoles ajoutent de plus en plus leurs propres couches maison : formules de taux de change, plafonds et bornes, comme le système CAPO d’Aave. Chacune a sa manière de défaillir.

Nœuds, rapports hors chaîne et médiane

Chaque flux de données Chainlink est exploité par un ensemble d’opérateurs de nœuds indépendants, chacun relevant les prix auprès de plusieurs sources. Dans le protocole Off-Chain Reporting décrit par la documentation de Chainlink, les nœuds échangent leurs observations sur un réseau pair à pair, un meneur assemble un rapport, un quorum de nœuds le signe et une seule transaction le dépose sur la chaîne. Le contrat agrégateur vérifie les signatures et expose la médiane des observations comme réponse, avec un horodatage et un numéro de tour.

La médiane compte. Une minorité de nœuds défaillants ou malhonnêtes ne peut pas la déplacer beaucoup, et une seule transaction par tour partage les frais de gaz au lieu de les faire payer à chaque nœud. Le point faible est ailleurs : les nœuds rapportent ce que disent leurs sources, donc un flux pour un jeton qui s’échange sur deux places étroites ne vaut que ce que valent ces deux places.

Seuil de déviation, heartbeat et paramètres réels pour ETH, BTC et USDC

Le push n’écrit pas à chaque bloc. La documentation des Data Feeds de Chainlink décrit deux déclencheurs. Le seuil de déviation : les nœuds surveillent le prix hors chaîne et publient un nouveau tour quand il s’écarte d’un pourcentage donné de la dernière valeur écrite. Le heartbeat, ou battement : si le prix reste dans cette bande, un tour est publié quand même après un délai fixe.

Chainlink publie les réglages de chaque flux dans son répertoire de données de référence. Sur le réseau principal d’Ethereum, au 28 octobre 2026, les paramètres de trois flux très utilisés étaient les suivants :

Flux (Ethereum, réseau principal)HeartbeatSeuil de déviationDécimales
ETH / USD3 600 s (1 heure)0,5 %8
BTC / USD3 600 s (1 heure)0,5 %8
USDC / USD82 800 s (23 heures)0,25 %8 (flux de stablecoin borné)

Lisez ces chiffres en lecteur de risque, pas de code. À un cours illustratif de 3 000 dollars pour l’ETH, un seuil de 0,5 % veut dire que le prix écrit peut rester jusqu’à 15 dollars à côté du marché avant la prochaine écriture, et sur un marché calme une heure de silence est normale, pas une panne. Parmi les 301 flux du même fichier, le battement le plus fréquent était de 86 400 secondes, soit un jour entier. Les décimales varient aussi : les paires crypto/USD en utilisent 8 et les paires crypto/ETH 18, d’où le conseil donné aux intégrateurs de lire decimals() au lieu de les supposer.

Dans un krach, le déclencheur de déviation se répète, donc le flux suit, mais chaque écriture attend encore l’accord des nœuds puis l’inclusion de la transaction. Sur une chaîne congestionnée, ce délai peut s’allonger, et c’est une des raisons pour lesquelles les prêteurs laissent une marge entre la limite d’emprunt et le seuil de liquidation.

Un sablier à côté d'une baie de serveurs, un éclair et un engrenage
Un flux push écrit un nouveau prix quand il bouge de 0,5 % ou quand le battement horaire arrive à échéance.

Flux bornés, source unique et heures de marché

Le guide de Chainlink sur le choix des flux met en garde contre des catégories qui se comportent autrement. Un flux de stablecoin borné plafonne le prix rapporté à un maximum fixé d’avance et, précise la documentation, n’a pas de borne inférieure : le plafond empêche un bref pic au-dessus d’un dollar de gonfler la garantie, tandis qu’un vrai décrochage reste visible. Certains flux reposent sur une seule source de données, et chacun porte une note de risque de tarification de marché, de faible à très élevée.

Pour les actifs traditionnels, les flux ajoutent une dimension de temps. La documentation attribue à chacun des heures de marché : l’horaire standard des actions américaines va de 9 h 30 à 16 h 00, heure de l’Est, du lundi au vendredi ; les flux d’actions tokenisées qui exigent des prix continus utilisent une fenêtre 24/5, de 18 h 00 le dimanche à 17 h 00 le vendredi (heure de l’Est). Une blockchain fonctionne le samedi, une action non. Hors de ses heures, un flux affiche le dernier prix, et un protocole qui continue de prêter contre lui prête contre un nombre qui ne peut plus bouger. Le même guide recommande des coupe-circuits qui mettent un protocole en pause quand les prix sont périmés, sautent brutalement ou approchent le minimum ou le maximum d’un flux.

Pyth après la mise à jour Core : routeurs, racines de Merkle et quorum 3 sur 5

Pyth collecte les prix auprès d’éditeurs de première main, comme des sociétés de trading et des plateformes. De nombreux tutoriels décrivent encore une chaîne dédiée, Pythnet, plus des signatures de gardiens Wormhole. C’est dépassé. La documentation de Pyth, consultée le 28 octobre 2026, indique : « That blockchain has shut down as part of the Pyth Core upgrade » (cette blockchain a été arrêtée dans le cadre de la mise à jour Pyth Core).

Dans la conception actuelle, cinq routeurs exploités indépendamment calculent chacun des agrégats de prix, les rangent dans un arbre de Merkle et signent la racine. Un service nommé Hermes collecte les racines signées et les messages de prix. Un utilisateur, un keeper ou l’interface d’un protocole récupère la racine signée et la preuve de Merkle des prix voulus, puis les soumet à un contrat Pyth dans sa propre transaction ; le contrat accepte la mise à jour quand au moins 3 des 5 signatures de routeurs sont valides. Chaque prix est accompagné d’un intervalle de confiance, calculé à partir de la dispersion des données des éditeurs, et la page de bonnes pratiques de Pyth demande aux intégrateurs de l’utiliser, par exemple en suspendant l’activité quand l’intervalle est large par rapport au prix.

La page d’accueil de Pyth, consultée le 28 octobre 2026, annonçait plus de 3 600 flux de prix actifs, plus de 138 éditeurs de données et plus de 720 consommateurs de données en septembre 2026, des chiffres que le projet publie lui-même.

Chainlink exploite aussi un produit pull. Dans Data Streams, un réseau d’oracles décentralisé signe des rapports et les confie à un réseau d’agrégation dont plusieurs sites tournent en parallèle. Les applications récupèrent les rapports par une API REST ou WebSocket et, quand elles ont besoin d’un prix sur la chaîne, soumettent le rapport à un contrat Verifier qui contrôle les signatures du réseau avant que le prix serve. Chainlink le propose en API standard et dans une version couplée à son service Automation, conçue pour limiter le front-running dans les applications de trading. Les pages consultées ne donnent aucun chiffre de latence, donc aucun n’est cité ici.

RedStone, un troisième fournisseur, propose les deux modèles. Sa propre comparaison décrit un mode push qui écrit les prix à intervalle de temps ou sur déviation, le gaz étant payé par l’oracle ou par le protocole, et un mode pull qui joint des paquets de données signés aux données d’appel de la transaction de l’utilisateur, lequel paie donc un peu plus de gaz sauf si le protocole le subventionne.

Push ou pull : celui qui choisit la mise à jour décide où se trouve le risque

« Push » et « pull » disent qui déclenche et qui paie l’écriture sur la chaîne. Aucun n’est plus sûr par nature ; ils déplacent le risque.

Flux pushOracle pullTWAP on-chain
Qui écrit le prixLes nœuds de l’oracle, sur déviation ou heartbeatN’importe quel utilisateur ou keeper, dans sa propre transactionPersonne : la pool de la plateforme l’enregistre au fil des échanges
Qui paie le gazLe réseau d’oracles (coût réparti entre tous)L’utilisateur, ou le protocole s’il subventionneLe lecteur du TWAP, plus les traders de la pool
Âge typique du prixJusqu’au heartbeat en marché calmeAussi frais que la mise à jour soumiseLa moitié de la fenêtre de calcul, en moyenne
Principal mode de défaillancePrix périmé ou plancher, mauvaises sourcesMise à jour ancienne ou choisie, bug du vérificateurPool étroite déplacée sur la fenêtre
Exemple réelVenus, mai 2022 (plancher d’un flux)Bonzo Lend, juillet 2026 (vérificateur)Inverse Finance, avril 2022

Avec le pull, celui qui soumet la mise à jour choisit le moment et laquelle des mises à jour valides arrive. Les bonnes pratiques de Pyth avertissent que des adversaires peuvent choisir la mise à jour signée qu’ils envoient, donc les protocoles doivent imposer un ordre et un âge maximal ; sinon un prix valide mais plus ancien peut être rejoué tant qu’il reste dans la fenêtre de fraîcheur.

Le chemin de vérification est l’autre point faible. Le 11 juillet 2026, Bonzo Lend, sur Hedera, a perdu environ 9,05 millions de dollars (DefiLlama). D’après le rapport préliminaire de Bonzo, relayé par Cointelegraph et The Block, l’attaquant a déposé 250 jetons SAUCE valant quelques dollars et soumis une mise à jour de prix qui multipliait leur valeur par environ 1012 ; le vérificateur on-chain de Supra l’a acceptée alors qu’elle portait une signature remplie de zéros. L’attaquant a ensuite emprunté environ 6,63 millions d’USDC et 34,5 millions de HBAR emballés. Bonzo a affirmé que ses propres contrats et le réseau Hedera n’étaient pas en cause ; Supra a reconnu la faille et déployé un correctif. Un oracle pull ne vaut que ce que vaut le contrat qui vérifie les signatures.

Oracle TWAP on-chain : utiliser les pools d’Uniswap comme source de prix

Uniswap v2 : un prix de début de bloc, cumulé dans le temps

Un prix moyen pondéré dans le temps (TWAP) se passe de tout tiers : la plateforme enregistre son propre historique de prix et un protocole en fait la moyenne. Uniswap en a fait une fonction dès la v2. Sa documentation sur les oracles v2 explique que chaque paire mesure le prix au début de chaque bloc, avant tout échange de ce bloc : il a donc été fixé par la dernière transaction du bloc précédent. Pour le fausser, un attaquant doit faire un mauvais échange à la fin d’un bloc et espérer l’annuler au suivant, pendant que les arbitragistes cherchent à prendre l’écart.

Cela ne protégerait pas un gros prêt, alors la v2 ajoute le prix de début de bloc, pondéré par sa durée, à une variable cumulative. Un protocole lit la valeur cumulée au début et à la fin d’une fenêtre et divise la différence par sa durée : c’est le TWAP. La documentation donne la règle empirique. Le coût de la manipulation croît à peu près avec la liquidité de la pool et avec la longueur de la fenêtre ; déplacer de 5 % un TWAP d’une heure coûte à peu près ce qu’il en coûterait de tenir le prix à 5 % d’écart à chaque bloc pendant une heure, perdu en arbitrage et en frais.

Uniswap v3 : accumulateurs de ticks et moyenne géométrique

Uniswap v3 a changé l’arithmétique. Chaque pool v3 stocke des observations d’un accumulateur de ticks, la somme courante du tick actuel multiplié par le temps écoulé. Le tableau démarre avec une seule case ; quiconque accepte de payer le gaz peut en augmenter la cardinalité jusqu’à 65 535 cases, ce qui donne, dit la documentation, environ 9 jours d’historique ou plus. Un consommateur appelle observe() avec le nombre de secondes en arrière qu’il veut, prend deux valeurs de l’accumulateur et divise la différence par le temps qui les sépare. Le résultat est un tick moyen, qui se convertit en prix par 1,0001 puissance le tick. Comme la moyenne porte sur les ticks, le prix est une moyenne géométrique, pas arithmétique. L’exemple de la documentation : un tick de 100 000 correspond à environ 22 015,5 USDC par WETH.

Deux réserves. Sur Arbitrum One, plusieurs blocs peuvent être produits par seconde et les horodatages viennent de l’horloge du séquenceur, si bien que les observations y sont plus fines. Et la version la plus récente n’a rien d’intégré : la page v3 indique que « Uniswap v4 does not include built-in oracle functionality ». Une pool v4 peut obtenir un oracle par un hook, mais seulement si quelqu’un écrit et audite ce hook.

Ce que coûte l’attaque d’un TWAP, et ce qu’il cache

Il est lent par construction, et c’est à la fois sa protection et son défaut. Un TWAP de 30 minutes rapporte la moyenne des 30 dernières minutes : dans un krach, il surévalue les garanties et les liquidations arrivent en retard, ce qui peut laisser des créances irrécouvrables. Une fenêtre courte sur une pool étroite se déplace à bas coût. Une fenêtre longue sur une pool profonde coûte cher à déplacer mais retarde sur le marché. C’est pourquoi les grands prêteurs valorisent les actifs majeurs avec des flux et réservent les TWAP à la longue traîne ou à un contrôle de cohérence.

Inverse Finance a payé le prix d’une pool étroite le 2 avril 2022. DefiLlama recense une perte de 15,6 millions de dollars. Selon l’analyse de RedStone, l’attaquant a retiré 901 ETH de Tornado Cash, échangé 500 ETH contre de l’INV dans la pool étroite INV-WETH de SushiSwap, et maintenu ce prix sur plus d’un bloc, si bien que le TWAP de SushiSwap, seul oracle d’Inverse pour l’INV, l’a enregistré. L’attaquant a alors emprunté des ETH, WBTC, DOLA et YFI pour environ 15,6 millions de dollars contre l’INV gonflé. RedStone attribue la cause à un oracle unique bâti sur une pool peu liquide. Un second incident, le 16 juin 2022, a coûté 5,8 millions de dollars, également classé par DefiLlama comme manipulation de prix.

La documentation v2 nomme une condition de plus : sans arbitragistes pour prendre l’écart, l’attaque classique exige que l’attaquant produise deux blocs de suite. Cette page date de l’époque de la preuve de travail. En preuve d’enjeu, le proposeur de chaque créneau est connu peu avant et un même validateur peut tirer deux créneaux consécutifs ; et le cas d’Inverse montre qu’un attaquant qui maintient un prix sur plusieurs blocs, par quelque voie que ce soit, passe la défense du prix de début de bloc.

Prix périmés : quel âge un prix d’oracle peut-il avoir avant de devenir dangereux ?

Contrôler updatedAt et fixer un âge maximal

On lit un flux Chainlink avec latestRoundData(), qui renvoie le numéro de tour, la réponse, le début du tour, sa mise à jour (updatedAt) et le tour dans lequel la réponse a été calculée. La fonction ne refuse jamais de répondre : si aucun nœud n’a écrit depuis six heures, elle renvoie le prix vieux de six heures. Contrôler l’âge revient au consommateur. Un schéma minimal, écrit pour cette leçon et simplifié d’après la logique des exemples de Chainlink, ressemble à ceci :

(uint80 roundId, int256 answer, , uint256 updatedAt, ) = feed.latestRoundData();
require(answer > 0, "bad price");
require(block.timestamp - updatedAt <= MAX_AGE, "stale price");
// MAX_AGE: a little above the feed's heartbeat, e.g. 3,600 s + margin for ETH / USD
uint256 price = uint256(answer); // scale with feed.decimals()

Le bon âge maximal dépend du flux. Fixé sous le heartbeat, il arrête le protocole à chaque heure calme ; fixé à un jour pour un flux censé se mettre à jour toutes les heures, il laisse une panne passer inaperçue pendant 23 heures. Pyth traite le même problème dans l’appel lui-même : la fonction getPriceNoOlderThan() de son SDK échoue en Solidity si le prix est plus vieux que l’âge passé en paramètre, et sa page de bonnes pratiques rappelle aux utilisateurs de son service à faible latence Pyth Pro que les horodatages y sont en microsecondes alors que block.timestamp est en secondes.

Séquenceurs de couche 2 : flux de disponibilité et délai de grâce

Sur un rollup de couche 2, un séquenceur unique ordonne en général les transactions. Notre leçon sur la couche 1 face à la couche 2 explique cette conception ; le problème d’oracle apparaît quand ce séquenceur s’arrête. La documentation de Chainlink sur les séquenceurs L2 explique que les utilisateurs perdent alors la voie habituelle d’envoi des transactions, tandis que les initiés peuvent encore passer par les contrats de couche 1, plus lent et plus coûteux, ce qui crée « an unfair advantage » (un avantage injuste) pour ceux qui contournent le séquenceur. Au redémarrage, les prix ont pu beaucoup bouger et les emprunteurs n’ont eu aucune chance de compléter leur garantie.

La réponse de Chainlink est un flux de disponibilité du séquenceur : 0 signifie que le séquenceur fonctionne, 1 qu’il est à l’arrêt. Le contrat d’exemple de la documentation refuse de lire un prix tant que le séquenceur est à l’arrêt et pendant un délai de grâce de 3 600 secondes après son redémarrage, pour que les emprunteurs réparent leurs positions avant la reprise des liquidations. Sur Arbitrum, l’état est mis à jour par la boîte de réception différée de la couche 1, si bien que l’indicateur « à l’arrêt » est traité avant les nouvelles transactions au retour du séquenceur ; sur les autres réseaux, il est relayé depuis la couche 1. La documentation liste des flux sur Arbitrum, Base, Celo, Mantle, MegaETH, Metis, OP, Scroll, Soneium, X Layer et ZKsync, avec une réserve : « Chainlink is no longer expanding L2 Sequencer Uptime Feeds to additional networks ». Les flux existants continuent de fonctionner ; un protocole sur un rollup plus récent doit trouver un autre moyen de détecter l’arrêt.

Quand un plancher ou un plafond devient le bug

Certaines des défaillances d’oracle les plus coûteuses venaient de limites conçues comme des sécurités. En mai 2022, pendant l’effondrement de LUNA, le flux LUNA/USD de Chainlink utilisé par Venus Protocol sur BNB Chain et par Blizz Finance sur Avalanche avait une réponse minimale codée en dur de 0,10 dollar. LUNA s’échangeait à une fraction de centime, mais le flux continuait de renvoyer le plancher : n’importe qui pouvait acheter du LUNA sur le marché et le déposer en garantie à 0,10 dollar le jeton. DefiLlama enregistre une perte de 11,2 millions de dollars pour Venus, étiquetée « stale oracle price » ; REKT parle d’environ 13,5 millions de dollars drainés chez Venus, qui a dit qu’un fonds de réserve servirait à couvrir le manque, et de 8,3 millions chez Blizz, qui n’a pas pu réagir à temps à cause de son timelock, selon REKT. Le flux a fait ce pour quoi il était configuré ; les intégrateurs n’avaient pas vérifié ce qui se passe à ses bords.

Le 10 mars 2026, un plafond a joué à Aave le tour inverse. CAPO, le Correlated Asset Price Oracle, limite la vitesse à laquelle le taux de change d’un jeton à rendement comme le proof of stake coin with a protocol that stakes it for you and issues a transferable token (such as Lido stETH or rETH) representing the deposit plus rewards, which you can use or sell while the coins stay staked.">wstETH peut être rapporté à la hausse, pour qu’un taux manipulé ne gonfle pas les garanties. Selon The Block, qui cite l’analyse de Chaos Labs, gestionnaire de risque d’Aave, une mise à jour du ratio de référence sur les marchés Ethereum Core et Prime d’Aave a heurté la règle selon laquelle le ratio ne peut augmenter que de 3 % tous les 3 jours. Le taux plafonné est ressorti à environ 1,1939 contre environ 1,228 sur le marché, soit une coupe de 2,85 % du taux de change effectif. Environ 10 938 wstETH, autour de 26 millions de dollars, ont été liquidés sur 34 comptes environ ; les liquidateurs tiers ont gagné près de 499 ETH. Aave n’a signalé aucune créance irrécouvrable, et les utilisateurs devaient être remboursés avec 141,5 ETH récupérés plus jusqu’à 345 ETH issus de la trésorerie de la DAO.

L’erreur de Moonwell sur le cbETH en février, au début de cette leçon, appartient à la même famille : une configuration, et non un marché, a fixé le prix. Chez Moonwell, la correction a exigé un nouveau vote et un timelock, si bien que les liquidations ont continué entre-temps, et chez Blizz le timelock a empêché toute réaction rapide. Un mauvais prix est souvent facile à diagnostiquer et lent à corriger.

Manipulation d’oracle : de bZx à Mango Markets et aux cas de 2026

bZx, février 2020 : deux attaques, un seul cas d’oracle

Les attaques contre bZx de février 2020 sont souvent citées ensemble, mais elles différaient. L’analyse de Quantstamp, publiée le 27 février 2020, classait la première comme un problème de glissement de prix sur Uniswap, pas une attaque d’oracle. La seconde en était une : l’attaquant a utilisé un flash loan pour acheter du sUSD sur des marchés étroits jusqu’à ce que son prix y explose, et bZx, qui évaluait ses garanties d’après ces prix, a accepté le sUSD gonflé comme garantie d’un gros prêt. Quantstamp chiffrait la position à découvert à environ 800 000 dollars. La leçon est restée : un prix spot d’une seule pool, lu dans la même transaction, est un nombre qu’un attaquant peut écrire.

Mango Markets, octobre 2022 : un oracle honnête qui lit un marché étroit

Le 11 octobre 2022, Avraham Eisenberg a utilisé deux comptes sur Mango Markets, plateforme de trading sur Solana, pour prendre les deux côtés d’une grosse position sur le contrat perpétuel du MNGO. D’après l’opinion de la cour décrite plus bas, le prix du perpétuel venait d’un oracle qui interrogeait trois places, FTX, AscendEX et Serum, pour établir le cours spot moyen du MNGO. Il a acheté du MNGO sur ces places, le prix a monté, le côté acheteur de sa position affichait un énorme gain latent, et Mango comptait ce gain comme garantie. Il a alors emprunté et retiré plus de 100 millions de dollars de cryptos de la plateforme. Les pièces du dossier situent ses transactions sur le perpétuel vers 18 h 24 et ses retraits entre 18 h 29 et 18 h 57 ce jour-là. DefiLlama chiffre la perte à 115 millions de dollars.

Rien n’était cassé dans l’oracle. Il rapportait des prix réels sur les places qu’il surveillait ; ces places étaient simplement assez étroites pour bouger avec quelques millions de dollars. Le rapport qui compte est le coût de déplacement de l’entrée comparé à ce que le protocole laisse emprunter une fois l’entrée déplacée. Mango a laissé un gain sur le papier, sur son propre jeton illiquide, devenir un pouvoir d’emprunt.

Le dénouement judiciaire : condamnations annulées le 23 mai 2025

Après neuf jours de procès en avril 2024, un jury a déclaré Eisenberg coupable de fraude aux matières premières, de manipulation de marché sur les matières premières et de fraude électronique. Le 23 mai 2025, le juge Arun Subramanian, du district sud de New York, a accueilli sa demande fondée sur la règle 29 de la procédure pénale fédérale dans une Opinion and Order (affaire 23-cr-10). La conclusion se lit ainsi : « Eisenberg’s convictions on counts one and two are vacated. The Court will enter a judgment of acquittal on count three » (les condamnations des chefs un et deux sont annulées ; la cour prononcera l’acquittement sur le chef trois).

Les motifs diffèrent selon les chefs, et les résumés les brouillent souvent. Les chefs un et deux, les infractions liées aux matières premières, ont été annulés pour mauvaise juridiction territoriale (venue) : l’opinion relève qu’Eisenberg n’était jamais à New York dans le cadre du schéma et opérait depuis Porto Rico. Le chef trois, la fraude électronique, s’est terminé par un acquittement parce que le gouvernement n’avait pas démontré de fausse déclaration ; l’opinion souligne que Mango Markets n’avait alors ni conditions générales, ni politiques, ni règles sur la manipulation ou sur l’emprunt. Selon la cour, « On a platform with no rules, instructions, or prohibitions about borrowing, the government needed more to show that Eisenberg made an implicit misrepresentation » (sur une plateforme sans règles, ni instructions, ni interdictions sur l’emprunt, l’accusation devait en montrer davantage pour établir une fausse déclaration implicite).

Ce n’est pas un constat que le mouvement de prix était inoffensif. La décision a jugé que ces chefs n’étaient pas établis devant cette juridiction, et une condamnation annulée pour une question de juridiction n’est pas un verdict sur les faits. Des articles de presse disent que le gouvernement a fait appel ; Coindaro n’a trouvé aucune décision de la cour d’appel du deuxième circuit au 28 octobre 2026. Les actions civiles engagées en janvier 2023 par la CFTC, qui y voyait sa première affaire portant sur un schéma « sometimes called ‘oracle manipulation’ » (parfois appelé manipulation d’oracle), et par la SEC, qui alléguait qu’environ 116 millions de dollars d’actifs crypto avaient été pris, restent des allégations ; Coindaro n’a trouvé de dénouement définitif ni pour l’une ni pour l’autre.

Une silhouette à capuche, un marteau de juge, une courbe qui monte et un panneau d'alerte
Mango Markets : un marché étroit poussé à la hausse, puis deux condamnations annulées et un acquittement en mai 2025.

2026 : marchés étroits, mauvais réglages et mises à jour falsifiées

Les cas de 2026 montrent encore les mêmes trois types de défaillance. En février, YieldBlox, une pool bâtie sur le protocole de prêt Blend, sur Stellar, utilisait l’oracle Reflector, que Halborn décrit comme un oracle de prix moyen pondéré par les volumes. D’après le récit de Halborn, le marché USTRY/USDC n’avait connu aucun échange depuis 15 minutes après le retrait de son unique teneur de marché ; l’attaquant a placé une offre de vente à 501 USDC par USTRY et, depuis un second compte, acheté 0,05 USTRY à environ 106,7 USDC. Halborn affirme que cet unique échange a fixé l’USTRY à environ 106 dollars pour une valeur réelle d’environ 1,05 dollar, puis que l’attaquant a emprunté 61,25 millions de XLM et 1 million d’USDC, soit toutes les réserves de la pool. Halborn chiffre la perte à environ 10,2 millions de dollars, dont 7,2 millions gelés par des validateurs Tier-1 de Stellar ; DefiLlama liste 10,97 millions le 22 février. Halborn écrit que l’oracle « worked as designed » (a fonctionné comme prévu) ; BlockSec parle d’un problème de configuration de l’opérateur de la pool, pas d’une faille des contrats centraux de Blend.

La liste des piratages de DefiLlama, consultée le 28 octobre 2026, étiquette plusieurs autres pertes de prêt de 2026 comme manipulation de prix. Ses étiquettes sont courtes et parfois incohérentes (Bonzo, une mise à jour falsifiée, apparaît en « spot price manipulation »), donc le tableau ci-dessous donne séparément l’étiquette et le mécanisme. Rhea Lend, sur NEAR, listé à 18,4 millions de dollars le 16 avril 2026, est écarté : les analyses publiées divergent sur la défaillance de sa source de prix ou de ses propres contrôles de trading sur marge.

DateProtocole (chaîne)Perte selon DefiLlamaÉtiquette DefiLlamaCe qui a lâché
Févr. 2020bZx (Ethereum)non listéen/aPrix spot du sUSD sur une plateforme, pris comme valeur de garantie
2 avr. 2022Inverse Finance (Ethereum)15,6 millions de dollarsSpot price manipulationPool INV étroite alimentant un TWAP
12 mai 2022Venus Protocol (BNB Chain)11,2 millions de dollarsStale oracle pricePlancher de 0,10 dollar du flux LUNA
11 oct. 2022Mango Markets (Solana)115 millions de dollarsSpot price manipulationMarchés MNGO étroits, gains latents pris pour garantie
15 févr. 2026Moonwell (Base)1,78 million de dollarsOracle misconfigurationPrix du cbETH sans le facteur ETH/USD
22 févr. 2026Pool YieldBlox de Blend (Stellar)10,97 millions de dollarsSpot price manipulationUn échange dans un marché vide a fixé un VWAP
11 juil. 2026Bonzo Lend (Hedera)9,05 millions de dollarsSpot price manipulationLe vérificateur a accepté une signature nulle
27 août 2026Moonwell (Base)8,7 millions de dollarsSpot price manipulationGarantie MAMO peu échangée gonflée ; jetons envoyés directement au marché, au-delà de son plafond d’offre (Unchained)

L’incident CAPO d’Aave du 10 mars 2026 ne figure pas dans la liste, car il a produit des liquidations injustifiées plutôt qu’un vol. Il a pourtant sa place dans tout décompte honnête des défaillances d’oracle.

Se défendre à un coût inférieur à celui de l’attaque

Il n’existe pas de remède unique, mais les analyses post-incident dessinent un petit jeu d’habitudes. La première consiste à comparer ce qu’un attaquant doit dépenser pour déplacer un prix avec ce que le protocole lui laisse emprunter une fois le prix déplacé. Les plafonds d’emprunt et d’offre sur les garanties de longue traîne gardent ce rapport peu attractif : Mango comme YieldBlox ont laissé quelques dollars ou quelques millions d’achats ouvrir toute la pool.

La deuxième est de lire plus d’une source et de les confronter. Un protocole peut comparer un flux avec un TWAP, ou un prix Pyth avec un prix Chainlink, et se mettre en pause quand ils divergent au-delà d’un écart fixé. L’intervalle de confiance de Pyth joue le même rôle à l’intérieur d’un seul flux.

La troisième est de borner ce qui peut changer et la vitesse à laquelle. Les plafonds de type CAPO sur les taux de change et les flux de stablecoins bornés de Chainlink en relèvent, tout comme les coupe-circuits sur prix périmés ou extrêmes. L’incident d’Aave de mars sert d’avertissement : une borne doit être surveillée aussi étroitement que le prix qu’elle protège.

La quatrième touche à la gouvernance. Moonwell et Blizz se sont heurtés au même mur : corriger un mauvais prix exigeait un vote, un timelock, ou les deux. Un rôle de gardien capable de geler vite un marché, avec des limites à ce qu’il peut faire, est un choix de conception avec ses compromis ; un timelock sans voie d’urgence en est un aussi. Et comme un même oracle peut alimenter plusieurs protocoles à la fois, un mauvais prix se propage par les mêmes chemins que les dépôts, le schéma de contagion décrit dans notre leçon sur la composabilité de la DeFi et les « legos monétaires ».

Oracles pour fonds tokenisés et preuve de réserves

Une valeur liquidative publiée une fois par jour ; la chaîne ne ferme jamais

Les fonds monétaires tokenisés et d’autres actifs du monde réel posent une autre question d’oracle. Leur prix n’est pas découvert chaque seconde sur un marché ; c’est une valeur liquidative (VL) calculée par un administrateur de fonds, en général une fois par jour ouvré. Chainlink regroupe les flux qui portent ces nombres sous SmartData : Proof of Reserve, NAVLink pour les valeurs liquidatives et SmartAUM pour les actifs sous gestion.

L’écart entre un nombre quotidien et une chaîne ouverte 24 h sur 24 est là où se loge le risque. Si les actifs d’un fonds perdent de la valeur un vendredi après-midi, la VL on-chain peut ne pas le refléter avant le jour ouvré suivant, alors que des marchés de prêt acceptent le jeton en garantie tout le week-end. Les coffres CDP derrière les stablecoins dépendent de la même façon des prix de leurs garanties, comme l’a montré la leçon sur les stablecoins CDP. Un lecteur doit demander à quelle fréquence un flux de VL se met à jour, qui calcule le nombre, et ce que fait le protocole quand il cesse de bouger.

Preuve de réserves : trois façons de savoir que la couverture existe

Côté preuve de réserves, un flux rapporte la couverture que détient un émetteur, pour qu’un contrat puisse la comparer à l’offre de jetons. La documentation de Chainlink liste trois types d’entrée : des données d’un tiers comme un auditeur, des données d’un conservateur, et des données auto-déclarées par l’émetteur. Pour le troisième, la documentation est franche : « Chainlink Labs is not responsible for the accuracy of self-reported reserves data » (Chainlink Labs n’est pas responsable de l’exactitude des données de réserves auto-déclarées). Pour des réserves réparties sur plusieurs chaînes, l’émetteur fournit souvent la liste des adresses de portefeuilles à compter, ce qui est également auto-déclaré.

Une preuve de réserves n’est donc indépendante que dans la mesure où l’est son entrée. Un flux qui relaie le chiffre de l’émetteur déplace la question de confiance vers l’émetteur et rend le chiffre visible sur la chaîne ; il n’audite rien. Certains émetteurs vont plus loin et branchent le flux sur la création de jetons, pour qu’aucun jeton neuf ne puisse être émis si l’offre dépassait les réserves déclarées, ce qui transforme un tableau de bord en limite ferme.

Le cadre français : AMF, MiCA et fiscalité

Pour un lecteur en France, Mango Markets est un cas américain, mais la question qu’il pose ne l’est pas : qui répond d’une manipulation de prix quand il n’y a pas d’intermédiaire ? Dans son papier de discussion sur la finance décentralisée du 19 juin 2023, l’AMF a rangé la manipulation de prix parmi les risques de la DeFi et défendu le principe « même activité, même risque, même réglementation ».

Le règlement européen MiCA contient un titre VI sur les abus de marché, dont la manipulation de marché, qui s’applique aux crypto-actifs admis à la négociation sur une plateforme exploitée par un prestataire de services sur crypto-actifs (PSCA). Un jeton qui ne s’échange que dans des pools décentralisées, comme le MNGO à l’époque, se situe en dehors de ce périmètre clair, et la mesure dans laquelle une manipulation d’oracle dans un protocole sans exploitant identifiable relève de MiCA reste, à notre connaissance, non tranchée. Coindaro n’a pas trouvé de position de l’AMF ou de l’ACPR propre aux oracles. À titre de comparaison, aux États-Unis, la CFTC a engagé une action civile le 9 janvier 2023, y voyant sa première affaire portant sur ce que l’on appelle parfois la manipulation d’oracle ; la plainte de la SEC, déposée le 20 janvier 2023, alléguait des violations des dispositions de la loi sur les marchés financiers (Securities Exchange Act) contre la fraude et la manipulation ; et le ministère de la Justice a poursuivi les mêmes faits comme fraude aux matières premières, manipulation et fraude électronique. L’opinion du 23 mai 2025 a annulé les deux condamnations liées aux matières premières pour mauvaise juridiction territoriale et prononcé l’acquittement sur la fraude électronique faute de fausse déclaration prouvée, non parce que les opérations auraient été jugées correctes. Aucune décision d’appel n’a été trouvée au 28 octobre 2026.

Un point pratique pour tout lecteur : si une erreur d’oracle liquide votre position, il n’existe en général aucun droit automatique à indemnisation. Les utilisateurs d’Aave se sont vu proposer un remboursement par des fonds récupérés et un vote de trésorerie de la DAO, ce qui relève d’une décision de gouvernance, pas d’une garantie. Côté impôts, les gains sur actifs numériques des particuliers sont soumis en France au prélèvement forfaitaire unique de 31,4 % pour 2026, selon les questions-réponses sur les cryptos d’impots.gouv.fr du 17 juillet 2026 ; la qualification d’une liquidation forcée dans un protocole DeFi, elle, n’est pas fixée, et relève d’un conseiller fiscal. Notre guide sur la fiscalité des cryptos en France rappelle les règles de base.

Comment vérifier l’oracle d’un protocole avant d’y déposer des fonds

Lire un flux ne coûte rien et n’exige aucun portefeuille, car un appel de lecture n’est pas une transaction. Pour voir le flux ETH/USD du tableau ci-dessus :

  1. Ouvrez Etherscan et cherchez l’adresse du proxy ETH/USD indiquée dans le répertoire des flux de Chainlink (sur le réseau principal d’Ethereum : 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419).
  2. Allez dans l’onglet Contract, puis Read as Proxy, et appelez latestRoundData.
  3. Divisez la réponse par 10 puissance 8, les décimales du flux, pour obtenir un prix en dollars.
  4. Convertissez updatedAt du temps Unix en date et comparez-la à l’horloge : elle doit dater de moins d’une heure pour ce flux.
  5. Si vous préférez vous exercer sur un réseau de test, Chainlink liste aussi des flux sur Sepolia, où la même lecture fonctionne sans fonds.

Ensuite, pour le marché que vous envisagez, cherchez cinq réponses dans sa documentation ou son tableau de bord de risque :

  • Quel oracle valorise chaque garantie : un flux, un oracle pull, un TWAP ou une formule ?
  • Quels sont le heartbeat et le seuil de déviation, et le protocole impose-t-il un âge maximal ?
  • Que se passe-t-il aux bords : existe-t-il un plancher, un plafond ou une borne, et que fait le protocole quand elle est atteinte ?
  • Quelle est la profondeur du marché derrière le prix, comparée au plafond d’emprunt de cette garantie ?
  • Qui peut changer l’oracle, à quelle vitesse, et y a-t-il un timelock ou un gardien d’urgence ?

Un marché qui ne sait pas répondre à ces questions vous demande de faire confiance à un nombre que vous ne pouvez pas inspecter. La prochaine leçon du parcours aborde les jetons porteurs d’intérêts, où la question du prix revient sous une autre forme : le taux de change qui dit à un contrat combien vaut un aToken, un cToken ou une part de coffre.

Sources

  1. Documentation Chainlink : Data Feeds, Off-Chain Reporting, choix des flux (consultée le 28 octobre 2026, en anglais) docs.chain.link
  2. Documentation Chainlink : flux de disponibilité des séquenceurs L2 (en anglais) docs.chain.link
  3. Documentation Chainlink : architecture de Data Streams et SmartData, Proof of Reserve, NAVLink (en anglais) docs.chain.link
  4. Documentation Pyth : fonctionnement après la mise à jour Core et bonnes pratiques (en anglais) docs.pyth.network
  5. Documentation Uniswap : oracles v2 et oracles de prix v3 (en anglais) developers.uniswap.org
  6. United States v. Eisenberg, 23-cr-10 (S.D.N.Y.), Opinion and Order du 23 mai 2025 (en anglais) nysd.uscourts.gov
  7. Communiqué 8647-23 de la CFTC : poursuites contre Avraham Eisenberg, 9 janvier 2023 (en anglais) cftc.gov
  8. Base des piratages de DefiLlama (consultée le 28 octobre 2026, en anglais) defillama.com
  9. Halborn : le piratage de YieldBlox expliqué, 26 février 2026 (en anglais) halborn.com
  10. The Block : incident d'oracle wstETH chez Aave, mars 2026 (en anglais) theblock.co
  11. The Block : Moonwell touché par 1,8 million de dollars de créances irrécouvrables après une erreur d'oracle, février 2026 (en anglais) theblock.co
  12. Communiqué contentieux 25623 de la SEC : SEC c. Avraham Eisenberg, janvier 2023 (en anglais) sec.gov
  13. Decrypt : une erreur d'oracle laisse Moonwell avec 1,8 million de dollars de créances irrécouvrables (en anglais) decrypt.co
  14. Unchained : Moonwell perd 8,7 millions de dollars sur Base, un attaquant contourne son plafond d'offre, août 2026 (en anglais) unchainedcrypto.com
  15. Cointelegraph : exploitation d'oracle de 9 millions de dollars chez Bonzo Lend sur Hedera, juillet 2026 (en anglais) cointelegraph.com
  16. BlockSec : incident YieldBlox DAO sur Stellar (en anglais) blocksec.com
  17. RedStone : attaques d'oracle n°1, Inverse Finance (en anglais) redstone.finance
  18. Quantstamp : 10 faits rapides sur les piratages de bZx, 27 février 2020 (en anglais) quantstamp.com
  19. REKT : Venus et Blizz, mai 2022 (en anglais) rekt.news
  20. AMF : papier de discussion sur la finance décentralisée (DeFi), 19 juin 2023 amf-france.org
  21. impots.gouv.fr : comment déclarer les plus ou moins-values sur cessions d'actifs numériques ? impots.gouv.fr
Rédaction de Coindaro

Qui a écrit cet article

Équipe de rédaction

Guides, avis et glossaire vérifiés auprès des sources primaires

  • Formation crypto
  • Avis de plateformes
  • Portefeuilles
  • Glossaire

La rédaction de Coindaro recherche et écrit chaque article, avis et guide publié sur Coindaro. Chaque fait est vérifié auprès de sources primaires (documents officiels, régulateurs, documentation des projets) et chaque page cite ses sources. Nous couvrons les marchés crypto, la technologie et la régulation pour les lecteurs d’Europe et d’Amérique du Nord, en toute indépendance et sans contenu payé.

Continuer à apprendre