Chargement des prix…

Défaillances des oracles RWA : quand les prix hors chaîne mentent

Les effondrements d'actifs tokenisés partent rarement de l'actif lui-même. Ils commencent quand un oracle publie une NAV obsolète ou qu'un flux de prix cesse de se mettre à jour, et que la DeFi continue de prêter sur la base d'un chiffre d'hier.

Défaillances des oracles RWA : quand les prix hors chaîne mentent

Ce que fait réellement un oracle RWA, et pourquoi il est le point de défaillance unique

Tokeniser un actif réel signifie construire une représentation on-chain de quelque chose qui, à proprement parler, ne vit pas on-chain : un panier de prêts de crédit privé, un panier de bons du Trésor américain à court terme, une part dans des parts tokenisées d'un fonds monétaire, ou une note adossée à l'immobilier. Le smart contract a besoin d'un chiffre pour faire respecter les règles de garantie, marquer au marché les positions et déclencher les liquidations. Ce chiffre provient d'un oracle.

Pour les actifs natifs crypto, les oracles sont en grande partie un problème d'ingénierie résolu. Chainlink récupère les prix au comptant sur des dizaines de plateformes d'échange, les agrège via une médiane pondérée par les volumes, et pousse les mises à jour toutes les quelques minutes ou dès que les prix franchissent un seuil. Pyth fait quelque chose de similaire, mais avec une conception en pull, où le prix est signé hors chaîne par des market makers et poussé on-chain uniquement lorsqu'un protocole DeFi le demande. Les deux architectures supposent des marchés continus et liquides, avec des milliers de preneurs de prix indépendants.

Les actifs réels brisent ces hypothèses. La NAV d'un pool de crédit privé est calculée chaque semaine par un administrateur de fonds à partir de données au niveau des prêts qui arrivent lentement. La NAV d'un produit tokenisé adossé à des bons du Trésor évolue avec des prix obligataires qui se traitent sur rendez-vous, pas à la seconde. L'oracle ne rapporte plus un prix de marché ; il rapporte un calcul, souvent issu d'une source unique de vérité, selon une cadence différée.

