Crypto Prices

Série d’Oracles Chainlink (Partie 1)

il y a 2 weeks
2 mins read
7 vues

Introduction aux Oracles dans la Blockchain

Dans le domaine de la blockchain, un oracle est un système capable de fournir des informations externes aux contrats intelligents sur la chaîne. En tant que middleware reliant les contrats intelligents au monde extérieur, l’oracle joue un rôle d’infrastructure critique. Sa fonction principale est de fournir des données aux contrats intelligents sur la blockchain.

Par exemple, lorsque nous créons un contrat intelligent sur le réseau Ethereum qui a besoin d’accéder aux données du volume commercial du pétrole brut à une certaine date, le contrat intelligent lui-même ne peut pas récupérer ce type de données du monde réel hors chaîne. Il doit donc faire appel à un oracle pour cela.

Oracle Chainlink

En ce qui concerne la blockchain, l’oracle Chainlink détient la plus grande part de marché. Chainlink est un projet d’oracle décentralisé qui fournit des données du monde réel à la blockchain de manière sécurisée. Chainlink a établi un écosystème vertueux autour du token LINK grâce à des incitations économiques basées sur la mise en œuvre de son principe fondamental.

L’oracle Chainlink doit être activé par le transfert de tokens LINK, qui est un contrat ERC-677 sur le réseau Ethereum. La fonction oracle basée sur le token LINK ERC-677 opère selon un modèle de demande/réponse.

La méthode transferAndCall dans les tokens ERC-677 est essentielle pour la fourniture de services par l’oracle.

Lorsque Chainlink a conçu le cadre des oracles, la première question à laquelle il s’est frotté était celle de la manière dont les utilisateurs d’oracles pouvaient payer pour leurs services.

Classification de la crédibilité des oracles

Lorsque l’on demande un oracle sur chaîne, examinons comment la méthode onTokenTransfer du contrat oracle est implémentée :

Lorsqu’un consommateur d’oracle utilise la méthode transferAndCall pour régler les frais et demander le service d’oracle, l’adresse de destination correspond à l’oracle sollicité. La méthode onTokenTransfer dans l’oracle vérifie d’abord si le transfert concerne le token LINK (uniquement LINK).

Une fois toutes ces vérifications de sécurité validées, le contrat oracle actuel est appelé par un delegatecall.

Un événement OracleRequest est émis, qui contient les données de demande _data, sous le format Concise Binary Object Representation (CBOR).

Exemple d’événement OracleRequest

À partir de cet événement, nous pouvons voir que l’agrégateur de prix ETH/USD a envoyé une demande de données de prix à l’oracle. Si l’oracle retourne les informations demandées, nous pouvons identifier l’adresse du contrat retourné, l’ID de la méthode à appeler, et l’heure d’expiration.

Réponse du nœud hors chaîne

Première vérification : Si toutes les vérifications sont validées, le coût de cette demande est enregistré dans withdrawableTokens pour comptabiliser le montant qui peut être retiré. Si toutes ces vérifications sont concluantes, la fonction de rappel du contrat demandeur peut alors être appelée officiellement.

Fonction de rappel

Nous avons précédemment appris dans oracleRequest que l’identifiant de la fonction de rappel était spécifique, et la méthode est chainlinkCallback(bytes32, int256).

Ce qui précède est le processus complet d’un service oracle général. Prenons, par exemple, la méthode “requestEthereumPrice” dans le contrat “TestnetConsumer” fourni par Chainlink pour expliquer brièvement le processus de demande de réponse des oracles de prix.

En tant que développeur, je souhaite simplement utiliser les prix des paires de devises existantes sans avoir à spécifier moi-même ces URL. Est-ce possible ? La réponse est oui.

Chaque paire de négociation possède un flux de prix distinct, également connu sous le nom d’Agrégateur, qui se présente en réalité sous la forme d’un AggregatorProxy.

Enfin, cet article a été rédigé par XiG (compte X) de l’équipe ZAN (compte X).

Populaire