Mécanisme de fonctionnement de l'oracle de prix distribué
Pour éviter les points de défaillance uniques et améliorer la fiabilité, les systèmes modernes de prix Oracle Machine adoptent une conception distribuée. Prenons l'exemple d'un service Oracle Machine bien connu, dont les données de prix BTC/USD agrègent les contributions de 31 nœuds Oracle Machine indépendants.
Le contrat intelligent de cet agrégateur peut être consulté publiquement sur l'explorateur de la blockchain Ethereum. En appelant la méthode transmitters du contrat, les utilisateurs peuvent obtenir la liste de tous les nœuds Oracle Machine hors chaîne inclus dans cet agrégateur.
Chaque nœud d'oracle hors chaîne peut fournir des données de prix à l'agrégateur en appelant la méthode transmit en réponse aux demandes des utilisateurs. Ces nœuds sont généralement des comptes externes (EOA), et peuvent fournir des données pour plusieurs paires de prix différentes ( telles que BTC/USD, ETH/USD, etc. ).
Le contrat d'agrégation sur la chaîne, lorsqu'il reçoit les données du nœud Oracle Machine, effectuera une série d'étapes de validation:
Tout d'abord, lisez l'état actuel du contrat et effectuez une vérification de base.
Ensuite, effectuez les préparatifs nécessaires.
Utiliser ecrecover() pour valider chaque donnée de signature, s'assurer que la valeur de hash est cohérente avec _report. Vérifier également que le rôle du signataire est Signer et empêcher les signatures en double.
Enfin, vérifiez si les valeurs observées sont ordonnées, sélectionnez la médiane comme résultat final et assurez-vous que le résultat est dans la plage de seuils prédéfinie.
Une fois toutes les vérifications effectuées, le contrat enregistrera la réponse de l'oracle machine dans s_transmissions. De plus, la réponse fera l'objet de validations supplémentaires, par exemple en la comparant à d'autres sources de prix ( comme le prix d'un certain DEX ), pour s'assurer que l'écart est dans une plage acceptable.
Processus d'intégration simplifié du Feed Registry
Pour simplifier davantage le processus d'intégration et réduire les coûts de gouvernance, certains services Oracle Machine ont proposé un registre de flux. Cela peut être compris comme un agrégateur de PriceFeeds, ayant intégré plusieurs sources de prix d'actifs différents. En utilisant le registre de flux, les développeurs n'ont pas besoin de configurer un priceFeed séparé pour chaque actif, ils peuvent directement lire les données de prix de divers actifs via une interface unifiée.
Mécanisme d'agrégation de données multi-niveaux
Les services de prix d'Oracle Machine de haute qualité adoptent généralement un mécanisme d'agrégation de données en plusieurs niveaux, comprenant principalement trois niveaux : l'agrégation des sources de données, l'agrégation des opérateurs de nœuds et l'agrégation du réseau d'Oracle Machine.
Agrégation des sources de données : Les données de prix brutes proviennent de plusieurs plateformes d'échange centralisées et décentralisées. Des fournisseurs de services d'agrégation de données professionnels collectent ces données brutes et effectuent des calculs pondérés en fonction de facteurs tels que le volume des transactions et la liquidité, pour former des résultats d'agrégation préliminaires.
Agrégation des opérateurs de nœuds : chaque opérateur de nœud Oracle Machine obtient des données de prix à partir de plusieurs fournisseurs de services d'agrégation de données indépendants, prend la valeur médiane et élimine les valeurs aberrantes, formant ainsi le prix de ce nœud.
Agrégation du réseau Oracle Machine : au niveau du réseau entier, les données de tous les nœuds seront à nouveau agrégées, la méthode couramment utilisée consiste à prendre la médiane après avoir reçu un nombre prédéfini de réponses de nœuds.
Lorsque le prix final est mis à jour sur la chaîne, il doit également satisfaire à des conditions telles que le seuil de déviation ou le seuil de cœur. Ce mécanisme d'agrégation multi-niveaux améliore considérablement l'exactitude et la fiabilité des données.
Cependant, en raison de la présence d'un mécanisme de seuil de déviation, les mises à jour de prix de certaines Oracle Machine peuvent être relativement lentes, variant de quelques minutes à plusieurs heures. Cela les rend plus adaptées à des scénarios d'application moins sensibles aux mises à jour de prix, et peut ne pas convenir à tous les types d'applications décentralisées. Les développeurs doivent peser les avantages et les limites des services d'Oracle Machine lors de leur choix, en fonction des besoins spécifiques de l'application.
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.
6 J'aime
Récompense
6
5
Partager
Commentaire
0/400
AirdropGrandpa
· Il y a 14h
Qui est le véritable décideur des prix ?
Voir l'originalRépondre0
GateUser-a606bf0c
· Il y a 14h
Les données fiables de l'Oracle Machine sont au cœur.
Voir l'originalRépondre0
MetaverseVagabond
· Il y a 14h
J'ai déjà commencé à jouer avec l'Oracle Machine, vous ne le voyez que maintenant.
Voir l'originalRépondre0
ForkTongue
· Il y a 14h
Ce n'est pas vrai, les données doivent encore être agrégées ?
Analyse des Oracle Machines distribués : comment le multi-agrégat garantit l'exactitude des données de prix off-chain.
Mécanisme de fonctionnement de l'oracle de prix distribué
Pour éviter les points de défaillance uniques et améliorer la fiabilité, les systèmes modernes de prix Oracle Machine adoptent une conception distribuée. Prenons l'exemple d'un service Oracle Machine bien connu, dont les données de prix BTC/USD agrègent les contributions de 31 nœuds Oracle Machine indépendants.
Le contrat intelligent de cet agrégateur peut être consulté publiquement sur l'explorateur de la blockchain Ethereum. En appelant la méthode transmitters du contrat, les utilisateurs peuvent obtenir la liste de tous les nœuds Oracle Machine hors chaîne inclus dans cet agrégateur.
Chaque nœud d'oracle hors chaîne peut fournir des données de prix à l'agrégateur en appelant la méthode transmit en réponse aux demandes des utilisateurs. Ces nœuds sont généralement des comptes externes (EOA), et peuvent fournir des données pour plusieurs paires de prix différentes ( telles que BTC/USD, ETH/USD, etc. ).
Le contrat d'agrégation sur la chaîne, lorsqu'il reçoit les données du nœud Oracle Machine, effectuera une série d'étapes de validation:
Tout d'abord, lisez l'état actuel du contrat et effectuez une vérification de base.
Ensuite, effectuez les préparatifs nécessaires.
Utiliser ecrecover() pour valider chaque donnée de signature, s'assurer que la valeur de hash est cohérente avec _report. Vérifier également que le rôle du signataire est Signer et empêcher les signatures en double.
Enfin, vérifiez si les valeurs observées sont ordonnées, sélectionnez la médiane comme résultat final et assurez-vous que le résultat est dans la plage de seuils prédéfinie.
Une fois toutes les vérifications effectuées, le contrat enregistrera la réponse de l'oracle machine dans s_transmissions. De plus, la réponse fera l'objet de validations supplémentaires, par exemple en la comparant à d'autres sources de prix ( comme le prix d'un certain DEX ), pour s'assurer que l'écart est dans une plage acceptable.
Processus d'intégration simplifié du Feed Registry
Pour simplifier davantage le processus d'intégration et réduire les coûts de gouvernance, certains services Oracle Machine ont proposé un registre de flux. Cela peut être compris comme un agrégateur de PriceFeeds, ayant intégré plusieurs sources de prix d'actifs différents. En utilisant le registre de flux, les développeurs n'ont pas besoin de configurer un priceFeed séparé pour chaque actif, ils peuvent directement lire les données de prix de divers actifs via une interface unifiée.
Mécanisme d'agrégation de données multi-niveaux
Les services de prix d'Oracle Machine de haute qualité adoptent généralement un mécanisme d'agrégation de données en plusieurs niveaux, comprenant principalement trois niveaux : l'agrégation des sources de données, l'agrégation des opérateurs de nœuds et l'agrégation du réseau d'Oracle Machine.
Agrégation des sources de données : Les données de prix brutes proviennent de plusieurs plateformes d'échange centralisées et décentralisées. Des fournisseurs de services d'agrégation de données professionnels collectent ces données brutes et effectuent des calculs pondérés en fonction de facteurs tels que le volume des transactions et la liquidité, pour former des résultats d'agrégation préliminaires.
Agrégation des opérateurs de nœuds : chaque opérateur de nœud Oracle Machine obtient des données de prix à partir de plusieurs fournisseurs de services d'agrégation de données indépendants, prend la valeur médiane et élimine les valeurs aberrantes, formant ainsi le prix de ce nœud.
Agrégation du réseau Oracle Machine : au niveau du réseau entier, les données de tous les nœuds seront à nouveau agrégées, la méthode couramment utilisée consiste à prendre la médiane après avoir reçu un nombre prédéfini de réponses de nœuds.
Lorsque le prix final est mis à jour sur la chaîne, il doit également satisfaire à des conditions telles que le seuil de déviation ou le seuil de cœur. Ce mécanisme d'agrégation multi-niveaux améliore considérablement l'exactitude et la fiabilité des données.
Cependant, en raison de la présence d'un mécanisme de seuil de déviation, les mises à jour de prix de certaines Oracle Machine peuvent être relativement lentes, variant de quelques minutes à plusieurs heures. Cela les rend plus adaptées à des scénarios d'application moins sensibles aux mises à jour de prix, et peut ne pas convenir à tous les types d'applications décentralisées. Les développeurs doivent peser les avantages et les limites des services d'Oracle Machine lors de leur choix, en fonction des besoins spécifiques de l'application.