C'est là que les oracles de NAV et les oracles de prix commencent à diverger d'une manière qui compte pour le risque. Un oracle de prix rapporte ce que le marché paiera à l'instant. Un oracle de NAV rapporte ce que l'administrateur du fonds estime que les actifs valent, souvent avec du lissage, des accumulations et un décalage de reporting. Lorsqu'un événement de crédit frappe un pool de crédit privé, l'oracle de prix (si tant est qu'il en existe un) peut s'effondrer immédiatement, tandis que l'oracle de NAV continue de rapporter le dernier bon chiffre pendant des jours parce que l'administrateur n'a pas encore déprécié la position.

Comment les oracles de NAV et les oracles de prix divergent lors d'un événement de crédit

Sur un marché sain, la différence est invisible. Les deux flux disent à peu près la même chose, et un smart contract qui utilise l'un ou l'autre prend des décisions sensées. La divergence s'ouvre dès qu'un emprunteur d'un pool de crédit privé manque un paiement, est dégradé, ou, dans le pire des cas, fait défaut.

Considérez ce qui arrive à un pool senior de type Goldfinch lorsqu'un de ses prêts sous-jacents tourne mal. Le token de pool on-chain revendique toujours une NAV basée sur la mise à jour la plus récente de l'administrateur, qui supposait que le prêt serait remboursé intégralement. La valeur marchande hors chaîne des créances sur ce pool, le prix qu'un acheteur secondaire accepterait réellement de payer, chute immédiatement dès que la nouvelle du défaut atteint les desks de crédit. Pendant des heures ou des jours, l'oracle on-chain et l'oracle dans la tête des traders peuvent diverger de plusieurs dizaines de points de pourcentage.

Cet écart constitue toute la surface d'attaque. Un emprunteur qui remarque la divergence peut déposer le token de pool en garantie ailleurs on-chain, emprunter des stablecoins contre la NAV artificiellement élevée, et s'en aller avant que l'oracle de NAV ne rattrape la réalité. Au moment où l'administrateur publie une nouvelle NAV qui reflète le défaut, la position a déjà servi à retirer des fonds. Ce n'est pas hypothétique. C'est la forme structurelle de chaque exploit RWA de crédit privé au cours des deux dernières années.

Les oracles de prix se comportent différemment. Un oracle de prix piloté par le marché, du type de ceux que Pyth ou Chainlink agrégeant à partir de marchés actifs, reflétera l'événement de crédit en quelques minutes parce que les traders reprisent le token de pool immédiatement. Le risque est alors l'inverse : l'oracle peut devenir manipulable précisément parce que le marché secondaire est peu liquide, et quelques grosses transactions peuvent déplacer le prix rapporté suffisamment pour déclencher des liquidations abusives.

Exploits de prix obsolètes : le mode de défaillance le plus courant dans le crédit tokenisé

Un exploit de prix obsolète n'est pas un piratage au sens traditionnel. Rien n'est forcé, aucune clé privée n'est volée, aucun vote de gouvernance n'est détourné. L'oracle continue de fonctionner comme prévu. Il arrête simplement de se mettre à jour, ou continue de signaler le dernier prix connu bien après que ce prix a cessé d'être vrai.

Cela arrive régulièrement sur les marchés RWA pour des raisons opérationnelles banales. L'administrateur du fonds ferme pour le week-end. Le flux de données qui fournit les flux de trésorerie au niveau des prêts tombe en panne. Le cabinet comptable qui signe le rapport de VAN manque son délai. Aucun de ces événements n'empêche les prêts sous-jacents de tourner mal. Ils empêchent simplement le chiffre on-chain de le refléter.

Les marchés de prêt DeFi construits par-dessus ces tokens, et il y a maintenant plusieurs centaines de millions de dollars dans cette catégorie, traitent l'oracle comme une vérité absolue. Si l'oracle a signalé pour la dernière fois une VAN de 1,02 $ il y a deux jours et qu'un emprunteur a déposé 150 % de garantie, le protocole de prêt considère que la position est sûre. Si la valeur récupérable réelle est tombée à 0,80 $, le protocole ne le sait pas. Il laissera l'emprunteur retirer davantage, car le ratio de garantie semble toujours correct.

Les événements de crédit de Maple Finance en 2023 l'illustrent clairement. Lorsque plusieurs positions d'emprunteurs importants dans les pools de trésorerie de Maple se sont détériorées, les tokens de pool se sont négociés avec des décotes significatives sur les marchés secondaires presque immédiatement. La VAN on-chain, mise à jour via l'infrastructure d'oracle de Maple avec les données de l'administrateur, n'a pas rattrapé son retard pendant plusieurs jours. Pendant cette fenêtre, des positions qui étaient déjà profondément sous l'eau hors chaîne apparaissaient toujours comme correctement garanties on-chain, et plusieurs intégrations DeFi ont dû se mettre en pause ou marquer manuellement les positions à la baisse.

Le cas Goldfinch a suivi un scénario similaire. Les VAN du senior pool ont accusé un retard de plusieurs jours ou semaines par rapport aux événements de crédit signalés, et tout protocole qui a intégré le token du senior pool comme garantie sans propre vérification de prix sur le marché secondaire s'est retrouvé à faire confiance à un chiffre qu'aucun participant hors chaîne n'aurait accepté.

Architectures Chainlink et Pyth, et le mode de défaillance que chacune dissimule

L'architecture de Chainlink repose sur l'agrégation et la redondance. Les données proviennent de nombreux opérateurs de nœuds indépendants, chacun s'appuyant sur plusieurs échanges ou fournisseurs de données, puis agrégées on-chain. L'avantage est la résistance à toute source unique erronée ou malveillante. L'inconvénient est que l'agrégation ne fonctionne que lorsqu'il existe un marché réel et liquide à agréger. Lorsque le marché sous-jacent est peu liquide, un flux Chainlink peut devenir un consensus d'un petit nombre de sources à évolution lente, ce qui n'est pas la même chose qu'un véritable prix de marché.

Pour les paires crypto à fort volume, cela fonctionne. Pour le crédit tokenisé, l'immobilier ou les fonds privés, les flux Chainlink sont souvent configurés pour se mettre à jour selon un calendrier de pulsation (toutes les quelques heures, par exemple) ou lorsqu'un seuil d'écart est franchi. Si aucune de ces conditions ne se déclenche, le prix ne se met tout simplement pas à jour. Il n'existe aucune vérification de fraîcheur intégrée qui dise « ce prix a trois jours, quelque chose va probablement mal ». Cette responsabilité incombe au protocole consommateur, et de nombreuses intégrations RWA ne l'implémentent tout simplement pas.

Pyth adopte une approche différente. Les prix sont signés par un panel de market makers et d'éditeurs, puis rendus disponibles on-chain via un modèle pull. Le consommateur paie pour un prix frais à chaque fois qu'il en a besoin, ce qui signifie qu'il n'existe pas, au sens technique, de prix Pyth obsolète : chaque lecture est fraîche par définition. Le risque se déplace vers les intervalles de confiance. Pyth publie une valeur de confiance alongside chaque prix, et un marché peu liquide produira une large bande de confiance. Si le protocole consommateur ignore la valeur de confiance et traite le prix médian comme une vérité, il peut être tout aussi exploitable qu'un flux Chainlink obsolète.

Le leçon pratique pour quiconque évalue une intégration RWA : un flux Chainlink sans vérification de fraîcheur est un candidat aux exploits de prix obsolète ; un flux Pyth sans vérification de confiance est un candidat aux exploits de marché peu liquide. Les deux sont courants.

Pourquoi la logique de liquidation on-chain se fie aux données d'hier

Les moteurs de liquidation en DeFi sont conçus pour être antagonistes. Ils partent du principe que toute position peut devenir risquée à tout moment et qu'un liquidateur externe la clôturera pour en tirer un profit si cela se produit. Cela fonctionne à merveille pour les garanties purement crypto, car l'oracle de prix se met à jour en quasi-temps réel et le liquidateur voit le même chiffre que le protocole.

Pour les garanties RWA, la même logique de liquidation s'exécute sur un chiffre qui peut avoir plusieurs heures ou jours de retard. Le protocole ne peut pas faire la différence entre « le prix n'a pas bougé » et « le flux de prix a cessé de se mettre à jour ». Les deux semblent identiques on-chain. Du point de vue du protocole, un emprunteur qui a déposé un token de crédit privé avec 150 % de garantie il y a deux jours est toujours à 150 % aujourd'hui, et la position est sûre.

C'est pourquoi le risque d'oracle en RWA est si différent du risque d'oracle en DeFi pur. Un flux de prix ETH obsolète est arbitré en quelques secondes par des chercheurs professionnels exécutant des bots keepers. Un flux de VAN obsolète pour un pool de crédit privé tokenisé n'est pas arbitré de la même manière. La position est illiquide, la VAN provient d'un processus humain, et il n'existe aucun mécanisme on-chain pour forcer une mise à jour. Le moteur de liquidation ne tombe pas en panne ; il applique fidèlement des règles écrites pour un type d'actif différent.

Le résultat est une forme silencieuse d'insolvabilité. Les comptes du protocole sont toujours équilibrés. Le ratio de garantie est toujours correct. L'emprunteur peut toujours retirer. Et pendant ce temps, la valeur récupérable réelle des prêts sous-jacents a chuté de moitié.

Implications pratiques pour toute personne exposée au crédit tokenisé

Si vous détenez directement un token RWA, la question est de savoir si l'oracle de VAN de l'émetteur peut accuser du retard sur la réalité en période de stress. La réponse honnête est oui, par conception. Les VAN de crédit privé et d'immobilier sont signalées avec des délais parce que les actifs sous-jacents ne se négocient pas en continu. Détenir le token signifie accepter que votre valeur signalée et votre valeur de liquidation puissent diverger fortement lors d'un événement de crédit.

Si vous fournissez de la liquidité à un protocole DeFi qui accepte des tokens RWA comme garantie, la question est plus difficile. Vous êtes désormais exposé à la fois à l'oracle de VAN de l'émetteur et à la propre logique de vérification des prix du protocole. De nombreux protocoles implémentent une vérification de prix sur le marché secondaire, un pool de type Uniswap, un agrégat Pyth, une référence Chainlink, pour détecter la divergence entre la VAN de l'émetteur et le marché en temps réel. Certains ne le font pas. La différence n'est souvent pas visible dans la documentation du protocole.

Quelques éléments concrets à rechercher : une vérification de fraîcheur sur chaque lecture d'oracle, idéalement avec un seuil dur au-delà duquel la position est mise en pause ; une comparaison explicite entre la VAN de l'émetteur et au moins une source de prix indépendante ; et une politique documentée pour ce qui se passe lorsque les deux divergent. Si ces réponses ne sont pas publiques, le protocole parie implicitement sur le fait qu'elles ne seront jamais nécessaires.

Comment suivre le risque des oracles RWA de manière intelligente

Le risque des oracles RWA évolue en silence, souvent avant qu'une dépêche ne paraisse. Un événement de crédit dans un fonds de crédit privé peut mettre plusieurs jours à apparaître dans la valeur liquidative officielle de l'émetteur, et les signaux du marché secondaire passent facilement inaperçus si vous ne savez pas quelles plateformes échangent réellement le token. Le suivre à la main est une bataille perdue d'avance. Zippfeed rassemble les titres liés aux RWA, les mises à jour de protocoles liées aux oracles et les discussions de gouvernance on-chain des principaux émetteurs, notées selon leur sentiment (haussier, neutre ou baissier) et étiquetées avec un indice d'importance. Vous pouvez ainsi repérer l'écart entre la NAV déclarée par un émetteur et l'évaluation réelle du marché sur le crédit sous-jacent, avant que cet écart ne se transforme en perte réalisée.

Questions fréquemment posées

Est-il sûr d'utiliser des tokens RWA comme garantie dans la DeFi ?
Cela peut l'être, mais la sécurité dépend presque entièrement de la configuration de l'oracle. Si le protocole de prêt ne se fie qu'au flux de NAV de l'émetteur et ne le recroise pas avec un prix réel du marché secondaire, vous êtes exposé à un risque de prix obsolète lors d'un événement de crédit. Recherchez des protocoles qui appliquent des contrôles de fraîcheur, des références au marché secondaire et des politiques explicites de divergence avant de déposer vos fonds.
Comment fonctionne concrètement une exploitation par oracle à prix obsolète ?
L'attaquant ne casse pas l'oracle. L'oracle continue de signaler le dernier prix connu, car rien n'a déclenché de mise à jour. L'attaquant constate que la position de crédit réelle vaut bien moins que ce que la NAV on-chain suggère, emprunte contre la garantie gonflée, puis se retire avant que la NAV ne se mette à jour. Au moment où l'administrateur publie une nouvelle NAV, les fonds ont déjà disparu.
Devrais-je détenir du crédit privé tokenisé plutôt que des stablecoins ?
Le crédit privé tokenisé offre un rendement supérieur à celui des stablecoins, mais ce rendement provient d'un véritable risque de crédit et d'un véritable risque opérationnel, y compris le décalage de l'oracle en période de stress. Le détenir directement convient si vous acceptez que la valeur affichée et la valeur de sortie puissent diverger fortement lors d'un événement de crédit. Pour la plupart des utilisateurs, une allocation modeste, assortie d'une compréhension claire du processus de NAV de l'émetteur, est plus raisonnable qu'une allocation importante.
Quelle est la différence entre un oracle de NAV et un oracle de prix pour les RWA ?
Un oracle de NAV publie une valeur liquidative calculée, généralement fournie par un administrateur de fonds, selon un calendrier décalé. Un oracle de prix indique ce que le marché secondaire est réellement prêt à payer à l'instant présent. Lors d'un événement de crédit, les deux peuvent diverger fortement pendant plusieurs jours, et le choix de l'oracle détermine si une intégration DeFi constate la perte immédiatement ou seulement une fois la poussière retombée.
Tokens associés
$LINK $PYTH $CC $MNT $ONDO