Oracle Machine système : pont entre les smart contracts et le monde réel
Dans l'écosystème de la blockchain, l'Oracle Machine joue un rôle crucial. En tant que système intermédiaire, il peut fournir des informations externes aux smart contracts sur la chaîne, reliant ainsi le monde de la blockchain au monde réel. La fonction principale de l'Oracle Machine est de fournir les données externes nécessaires aux smart contracts.
Prenons un exemple : supposons que nous créons un smart contract sur le réseau Ethereum qui nécessite d'obtenir des données sur le volume des transactions de pétrole brut pour un certain jour. Étant donné que le smart contract lui-même ne peut pas accéder directement à ces données du monde réel en dehors de la chaîne, il est nécessaire de recourir à un Oracle Machine pour y parvenir. Dans ce cas, le smart contract écrira le volume des transactions de pétrole brut pour la date requise dans le journal des événements. Ensuite, un processus sera lancé hors chaîne pour surveiller et s'abonner à ce journal des événements. Lorsque la demande dans la transaction est détectée, ce processus soumettra une transaction sur la chaîne, appelant les méthodes pertinentes du contrat et téléchargeant les informations sur le volume des transactions de pétrole brut pour la date spécifiée dans le smart contract.
Chainlink : solution Oracle Machine grand public
Dans le marché actuel de la blockchain, Chainlink est le projet d'oracle avec la plus haute part de marché. En tant que système d'oracle décentralisé, Chainlink vise à fournir des données générées dans le monde réel à la blockchain de la manière la plus sécurisée possible. Sur la base des principes fondamentaux des oracles, Chainlink a construit un écosystème motivé par des incitations économiques autour du jeton LINK.
Le déclenchement de l'Oracle Machine Chainlink nécessite un transfert de jetons LINK. LINK est un contrat ERC677 sur le réseau Ethereum, et les fonctionnalités de l'Oracle Machine basées sur le jeton LINK ERC677 appartiennent au mode de requête/réponse.
mécanisme transferAndCall du jeton ERC677
Lors de la conception du cadre d'Oracle Machine, Chainlink a d'abord pris en compte la manière dont les utilisateurs paient les frais de service à l'Oracle Machine. Étant donné que les jetons ERC20 standard ne peuvent pas satisfaire le besoin de "fournir le service après paiement", Chainlink a proposé la norme ERC677 adaptée aux scénarios de services d'Oracle Machine.
ERC677 ajoute la méthode transferAndCall sur la base de l'ERC20 standard. Cette méthode combine le paiement et la demande de service, répondant aux besoins des scénarios d'affaires des Oracle Machine. Lorsque l'utilisateur effectue un transfert transferAndCall, en plus du transfert ERC20, il vérifie si l'adresse de réception est une adresse de contrat, et si c'est le cas, elle appelle la méthode onTokenTransfer de cette adresse.
Il est important de noter qu'avant de demander des services d'Oracle Machine, les utilisateurs doivent d'abord s'assurer que cet Oracle Machine est fiable, car l'Oracle Machine doit d'abord percevoir des frais avant de fournir ses services.
processus de demande oracle sur la chaîne
Lorsque les consommateurs d'Oracles utilisent la méthode transferAndCall pour payer les frais et demander des services, la méthode onTokenTransfer dans le contrat Oracle effectuera une série de vérifications de sécurité. Cela inclut la vérification que le transfert est un jeton LINK, la vérification que la longueur des données ne dépasse pas la limite, la vérification que les données contiennent le bon sélecteur de fonction, etc.
Après la vérification, le contrat Oracle Machine générera un requestId unique et stockera les informations relatives à la demande dans la cartographie commitments. Enfin, le contrat émettra un événement OracleRequest, qui contiendra les données détaillées de la demande.
mécanisme de réponse des nœuds hors chaîne
Après avoir détecté l'événement OracleRequest sur le nœud hors chaîne, il analysera les informations spécifiques de la demande et obtiendra les données nécessaires via un appel API. Ensuite, le nœud soumettra une transaction pour appeler la méthode fulfillOracleRequest dans le contrat Oracle, soumettant ainsi les données sur la chaîne.
Cette méthode effectuera une série de validations, y compris la vérification si l'appelant est un nœud autorisé, la validation de la validité de l'ID de requête, etc. Une fois la validation réussie, le contrat enregistrera le nombre de jetons extractibles et supprimera cet ID de requête de la carte des engagements.
Enfin, le contrat appellera la fonction de rappel du contrat demandeur pour renvoyer les données au contrat consommateur. Pour l'Oracle Machine de prix, cela implique généralement de mettre à jour les données de prix actuelles.
Utilisation simplifiée de l'Oracle Machine de prix
Pour les développeurs, s'ils n'ont besoin d'utiliser que les données de prix des paires de crypto-monnaies existantes, sans avoir à spécifier l'URL de l'API eux-mêmes, ils peuvent directement utiliser le Price Feed fourni par Chainlink. Chaque paire de trading a un Price Feed indépendant ( également appelé Aggregator ), qui est en réalité un contrat AggregatorProxy.
Ces contrats offrent généralement les principales méthodes de requête suivantes :
decimals(): retourne le nombre de décimales des données de prix
description(): renvoyer le nom de la paire de trading
version(): identifier du type d'Aggregator auquel le Proxy pointe
getRoundData(_roundId): obtenir les données historiques de prix en fonction de l'ID de la ronde
latestRoundData(): obtenir les dernières données de prix
Dans la plupart des scénarios d'application, le contrat n'a besoin que de lire le prix le plus récent, c'est-à-dire d'appeler la méthode latestRoundData(). Le paramètre answer retourné par cette méthode est le prix le plus récent.
Il est à noter que la plupart des applications lisent le prix des tokens en utilisant l'USD comme unité de mesure. Dans ce cas, la précision des données de prix est généralement unifiée à 8 décimales, ce qui simplifie le problème de traitement de la précision entre différents tokens.
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
13 J'aime
Récompense
13
8
Partager
Commentaire
0/400
Anon32942
· 07-15 12:05
Oracle Machine ce que je comprends ! J'ai accumulé un peu de link
Voir l'originalRépondre0
CrossChainBreather
· 07-15 11:26
Oracle Machine a sauvé mon petit Portefeuille
Voir l'originalRépondre0
rugdoc.eth
· 07-12 12:36
Oracle Machine n'a pas compris non plus.
Voir l'originalRépondre0
HackerWhoCares
· 07-12 12:32
link est l'avenir hein
Voir l'originalRépondre0
MetaverseHermit
· 07-12 12:23
link bull wah bull wah
Voir l'originalRépondre0
SchrodingerWallet
· 07-12 12:17
Oracle Machine est vraiment bon... Jeton est stable
Analyse approfondie de Chainlink : comment l'Oracle Machine connecte le Blockchain au monde réel
Oracle Machine système : pont entre les smart contracts et le monde réel
Dans l'écosystème de la blockchain, l'Oracle Machine joue un rôle crucial. En tant que système intermédiaire, il peut fournir des informations externes aux smart contracts sur la chaîne, reliant ainsi le monde de la blockchain au monde réel. La fonction principale de l'Oracle Machine est de fournir les données externes nécessaires aux smart contracts.
Prenons un exemple : supposons que nous créons un smart contract sur le réseau Ethereum qui nécessite d'obtenir des données sur le volume des transactions de pétrole brut pour un certain jour. Étant donné que le smart contract lui-même ne peut pas accéder directement à ces données du monde réel en dehors de la chaîne, il est nécessaire de recourir à un Oracle Machine pour y parvenir. Dans ce cas, le smart contract écrira le volume des transactions de pétrole brut pour la date requise dans le journal des événements. Ensuite, un processus sera lancé hors chaîne pour surveiller et s'abonner à ce journal des événements. Lorsque la demande dans la transaction est détectée, ce processus soumettra une transaction sur la chaîne, appelant les méthodes pertinentes du contrat et téléchargeant les informations sur le volume des transactions de pétrole brut pour la date spécifiée dans le smart contract.
Chainlink : solution Oracle Machine grand public
Dans le marché actuel de la blockchain, Chainlink est le projet d'oracle avec la plus haute part de marché. En tant que système d'oracle décentralisé, Chainlink vise à fournir des données générées dans le monde réel à la blockchain de la manière la plus sécurisée possible. Sur la base des principes fondamentaux des oracles, Chainlink a construit un écosystème motivé par des incitations économiques autour du jeton LINK.
Le déclenchement de l'Oracle Machine Chainlink nécessite un transfert de jetons LINK. LINK est un contrat ERC677 sur le réseau Ethereum, et les fonctionnalités de l'Oracle Machine basées sur le jeton LINK ERC677 appartiennent au mode de requête/réponse.
mécanisme transferAndCall du jeton ERC677
Lors de la conception du cadre d'Oracle Machine, Chainlink a d'abord pris en compte la manière dont les utilisateurs paient les frais de service à l'Oracle Machine. Étant donné que les jetons ERC20 standard ne peuvent pas satisfaire le besoin de "fournir le service après paiement", Chainlink a proposé la norme ERC677 adaptée aux scénarios de services d'Oracle Machine.
ERC677 ajoute la méthode transferAndCall sur la base de l'ERC20 standard. Cette méthode combine le paiement et la demande de service, répondant aux besoins des scénarios d'affaires des Oracle Machine. Lorsque l'utilisateur effectue un transfert transferAndCall, en plus du transfert ERC20, il vérifie si l'adresse de réception est une adresse de contrat, et si c'est le cas, elle appelle la méthode onTokenTransfer de cette adresse.
Il est important de noter qu'avant de demander des services d'Oracle Machine, les utilisateurs doivent d'abord s'assurer que cet Oracle Machine est fiable, car l'Oracle Machine doit d'abord percevoir des frais avant de fournir ses services.
processus de demande oracle sur la chaîne
Lorsque les consommateurs d'Oracles utilisent la méthode transferAndCall pour payer les frais et demander des services, la méthode onTokenTransfer dans le contrat Oracle effectuera une série de vérifications de sécurité. Cela inclut la vérification que le transfert est un jeton LINK, la vérification que la longueur des données ne dépasse pas la limite, la vérification que les données contiennent le bon sélecteur de fonction, etc.
Après la vérification, le contrat Oracle Machine générera un requestId unique et stockera les informations relatives à la demande dans la cartographie commitments. Enfin, le contrat émettra un événement OracleRequest, qui contiendra les données détaillées de la demande.
mécanisme de réponse des nœuds hors chaîne
Après avoir détecté l'événement OracleRequest sur le nœud hors chaîne, il analysera les informations spécifiques de la demande et obtiendra les données nécessaires via un appel API. Ensuite, le nœud soumettra une transaction pour appeler la méthode fulfillOracleRequest dans le contrat Oracle, soumettant ainsi les données sur la chaîne.
Cette méthode effectuera une série de validations, y compris la vérification si l'appelant est un nœud autorisé, la validation de la validité de l'ID de requête, etc. Une fois la validation réussie, le contrat enregistrera le nombre de jetons extractibles et supprimera cet ID de requête de la carte des engagements.
Enfin, le contrat appellera la fonction de rappel du contrat demandeur pour renvoyer les données au contrat consommateur. Pour l'Oracle Machine de prix, cela implique généralement de mettre à jour les données de prix actuelles.
Utilisation simplifiée de l'Oracle Machine de prix
Pour les développeurs, s'ils n'ont besoin d'utiliser que les données de prix des paires de crypto-monnaies existantes, sans avoir à spécifier l'URL de l'API eux-mêmes, ils peuvent directement utiliser le Price Feed fourni par Chainlink. Chaque paire de trading a un Price Feed indépendant ( également appelé Aggregator ), qui est en réalité un contrat AggregatorProxy.
Ces contrats offrent généralement les principales méthodes de requête suivantes :
Dans la plupart des scénarios d'application, le contrat n'a besoin que de lire le prix le plus récent, c'est-à-dire d'appeler la méthode latestRoundData(). Le paramètre answer retourné par cette méthode est le prix le plus récent.
Il est à noter que la plupart des applications lisent le prix des tokens en utilisant l'USD comme unité de mesure. Dans ce cas, la précision des données de prix est généralement unifiée à 8 décimales, ce qui simplifie le problème de traitement de la précision entre différents tokens.