Détails techniques de l'Oracle Machine : exemple avec Chainlink
L'Oracle Machine est une infrastructure clé qui relie les contrats intelligents au monde extérieur dans le domaine de la blockchain. En tant que système intermédiaire, il peut fournir des informations de données externes aux contrats intelligents en chaîne. La fonction principale de l'Oracle Machine est de livrer des données aux contrats intelligents sur la blockchain.
Prenons un exemple : supposons que nous ayons déployé un contrat intelligent sur le réseau Ethereum qui nécessite d'obtenir des données sur le volume des transactions de pétrole brut à une date spécifique. Étant donné que le contrat intelligent lui-même ne peut pas accéder directement aux données du monde réel hors chaîne, il a besoin de recourir à l'Oracle Machine pour y parvenir. Le processus spécifique est le suivant : le contrat intelligent écrit d'abord la demande de données sur le volume des transactions de pétrole brut pour la date souhaitée dans le journal des événements, puis un processus hors chaîne est lancé pour surveiller et s'abonner à ce journal des événements. Lorsqu'une demande est détectée dans la transaction, ce processus appelle les méthodes pertinentes du contrat en soumettant une transaction sur la chaîne, pour télécharger les informations sur le volume des transactions de pétrole brut pour la date spécifiée dans le contrat intelligent.
Dans le marché des Oracle Machines, Chainlink détient la plus grande part de marché. En tant que projet d'Oracle Machine 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 Oracle Machines, Chainlink a établi un écosystème en boucle vertueuse autour du token LINK grâce à des incitations économiques. Les Oracle Machines Chainlink doivent être déclenchées par le transfert de tokens LINK. LINK est un contrat ERC677 sur le réseau Ethereum, et les fonctionnalités d'Oracle Machines réalisées sur la base du token LINK appartiennent au modèle de requête/réponse.
La norme de jeton ERC677 ajoute la méthode transferAndCall sur la base de l'ERC20. Cette méthode combine le paiement et la demande de service, répondant ainsi aux besoins des scénarios d'affaires d'Oracle Machine. Lorsque l'utilisateur effectue un transfert transferAndCall, en plus du transfert ERC20, il vérifie également si l'adresse de réception est une adresse de contrat; si c'est le cas, elle appelle la méthode onTokenTransfer de cette adresse.
Avant de demander le service de l'Oracle Machine, l'utilisateur doit d'abord confirmer la fiabilité de cet Oracle Machine, car l'Oracle Machine doit être payé avant de fournir des services au consommateur. Lorsque le consommateur de l'Oracle Machine utilise la méthode transferAndCall pour payer les frais et demander le service, la méthode onTokenTransfer du contrat de l'Oracle Machine effectue une série de vérifications de sécurité, notamment la validation du transfert pour s'assurer qu'il s'agit de jetons LINK, la vérification de la longueur des données pour s'assurer qu'elle ne dépasse pas les limites, la validation du sélecteur de fonction, etc. Une fois les vérifications réussies, la méthode oracleRequest du contrat de l'Oracle Machine sera appelée via deleGatecall.
La méthode oracleRequest génère un requestId unique, définit une durée d'expiration et émet l'événement OracleRequest. Cet événement contient les données de la demande, au format de codage CBOR. Les nœuds hors chaîne écouteront cet événement, analyseront les informations de la demande, puis utiliseront des appels API pour obtenir les données nécessaires, et enfin, soumettront les données sur la chaîne en appelant la méthode fulfillOracleRequest par le biais d'une transaction.
La méthode fulfillOracleRequest effectuera une série de validations, y compris la vérification des autorisations de l'appelant, la validation de la validité de la demande, etc. Une fois la validation réussie, le montant des jetons pouvant être retirés sera enregistré et la fonction de rappel du contrat de l'appelant sera appelée pour renvoyer les données.
Pour les développeurs, s'ils souhaitent uniquement utiliser les données de prix des paires de devises existantes, ils peuvent directement appeler l'interface Price Feed fournie par l'officiel. Chaque paire de trading a un Price Feed séparé (, c'est-à-dire l'Aggregator ), qui est en réalité le contrat AggregatorProxy. Les développeurs peuvent obtenir les dernières données de prix en appelant la méthode latestRoundData (), où le paramètre answer est le dernier prix. La plupart des paires de trading cotées en USD ont une précision uniforme de 8 décimales, ce qui simplifie le 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.
17 J'aime
Récompense
17
5
Partager
Commentaire
0/400
PebbleHander
· Il y a 16h
C'est à peu près ça.
Voir l'originalRépondre0
BankruptWorker
· Il y a 16h
C'est trop difficile, abandonnez la lutte.
Voir l'originalRépondre0
CryptoGoldmine
· Il y a 16h
L'année dernière, j'ai gagné 200 fois grâce à la tendance de LINK, uniquement en me basant sur l'analyse technique.
Voir l'originalRépondre0
TestnetScholar
· Il y a 16h
link a encore été copié pour les devoirs.
Voir l'originalRépondre0
Web3Educator
· Il y a 16h
des choses fondamentalement fascinantes, laissez-moi décomposer cela pour mes étudiants en web3...
Chainlink Oracle Machine : le pont entre Blockchain et le monde réel
Détails techniques de l'Oracle Machine : exemple avec Chainlink
L'Oracle Machine est une infrastructure clé qui relie les contrats intelligents au monde extérieur dans le domaine de la blockchain. En tant que système intermédiaire, il peut fournir des informations de données externes aux contrats intelligents en chaîne. La fonction principale de l'Oracle Machine est de livrer des données aux contrats intelligents sur la blockchain.
Prenons un exemple : supposons que nous ayons déployé un contrat intelligent sur le réseau Ethereum qui nécessite d'obtenir des données sur le volume des transactions de pétrole brut à une date spécifique. Étant donné que le contrat intelligent lui-même ne peut pas accéder directement aux données du monde réel hors chaîne, il a besoin de recourir à l'Oracle Machine pour y parvenir. Le processus spécifique est le suivant : le contrat intelligent écrit d'abord la demande de données sur le volume des transactions de pétrole brut pour la date souhaitée dans le journal des événements, puis un processus hors chaîne est lancé pour surveiller et s'abonner à ce journal des événements. Lorsqu'une demande est détectée dans la transaction, ce processus appelle les méthodes pertinentes du contrat en soumettant une transaction sur la chaîne, pour télécharger les informations sur le volume des transactions de pétrole brut pour la date spécifiée dans le contrat intelligent.
Dans le marché des Oracle Machines, Chainlink détient la plus grande part de marché. En tant que projet d'Oracle Machine 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 Oracle Machines, Chainlink a établi un écosystème en boucle vertueuse autour du token LINK grâce à des incitations économiques. Les Oracle Machines Chainlink doivent être déclenchées par le transfert de tokens LINK. LINK est un contrat ERC677 sur le réseau Ethereum, et les fonctionnalités d'Oracle Machines réalisées sur la base du token LINK appartiennent au modèle de requête/réponse.
La norme de jeton ERC677 ajoute la méthode transferAndCall sur la base de l'ERC20. Cette méthode combine le paiement et la demande de service, répondant ainsi aux besoins des scénarios d'affaires d'Oracle Machine. Lorsque l'utilisateur effectue un transfert transferAndCall, en plus du transfert ERC20, il vérifie également si l'adresse de réception est une adresse de contrat; si c'est le cas, elle appelle la méthode onTokenTransfer de cette adresse.
Avant de demander le service de l'Oracle Machine, l'utilisateur doit d'abord confirmer la fiabilité de cet Oracle Machine, car l'Oracle Machine doit être payé avant de fournir des services au consommateur. Lorsque le consommateur de l'Oracle Machine utilise la méthode transferAndCall pour payer les frais et demander le service, la méthode onTokenTransfer du contrat de l'Oracle Machine effectue une série de vérifications de sécurité, notamment la validation du transfert pour s'assurer qu'il s'agit de jetons LINK, la vérification de la longueur des données pour s'assurer qu'elle ne dépasse pas les limites, la validation du sélecteur de fonction, etc. Une fois les vérifications réussies, la méthode oracleRequest du contrat de l'Oracle Machine sera appelée via deleGatecall.
La méthode oracleRequest génère un requestId unique, définit une durée d'expiration et émet l'événement OracleRequest. Cet événement contient les données de la demande, au format de codage CBOR. Les nœuds hors chaîne écouteront cet événement, analyseront les informations de la demande, puis utiliseront des appels API pour obtenir les données nécessaires, et enfin, soumettront les données sur la chaîne en appelant la méthode fulfillOracleRequest par le biais d'une transaction.
La méthode fulfillOracleRequest effectuera une série de validations, y compris la vérification des autorisations de l'appelant, la validation de la validité de la demande, etc. Une fois la validation réussie, le montant des jetons pouvant être retirés sera enregistré et la fonction de rappel du contrat de l'appelant sera appelée pour renvoyer les données.
Pour les développeurs, s'ils souhaitent uniquement utiliser les données de prix des paires de devises existantes, ils peuvent directement appeler l'interface Price Feed fournie par l'officiel. Chaque paire de trading a un Price Feed séparé (, c'est-à-dire l'Aggregator ), qui est en réalité le contrat AggregatorProxy. Les développeurs peuvent obtenir les dernières données de prix en appelant la méthode latestRoundData (), où le paramètre answer est le dernier prix. La plupart des paires de trading cotées en USD ont une précision uniforme de 8 décimales, ce qui simplifie le traitement de la précision entre différents tokens.