Pont entre le monde On-Chain Off-Chain
Oracles : Combler le fossé entre les mondes on-chain et off-chain
1. Introduction
Les oracles sont essentiels dans l’écosystème de la blockchain, car ils servent de pont entre les mondes on-chain et off-chain. Sans oracles, les applications blockchain seraient isolées, incapables d’interagir avec les données du monde réel. Leur importance continue de croître avec l’essor de la finance décentralisée (DeFi), des NFT, de l’assurance et au-delà, permettant aux contrats intelligents de devenir réellement fonctionnels et adaptables aux situations du monde réel.
2. Que sont les oracles ?
Un oracle est un service qui fournit des données externes à une blockchain. Les réseaux de chaînes de blocs sont déterministes, ce qui signifie qu’à partir d’une même entrée, ils produisent toujours la même sortie. Cette prévisibilité garantit un consensus entre tous les nœuds du réseau, mais elle signifie également que les blockchains ne peuvent pas accéder de manière autonome à des données externes ou les valider, et que les oracles agissent comme des intermédiaires de confiance. Ils permettent aux smart contract de consommer des informations telles que des données financières, des conditions météorologiques ou autres.
3. Types d’oracles
Il existe trois dimensions :
- centralisé ou décentralisé
- Inbound ou outbound
- Spécifique ou universel
Oracles centralisés ou décentralisés
Oracles centralisés
Ces oracles s’appuient sur une source ou un fournisseur de données unique, ce qui peut entraîner des vulnérabilités telles qu’un point de défaillance unique. Les oracles centralisés s’appuient souvent sur des serveurs off chaîne qui ne peuvent pas communiquer directement avec la blockchain. Par exemple, un smart contract Solidity ne peut pas appeler directement une API en raison de la nature déterministe de la machine virtuelle Ethereum (EVM). Au lieu de cela, des services d’oracle centralisés tels que Provable sont utilisés. Provable est un service d’oracle blockchain qui permet aux smart contract d’extraire des données d’API externes de manière sécurisée. Il sert de pont entre les blockchains et le monde off chaîn, permettant aux csmart contract d’interagir avec des sources d’information externes. Voici un exemple de la manière dont un oracle centralisé peut être utilisé dans Solidity pour appeler une API :
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "provableAPI.sol";
contract ExampleOracle is usingProvable {
string public data;
event LogNewProvableQuery(string description);
event LogNewData(string data);
function updateData() public payable {
require(msg.value >= provable_getPrice("URL"), "Not enough ETH for query");
emit LogNewProvableQuery("Provable query was sent, waiting for the answer...");
provable_query("URL", "json(https://api.example.com/data).result");
}
function __callback(bytes32 _myid, string memory _result) public override {
require(msg.sender == provable_cbAddress());
data = _result;
emit LogNewData(data);
}
}
Dans cet exemple, la fonction provable_query est utilisée pour appeler une API externe, et le résultat est traité dans la fonction __callback. Cependant, cela introduit une dépendance centralisée sur le service Provable, ce qui le rend moins sûr que les alternatives décentralisées. Bien que plus simples, elles sont moins sûres que leurs équivalents décentralisés.
Oracles décentralisés
Chainlink, un oracle décentralisé populaire, fonctionne en utilisant un réseau décentralisé de nœuds pour fournir des données aux contrats intelligents. Lorsqu’un contrat intelligent a besoin de données off chaîn, il crée une requête que les nœuds Chainlink se disputent. Ces nœuds récupèrent les données auprès de sources multiples, agrègent les réponses et renvoient le résultat au contrat intelligent. Chainlink utilise également des mécanismes de popularité pour encourager les comportements honnêtes et pénaliser les acteurs malveillants, garantissant ainsi des flux de données de haute qualité. Les oracles décentralisés comme Chainlink agrègent des données provenant de sources multiples, ce qui garantit la redondance et réduit les risques associés à la dépendance à l’égard d’une seule source. Par exemple, Chainlink agrège des données provenant de plusieurs flux de prix afin de garantir l’exactitude et la sécurité des applications DeFi, minimisant ainsi le risque d’un seul point de défaillance. Les oracles décentralisés les plus populaires sont Chainlink et Band Protocol.
Inbound ou outbound
Inbound
Ils fournissent des données off chaîn à une blockchain. Les oracles entrants jouent un rôle crucial dans l’amélioration de l’utilité des smart contract en fournissant des données du monde réel dont les applications blockchain ont besoin pour fonctionner efficacement. Par exemple, un oracle entrant peut fournir des prix actualisés sur les marchés financiers à une application DeFi ou fournir des données météorologiques à un contrat d’assurance paramétrique. En agissant comme un pont pour apporter des informations externes à la blockchain, les oracles inbound garantissent que les contrats intelligents peuvent s’exécuter sur la base des conditions du monde physique, ce qui les rend beaucoup plus dynamiques et pertinents pour les applications du monde réel.
Outbound
Ils fournissent des données blockchain à des systèmes externes, déclenchant des événements du monde réel basés sur les activités de la chaîne. Il ne faut pas le confondre avec un nœud RPC (Remote Procedure Call). Au contraire, un nœud RPC est un composant fondamental d’un réseau blockchain qui fournit une interface pour les applications afin d’interagir avec la blockchain. Il permet de lire et d’écrire des données dans la blockchain, par exemple en interrogeant les informations sur les transactions ou en soumettant de nouvelles transactions. En revanche, un oracle sortant est un artefact qui envoie des informations de la blockchain à des systèmes externes, déclenchant des actions en dehors de la blockchain sur la base d’événements sur la chaîne. Par exemple, un oracle outbound peut notifier à un système IoT externe d’éteindre un appareil si une certaine condition sur la blockchain est remplie. Les nœuds RPC, cependant, ne gèrent pas cette capacité d’action hors chaîne - ils servent principalement à accéder aux données de la blockchain et à soumettre des transactions.
Spécifique ou universel
Spécifique
Les oracles spécifiques servent des smart contract spécifiques et ont des exigences particulières en matière de données. Ces oracles sont conçus pour répondre aux besoins uniques en matière de données d’un smart contract particulier. Par exemple, un oracle sur mesure peut être créé spécifiquement pour fournir des informations sur la chaîne d’approvisionnement pour une dApp particulière. Les données utilisées sont souvent très spécifiques et ne s’appliquent pas au-delà du cas d’utilisation particulier pour lequel elles ont été conçues. Ce type d’oracle est généralement étroitement intégré à la logique du contrat, ce qui garantit que les données exactes requises sont fournies.
Universel
Les oracles universels comme Chainlink servent une variété d’applications à travers différents écosystèmes de blockchain. Les oracles universels sont conçus pour être polyvalents et fournir un large éventail de flux de données qui peuvent être utilisés par de multiples smart contracts sur différentes blockchains. Par exemple, Chainlink peut fournir des flux de prix pour les applications DeFi, des données météorologiques pour les contrats d’assurance, ou toute autre information hors chaîne dont de nombreux contrats pourraient avoir besoin. Ces oracles sont évolutifs, ce qui permet aux développeurs d’utiliser des flux de données préexistants et bien audités au lieu de construire des solutions d’oracle sur mesure à partir de zéro.
4. Comment fonctionne un oracle ?
Les quatre étapes principales sont les suivantes :
- Demande de données : Un smart contract initie une demande de données hors chaîne.
- Sélection de l’Oracle et récupération des données : Un oracle, centralisé ou décentralisé, récupère les données à partir d’une source hors chaîne pertinente.
- Vérification des données : Dans les systèmes décentralisés, plusieurs fournisseurs de données garantissent l’exactitude des données par le biais de mécanismes de consensus.
- Livraison des données : Les données vérifiées sont réinjectées dans le contrat intelligent, qui s’exécute alors sur la base des données reçues. Exemple de cas d’utilisation : dans un protocole de prêt DeFi, un oracle fournit des flux de prix actualisés pour les actifs collatéraux, garantissant que les prêts restent correctement garantis et que les événements de liquidation sont déclenchés avec précision lorsque les seuils sont dépassés.
Oracle centralisé
Oracle décentralisé
5. Acteurs clés des oracles
Réseau Oracle | Description | Caractéristiques clés | Limitations |
---|---|---|---|
Chainlink](https://chain.link/) | Le réseau oracle décentralisé le plus connu, largement utilisé dans différents écosystèmes blockchain. | Décentralisé, concurrence entre les nœuds, mécanismes de jalonnement pour la fiabilité des données. | Chainlink dépend de ses opérateurs de nœuds ; si les nœuds sont de connivence ou fournissent des données incorrectes, cela peut nuire à la fiabilité. La chaîne dépend de ses opérateurs de nœuds ; si les nœuds s’entendent ou fournissent des données incorrectes, cela peut affecter la fiabilité. |
Band Protocol](https://www.bandprotocol.com/) | Plateforme d’oracle décentralisée axée sur la compatibilité entre chaînes et fournissant des flux de données sur plusieurs réseaux. | Compatibilité entre chaînes, consensus dPoS, disponibilité rapide des données. | Réseau relativement plus petit que Chainlink, ce qui peut entraîner une sécurité moindre en raison de la diversité limitée des nœuds. |
Pyth Network](https://www.pyth.network/) | Spécialisé dans la fourniture de données à faible latence, en particulier pour le commerce et la finance sur Solana. | Agrégation de données à faible latence, intégration spécifique à Solana. | Limité principalement à l’écosystème Solana, ce qui limite son utilisation pour les applications multi-chaînes. |
Autres acteurs : Tellor, API3 et Switchboard sont d’autres solutions Oracle offrant diverses formes d’intégrité et de disponibilité des données.
6. Défis et risques
Intégrité des données et fiabilité
L’intégrité des données fournies par les oracles est cruciale. Par exemple, si un oracle météorologique centralisé est compromis, un smart contract d’assurance s’appuyant sur lui pourrait émettre des paiements incorrects. Pour garantir la fiabilité, il faut vérifier les sources de données et utiliser plusieurs nœuds pour agréger les résultats.
Risques liés à la centralisation
Les oracles à source unique peuvent compromettre la décentralisation des applications blockchain en introduisant un point de défaillance unique. Par exemple, un oracle centralisé de flux de prix pourrait être ciblé par des attaquants pour manipuler les prix des actifs sur les plateformes DeFi, ce qui entraînerait des pertes financières importantes. Les oracles centralisés sont particulièrement vulnérables aux pannes ou aux attaques car toutes les données proviennent d’un seul fournisseur. Cette centralisation pose le risque qu’une application entière puisse tomber en panne ou être manipulée si la source de données devient indisponible ou compromise.
Vulnérabilités de sécurité
Les oracles peuvent être la cible d’attaques telles que la manipulation de données, comme le montrent les attaques par manipulation d’oracle, où les attaquants ciblent les vulnérabilités pour en tirer un profit déloyal. Par exemple, en 2020, le protocole bZx DeFi a été victime d’une attaque par manipulation d’oracle qui a conduit à la liquidation injustifiée de prêts. Ces attaques consistent à fournir des données inexactes pour manipuler les résultats des smart contract, comme dans les protocoles de prêt et d’emprunt de DeFi. Un flux de prix manipulé pourrait entraîner un événement de liquidation injustifié, causant des pertes importantes.
Fiabilité des données
La fiabilité d’un oracle dépend de la source de données qu’il utilise. Par exemple, lors de la volatilité du marché des crypto-monnaies en 2021, certains oracles d’alimentation en prix ont fourni des données obsolètes, ce qui a entraîné des divergences dans les contrats DeFi. Si un oracle fournit des données incorrectes ou obsolètes, le smart contract associé peut échouer ou avoir des conséquences inattendues. Dans les systèmes décentralisés, l’utilisation de plusieurs sources de données peut atténuer ce risque, mais elle ajoute également de la complexité et des coûts. Garantir des données de haute qualité grâce à des mécanismes d’agrégation robustes est essentiel pour des services d’oracle fiables. Pour se protéger contre les données périmées, uniswap introduit le protocole TWAP
Coûts économiques
L’utilisation d’un service d’oracle décentralisé peut être coûteuse en raison des frais de réseau et de la nécessité d’une vérification des données multi-sources. Par exemple, l’utilisation de Chainlink sur Ethereum peut impliquer des frais de gaz élevés, ce qui rend les opérations coûteuses pour les petits projets DeFi. La complexité de l’agrégation de données provenant de plusieurs fournisseurs, de leur validation et de leur transmission à la blockchain implique des ressources informatiques et financières. Des frais de gaz élevés, en particulier sur des réseaux comme Ethereum, peuvent considérablement augmenter les coûts opérationnels, ce qui rend les solutions d’oracle décentralisées plus coûteuses que les solutions centralisées.
7. L’économie d’Oracle
Comme nous pouvons le voir, les oracles jouent un rôle crucial en garantissant que les applications blockchain sont fonctionnelles et fiables, mais qu’est-ce qui incite les participants à rejoindre le réseau d’oracles et à fournir des données précises ? Explorons le modèle économique qui motive les opérateurs d’oracles.
Incitations pour les nœuds Oracle :
- Les nœuds Oracle, comme ceux du réseau Chainlink, sont rémunérés pour les données qu’ils fournissent. Les smart contracts qui demandent des données doivent payer les nœuds, généralement sous la forme de la crypto-monnaie native. Pour Chainlink, les nœuds sont payés en jetons LINK. Cela crée une incitation économique directe pour les nœuds à participer activement et à fournir des données fiables.
- Récompenses pour le staking : Les oracles décentralisés exigent souvent des nœuds qu’ils mettent en jeu une certaine quantité de jetons (par exemple, LINK dans Chainlink) en guise de garantie. Cette mise sert de mécanisme d’assurance : si le nœud fournit des données erronées ou incorrectes, il peut perdre une partie de sa mise. Inversement, un comportement honnête peut donner lieu à des récompenses, ce qui incite les nœuds à rester dignes de confiance.
- Systèmes de réputation : Dans de nombreux réseaux d’oracles décentralisés, les nœuds acquièrent une réputation au fil du temps. Les nœuds ayant une meilleure réputation ont plus de chances d’être sélectionnés pour de futures demandes de données et donc de gagner plus d’argent. La combinaison du staking et de la réputation signifie que la fourniture de données précises et opportunes a un impact direct sur la rentabilité d’un nœud.
Comment les données provenant d’une blockchain externe comme eth ou polygon link sont-elles transférées ?
Si vous utilisez Link, vous devez utiliser une blockchain qui a une version *RC20 du link token (binance, eth, polygon….), votre smartcontract doit avoir un link à l’intérieur et vous transférez ce link sur la chaîne que vous êtes.
Pourquoi les participants jouent le jeu
- Gain économique : La principale motivation pour participer à des réseaux d’oracles est économique. Par exemple, les nœuds Chainlink sont rémunérés par les frais collectés auprès des smart contacts qui ont besoin de données, et ces frais peuvent être substantiels, en particulier dans les environnements à forte demande comme DeFi. Plus un nœud est précis et fiable, plus il recevra de demandes, ce qui se traduira par des revenus plus élevés.
- Croissance du réseau et appréciation des jetons : Les participants sont également incités à accepter le jeu parce qu’ils croient en l’avenir de l’écosystème. En étant des adopteurs précoces ou des participants réguliers, ils gagnent non seulement des récompenses, mais détiennent également des jetons qui pourraient prendre de la valeur au fur et à mesure que le réseau d’oracles se développe. Par exemple, une augmentation de l’utilisation des services Chainlink peut conduire à une appréciation de la valeur des jetons LINK, ce qui profitera directement aux nœuds détenant ces jetons.
8. Ecosystème sur la blockchain principale d’oracle
Voici l’écosystème en novembre 2024
Chainlink
pyth
Band
9. Conclusion
Les oracles sont une pièce maîtresse du puzzle pour l’intégration de la technologie blockchain dans les applications du monde réel. En fournissant des données fiables et vérifiables, les oracles rendent les smart contracts capables d’interagir avec l’environnement hors chaîne, étendant ainsi l’utilité des réseaux de blockchain bien au-delà des écosystèmes isolés. Le paysage actuel des oracles présente à la fois des modèles centralisés et décentralisés, chacun avec ses propres forces et défis. Les oracles décentralisés, comme Chainlink et Band Protocol, offrent un niveau élevé de sécurité et de confiance en s’appuyant sur de multiples nœuds et sources de données. Ils garantissent l’intégrité des données grâce à des mécanismes concurrentiels et sans confiance. D’un autre côté, les oracles centralisés comme Provable offrent une simplicité et une intégration plus rapide, mais s’accompagnent d’une vulnérabilité accrue en raison de leur dépendance à l’égard d’un fournisseur unique. Par essence, les oracles ne sont pas seulement des fournisseurs de données ; ils sont les connecteurs vitaux qui permettent aux contrats intelligents d’avoir un impact et d’interagir avec le monde réel, transformant la promesse de la technologie blockchain en cas d’utilisation pratique et quotidienne. L’innovation continue dans la technologie des oracles est fondamentale pour la mise à l’échelle et la réalisation du plein potentiel des économies décentralisées, ouvrant finalement la voie à un avenir plus interconnecté et transparent.
Archives