Oracle Machine : le pont entre la Blockchain et le monde réel
Dans la technologie Blockchain, l'Oracle Machine joue un rôle d'infrastructure essentiel. C'est un système capable de fournir des informations externes aux contrats intelligents sur la chaîne, agissant comme un middleware entre la Blockchain et le monde extérieur. La fonction principale de l'Oracle Machine est de fournir les données externes nécessaires aux contrats intelligents sur la Blockchain.
Prenons un exemple, supposons que nous créions 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 pour un jour donné. Étant donné que le contrat intelligent lui-même ne peut pas accéder directement à ces données du monde réel hors chaîne, il doit donc passer par une Oracle Machine pour y parvenir. Dans ce cas, le contrat intelligent écrira les données de volume des transactions de pétrole brut nécessaires dans le journal des événements. Par la suite, un processus hors chaîne sera lancé 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, 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.
Chainlink : le leader des Oracles de Blockchain
Dans le domaine des Oracle Machines, Chainlink est sans aucun doute le projet ayant la plus grande part de marché. En tant que solution d'Oracle Machine décentralisée, l'objectif de Chainlink est de 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 construit un écosystème autour du token LINK, formant un cercle vertueux grâce à des incitations économiques.
Le déclenchement de l'oracle Chainlink nécessite un transfert de jetons LINK. LINK est un jeton de contrat ERC677 basé sur le réseau Ethereum. Les fonctions d'oracle basées sur le jeton LINK ERC677 appartiennent à un mode de demande/réponse.
transfertEtAppel dans le token ERC677
La norme ERC677 a été proposée par Chainlink pour s'adapter aux scénarios de services d'oracle. Elle ajoute la méthode transferAndCall sur la base de l'ERC20 standard, combinant paiement et demande de service, répondant ainsi aux besoins des scénarios d'affaires d'oracle.
Lorsque les utilisateurs effectuent un transfert avec transferAndCall, en plus du transfert ERC20 habituel, il sera également vérifié si l'adresse de réception est une adresse de contrat. Si c'est le cas, la méthode onTokenTransfer de cette adresse sera appelée. Il est important de noter qu'avant de demander des services d'Oracle Machine, les utilisateurs doivent d'abord confirmer la fiabilité de cet Oracle Machine, car les services d'Oracle Machine nécessitent un paiement préalable.
Processus de demande d'oracle sur la Blockchain
Lorsque les consommateurs d'oracle utilisent la méthode transferAndCall pour payer des frais et demander un service, la méthode onTokenTransfer dans le contrat oracle effectue d'abord 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 les limites, la validation que les données contiennent le bon sélecteur de fonction, etc.
Après la vérification de sécurité, le contrat générera un identifiant de demande unique (requestId) et fixera le temps d'expiration de la demande. 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
Les nœuds hors chaîne, après avoir reçu l'événement OracleRequest, analyseront les informations spécifiques à la demande et utiliseront l'API réseau pour obtenir les données nécessaires. Ensuite, le nœud appellera la méthode fulfillOracleRequest pour soumettre les données sur la chaîne.
Cette méthode effectuera une série de vérifications, y compris la vérification si l'appelant est autorisé, la validation de la validité de la demande, etc. Une fois la validation réussie, le contrat enregistrera le montant des jetons pouvant être retirés et supprimera ce requestId de la carte des engagements. Enfin, le contrat appellera la fonction de rappel du contrat du demandeur pour renvoyer les données au consommateur.
Application réelle de l'Oracle Machine de prix
Pour les développeurs, s'ils ont seulement besoin d'utiliser les données de prix des paires de devises existantes, ils peuvent directement utiliser l'interface Price Feed fournie par Chainlink. Chaque paire de trading a un Price Feed distinct ( également appelé Aggregator ), qui est en réalité un contrat AggregatorProxy.
Ces interfaces offrent généralement les méthodes de requête suivantes :
decimals(): Retourne le nombre de décimales des données de prix
description(): Retourner le nom de la paire de trading
version(): Identification du type d'Agrégateur auquel le Proxy pointe
getRoundData(_roundId): obtenir des données de prix pour un tour spécifique
latestRoundData(): Obtenir les dernières données de prix
Dans la plupart des scénarios d'application, le contrat peut simplement avoir besoin de lire le dernier prix, c'est-à-dire d'appeler la méthode latestRoundData(). Le paramètre answer retourné est le dernier prix.
Il est à noter que le prix des tokens lu par la plupart des applications est généralement exprimé en USD. Dans ce cas, la précision est généralement unifiée à 8 décimales, ce qui simplifie le traitement des problèmes de 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.
5 J'aime
Récompense
5
7
Partager
Commentaire
0/400
nft_widow
· Il y a 14h
Oracle Machine incroyable Cela ne veut-il pas dire que l'on peut avancer de travers !
Voir l'originalRépondre0
CountdownToBroke
· Il y a 14h
ce n'est qu'un passant sur la chaîne
Voir l'originalRépondre0
BlockchainBouncer
· Il y a 14h
Gaga, c'est encore le moment d'expliquer le mécanisme de l'Oracle Machine!
Voir l'originalRépondre0
StakeTillRetire
· Il y a 14h
L'Oracle Machine est vraiment génial, mes smart contracts ne peuvent pas s'en passer.
Voir l'originalRépondre0
FUD_Whisperer
· Il y a 14h
Je ne peux même plus me permettre de manger à cause des contrats.
Voir l'originalRépondre0
HalfPositionRunner
· Il y a 14h
Ces données de la friture sont sauvées par l'Oracle Machine.
Voir l'originalRépondre0
ImpermanentPhilosopher
· Il y a 14h
Zut, c'est encore le discours habituel de l'Oracle Machine.
Comment les Oracle Machines deviennent des ponts de données entre la Blockchain et le monde réel
Oracle Machine : le pont entre la Blockchain et le monde réel
Dans la technologie Blockchain, l'Oracle Machine joue un rôle d'infrastructure essentiel. C'est un système capable de fournir des informations externes aux contrats intelligents sur la chaîne, agissant comme un middleware entre la Blockchain et le monde extérieur. La fonction principale de l'Oracle Machine est de fournir les données externes nécessaires aux contrats intelligents sur la Blockchain.
Prenons un exemple, supposons que nous créions 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 pour un jour donné. Étant donné que le contrat intelligent lui-même ne peut pas accéder directement à ces données du monde réel hors chaîne, il doit donc passer par une Oracle Machine pour y parvenir. Dans ce cas, le contrat intelligent écrira les données de volume des transactions de pétrole brut nécessaires dans le journal des événements. Par la suite, un processus hors chaîne sera lancé 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, 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.
Chainlink : le leader des Oracles de Blockchain
Dans le domaine des Oracle Machines, Chainlink est sans aucun doute le projet ayant la plus grande part de marché. En tant que solution d'Oracle Machine décentralisée, l'objectif de Chainlink est de 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 construit un écosystème autour du token LINK, formant un cercle vertueux grâce à des incitations économiques.
Le déclenchement de l'oracle Chainlink nécessite un transfert de jetons LINK. LINK est un jeton de contrat ERC677 basé sur le réseau Ethereum. Les fonctions d'oracle basées sur le jeton LINK ERC677 appartiennent à un mode de demande/réponse.
transfertEtAppel dans le token ERC677
La norme ERC677 a été proposée par Chainlink pour s'adapter aux scénarios de services d'oracle. Elle ajoute la méthode transferAndCall sur la base de l'ERC20 standard, combinant paiement et demande de service, répondant ainsi aux besoins des scénarios d'affaires d'oracle.
Lorsque les utilisateurs effectuent un transfert avec transferAndCall, en plus du transfert ERC20 habituel, il sera également vérifié si l'adresse de réception est une adresse de contrat. Si c'est le cas, la méthode onTokenTransfer de cette adresse sera appelée. Il est important de noter qu'avant de demander des services d'Oracle Machine, les utilisateurs doivent d'abord confirmer la fiabilité de cet Oracle Machine, car les services d'Oracle Machine nécessitent un paiement préalable.
Processus de demande d'oracle sur la Blockchain
Lorsque les consommateurs d'oracle utilisent la méthode transferAndCall pour payer des frais et demander un service, la méthode onTokenTransfer dans le contrat oracle effectue d'abord 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 les limites, la validation que les données contiennent le bon sélecteur de fonction, etc.
Après la vérification de sécurité, le contrat générera un identifiant de demande unique (requestId) et fixera le temps d'expiration de la demande. 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
Les nœuds hors chaîne, après avoir reçu l'événement OracleRequest, analyseront les informations spécifiques à la demande et utiliseront l'API réseau pour obtenir les données nécessaires. Ensuite, le nœud appellera la méthode fulfillOracleRequest pour soumettre les données sur la chaîne.
Cette méthode effectuera une série de vérifications, y compris la vérification si l'appelant est autorisé, la validation de la validité de la demande, etc. Une fois la validation réussie, le contrat enregistrera le montant des jetons pouvant être retirés et supprimera ce requestId de la carte des engagements. Enfin, le contrat appellera la fonction de rappel du contrat du demandeur pour renvoyer les données au consommateur.
Application réelle de l'Oracle Machine de prix
Pour les développeurs, s'ils ont seulement besoin d'utiliser les données de prix des paires de devises existantes, ils peuvent directement utiliser l'interface Price Feed fournie par Chainlink. Chaque paire de trading a un Price Feed distinct ( également appelé Aggregator ), qui est en réalité un contrat AggregatorProxy.
Ces interfaces offrent généralement les méthodes de requête suivantes :
Dans la plupart des scénarios d'application, le contrat peut simplement avoir besoin de lire le dernier prix, c'est-à-dire d'appeler la méthode latestRoundData(). Le paramètre answer retourné est le dernier prix.
Il est à noter que le prix des tokens lu par la plupart des applications est généralement exprimé en USD. Dans ce cas, la précision est généralement unifiée à 8 décimales, ce qui simplifie le traitement des problèmes de précision entre différents tokens.