Les smart contracts ne peuvent pas accéder par eux-mêmes à des données externes. Ils ne peuvent lire que les données existant sur leur propre blockchain. Il s'agit d'une contrainte de conception fondamentale, et non d'un bug. Si les smart contracts pouvaient interroger des API arbitraires, leur exécution serait non déterministe, puisque différents nœuds pourraient obtenir des réponses différentes, ce qui briserait le consensus.
Les oracles résolvent cela en apportant des données externes on-chain d'une manière sur laquelle le réseau peut s'accorder. En DeFi, les données externes les plus critiques sont les prix des actifs. Lorsqu'un protocole de prêt doit savoir si une position est sous-collatéralisée, il interroge un oracle pour obtenir le prix actuel. Lorsqu'une plateforme de contrats perpétuels calcule les funding rates, elle utilise des prix issus d'oracles. Les oracles sont le socle sur lequel repose l'essentiel de la logique financière DeFi.
Chainlink est le réseau d'oracles dominant, sécurisant des dizaines de milliards de dollars à travers des centaines de protocoles. Son architecture utilise un réseau décentralisé d'opérateurs de nœuds qui récupèrent indépendamment les prix auprès de plusieurs sources de données, puis les agrègent on-chain. L'agrégation utilise habituellement une médiane, résistante à la manipulation d'une source de données unique. Les nœuds sont incités par des paiements en tokens LINK et pénalisés lorsqu'ils fournissent des données inexactes.
Pyth Network adopte une approche différente, particulièrement pour les flux de prix à haute fréquence. Au lieu que des nœuds d'oracles aspirent des API publiques, Pyth reçoit les données de prix directement de sources de première main, telles que des plateformes d'échange, des teneurs de marché et des sociétés de trading. Cela raccourcit la chaîne d'approvisionnement en données et peut offrir des mises à jour plus rapides. Le modèle d'oracle pull de Pyth signifie également que les consommateurs demandent les prix au moment où ils en ont besoin, plutôt que de voir les prix poussés on-chain à des intervalles fixes.
La fréquence de mise à jour des prix des oracles est un paramètre de conception critique. Les flux de prix standard de Chainlink se mettent à jour soit en fonction d'un seuil d'écart (habituellement 0,5 à 1 %), soit à un intervalle de heartbeat (en général 1 heure). Cela signifie que pendant les périodes de mouvements de prix rapides, le prix on-chain peut accuser un retard par rapport au véritable prix de marché. Ce décalage crée des opportunités d'extraction de MEV et peut entraîner l'exécution de liquidations à des prix périmés.
Les attaques de manipulation d'oracles ont causé des centaines de millions de dollars de pertes. Le schéma d'attaque de base consiste à manipuler les sources de prix qu'un oracle consulte, puis à utiliser le prix on-chain manipulé pour extraire de la valeur d'un protocole. Les attaques par flash loan utilisent souvent cette approche : emprunter un montant important, manipuler un marché peu liquide pour faire bouger le prix de l'oracle, exploiter le prix manipulé dans un protocole de prêt, puis rembourser le prêt, le tout en une seule transaction.
Les oracles TWAP (time-weighted average price), comme ceux intégrés à Uniswap V3, offrent une résistance à la manipulation en moyennant les prix dans le temps. Manipuler un TWAP exige de maintenir un prix distordu pendant toute la période de calcul de la moyenne, ce qui coûte cher. Le compromis est que les prix TWAP sont intrinsèquement retardés, ce qui les rend inadaptés aux applications qui ont besoin d'une tarification en temps réel.
Le trilemme des oracles suggère que les conceptions d'oracles doivent arbitrer entre trois propriétés : la fraîcheur (à quel point les données sont à jour), le coût (le prix à payer pour les maintenir) et la sécurité (leur résistance à la manipulation). Les oracles push avec des mises à jour fréquentes sont frais mais coûteux. Les oracles TWAP sont sûrs mais retardés. Les oracles pull peuvent être frais et moins chers, mais ils exigent plus de confiance dans les fournisseurs de données.
Pour les traders et les utilisateurs DeFi, la conception des oracles a des implications pratiques directes. Si vous utilisez un protocole de prêt, comprendre son mécanisme de mise à jour d'oracle vous renseigne sur le risque de liquidation durant les périodes volatiles. Si vous tradez des contrats perpétuels, la fraîcheur de l'oracle influe sur la façon dont le prix du contrat suit le spot. Vérifier quel oracle un protocole utilise, et comment il est configuré, est une étape de due diligence basique que la plupart des utilisateurs sautent.