Pour éviter les points de défaillance uniques, certains services d'Oracle Machine adoptent une conception distribuée. Prenons l'exemple d'un service fournissant le prix du BTC en dollars, une plateforme d'Oracle Machine bien connue a rassemblé 31 sources de prix pour offrir un service aux utilisateurs.
Le code source du contrat de cet agrégateur peut être consulté sur l'explorateur de blocs Ethereum. En appelant la méthode transmitters du contrat, vous pouvez voir tous les oracles hors chaîne inclus dans cet agrégateur.
Chaque oracle machine hors chaîne peut fournir des données de prix en appelant la méthode transmit, en réponse aux demandes des utilisateurs dans l'agrégateur. Ces oracles machines hors chaîne sont des comptes externes (EOA), qui fournissent non seulement des données de prix pour l'agrégateur BTC/USD, mais peuvent également fournir des données de prix pour d'autres agrégateurs ( comme ETH/USD).
Le processus de traitement des contrats sur la chaîne est généralement le suivant :
Tout d'abord, lisez l'état actuel du contrat et effectuez une série de vérifications.
Après vérification, effectuez quelques préparatifs.
Ensuite, utilisez ecrecover() pour vérifier chaque donnée de signature, en vérifiant si la valeur de hash correspond à la hash faite par _report. Vérifiez également que le rôle du signataire est Signer et vérifiez la répétabilité de la signature.
Enfin, vérifiez si les valeurs observées sont classées dans l'ordre. Sélectionnez la médiane median parmi les valeurs observées triées et assurez-vous que la médiane ne dépasse pas les deux seuils supérieur et inférieur. S'il n'y a pas de problème, enregistrez la réponse de l'oracle machine dans s_transmissions. De plus, vérifiez également la réponse.
Ici, après une série d'appels, on finira par appeler la méthode validate du contrat de l'oracle de prix, l'essentiel étant de comparer si l'écart de prix donné par les deux oracles est dans une plage acceptable.
Registre d'alimentation
Pour améliorer la flexibilité et réduire les coûts de gouvernance, certaines plateformes ont lancé le Feed Registry. Il peut être compris comme un agrégateur de PriceFeeds, ayant déjà agrégé plusieurs priceFeeds. Avec cela, les utilisateurs n'ont pas besoin de configurer eux-mêmes les priceFeeds, ils peuvent directement lire les données de prix via le Feed Registry.
Mécanisme de prix
Le prix de l'Oracle Machine est généralement obtenu par l'agrégation de données à plusieurs niveaux, comprenant principalement l'agrégation des sources de données, l'agrégation des opérateurs de nœuds et l'agrégation du réseau Oracle Machine.
Les données de prix les plus brutes proviennent principalement des grandes plateformes d'échange centralisées et décentralisées. Certains fournisseurs de services de collecte de données spécialisés recueillent ces données de prix brutes à partir de ces plateformes, puis les traitent et les intègrent, par exemple en calculant des poids en fonction du volume de transactions, de la liquidité et des décalages horaires. C'est l'agrégation des sources de données de premier niveau.
La deuxième couche est l'agrégation des opérateurs de nœuds. Chaque opérateur de nœud est responsable de l'exécution du logiciel principal, d'obtenir des données de prix à partir de plusieurs fournisseurs de services d'agrégation de données indépendants, et de prendre la médiane, en éliminant les valeurs aberrantes et les temps d'arrêt de l'API.
La dernière couche est l'agrégation de l'ensemble du réseau d'Oracle Machine, la méthode courante consiste à prendre la médiane des données lorsque le nombre de nœuds de réponse atteint une valeur prédéfinie.
Les mises à jour de prix nécessitent généralement de satisfaire l'un des deux paramètres de déclenchement, soit le seuil de déviation soit le seuil de battement. Les valeurs de ces deux paramètres peuvent varier selon les sources de prix.
Dans l'ensemble, certains célèbres Oracle Machine de prix sont faciles à intégrer et présentent une sécurité relativement élevée, mais en raison d'un seuil de déviation dans le mécanisme de mise à jour des prix, les mises à jour sont lentes, ce qui les rend adaptés aux applications qui ne sont pas très sensibles aux mises à jour des prix. C'est aussi sa limite, car il ne peut pas être utilisé dans tous les scénarios.
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.
21 J'aime
Récompense
21
8
Partager
Commentaire
0/400
CryptoFortuneTeller
· 08-05 03:20
Est-ce que 31 sources suffisent ? Je suis un peu inquiet.
Voir l'originalRépondre0
CountdownToBroke
· 08-05 02:38
Cet objet peut-il réellement éviter d'être coupé les coupons ?
Voir l'originalRépondre0
WealthCoffee
· 08-02 23:24
C'est intéressant d'être distribué, enfin je n'ai plus à m'inquiéter du regard des autres.
Voir l'originalRépondre0
HashBrownies
· 08-02 07:13
31 sources de données, j'ai toujours l'impression que ce n'est pas suffisant~
Voir l'originalRépondre0
RektDetective
· 08-02 07:08
Regarder des institutions se déshabiller toute la journée, est-ce que ça suffit enfin ?
Voir l'originalRépondre0
GasFeeCrier
· 08-02 07:00
Bon sang, ça donne le vertige, petit prince du gas
Voir l'originalRépondre0
NFTArchaeologis
· 08-02 06:57
Le code off-chain se lit avec une élégance semblable à celle des caractères scellés.
Voir l'originalRépondre0
MEV_Whisperer
· 08-02 06:56
À quoi bon agréger autant si ce n'est toujours pas précis ?
Système de prix distribué Oracle Machine : agrégation multi-niveaux et optimisation du registre de flux
Système de prix distribué Oracle Machine
Pour éviter les points de défaillance uniques, certains services d'Oracle Machine adoptent une conception distribuée. Prenons l'exemple d'un service fournissant le prix du BTC en dollars, une plateforme d'Oracle Machine bien connue a rassemblé 31 sources de prix pour offrir un service aux utilisateurs.
Le code source du contrat de cet agrégateur peut être consulté sur l'explorateur de blocs Ethereum. En appelant la méthode transmitters du contrat, vous pouvez voir tous les oracles hors chaîne inclus dans cet agrégateur.
Chaque oracle machine hors chaîne peut fournir des données de prix en appelant la méthode transmit, en réponse aux demandes des utilisateurs dans l'agrégateur. Ces oracles machines hors chaîne sont des comptes externes (EOA), qui fournissent non seulement des données de prix pour l'agrégateur BTC/USD, mais peuvent également fournir des données de prix pour d'autres agrégateurs ( comme ETH/USD).
Le processus de traitement des contrats sur la chaîne est généralement le suivant :
Tout d'abord, lisez l'état actuel du contrat et effectuez une série de vérifications.
Après vérification, effectuez quelques préparatifs.
Ensuite, utilisez ecrecover() pour vérifier chaque donnée de signature, en vérifiant si la valeur de hash correspond à la hash faite par _report. Vérifiez également que le rôle du signataire est Signer et vérifiez la répétabilité de la signature.
Enfin, vérifiez si les valeurs observées sont classées dans l'ordre. Sélectionnez la médiane median parmi les valeurs observées triées et assurez-vous que la médiane ne dépasse pas les deux seuils supérieur et inférieur. S'il n'y a pas de problème, enregistrez la réponse de l'oracle machine dans s_transmissions. De plus, vérifiez également la réponse.
Ici, après une série d'appels, on finira par appeler la méthode validate du contrat de l'oracle de prix, l'essentiel étant de comparer si l'écart de prix donné par les deux oracles est dans une plage acceptable.
Registre d'alimentation
Pour améliorer la flexibilité et réduire les coûts de gouvernance, certaines plateformes ont lancé le Feed Registry. Il peut être compris comme un agrégateur de PriceFeeds, ayant déjà agrégé plusieurs priceFeeds. Avec cela, les utilisateurs n'ont pas besoin de configurer eux-mêmes les priceFeeds, ils peuvent directement lire les données de prix via le Feed Registry.
Mécanisme de prix
Le prix de l'Oracle Machine est généralement obtenu par l'agrégation de données à plusieurs niveaux, comprenant principalement l'agrégation des sources de données, l'agrégation des opérateurs de nœuds et l'agrégation du réseau Oracle Machine.
Les données de prix les plus brutes proviennent principalement des grandes plateformes d'échange centralisées et décentralisées. Certains fournisseurs de services de collecte de données spécialisés recueillent ces données de prix brutes à partir de ces plateformes, puis les traitent et les intègrent, par exemple en calculant des poids en fonction du volume de transactions, de la liquidité et des décalages horaires. C'est l'agrégation des sources de données de premier niveau.
La deuxième couche est l'agrégation des opérateurs de nœuds. Chaque opérateur de nœud est responsable de l'exécution du logiciel principal, d'obtenir des données de prix à partir de plusieurs fournisseurs de services d'agrégation de données indépendants, et de prendre la médiane, en éliminant les valeurs aberrantes et les temps d'arrêt de l'API.
La dernière couche est l'agrégation de l'ensemble du réseau d'Oracle Machine, la méthode courante consiste à prendre la médiane des données lorsque le nombre de nœuds de réponse atteint une valeur prédéfinie.
Les mises à jour de prix nécessitent généralement de satisfaire l'un des deux paramètres de déclenchement, soit le seuil de déviation soit le seuil de battement. Les valeurs de ces deux paramètres peuvent varier selon les sources de prix.
Dans l'ensemble, certains célèbres Oracle Machine de prix sont faciles à intégrer et présentent une sécurité relativement élevée, mais en raison d'un seuil de déviation dans le mécanisme de mise à jour des prix, les mises à jour sont lentes, ce qui les rend adaptés aux applications qui ne sont pas très sensibles aux mises à jour des prix. C'est aussi sa limite, car il ne peut pas être utilisé dans tous les scénarios.