Riise de l'oracle

image

Les oracles de la blockchain résolvent le problème de la fourniture de données externes à la blockchain - mais nous avons encore besoin de savoir lesquels d'entre eux nous pouvons faire confiance.

Dans notre article sur le lancement du répertoire Waves Oracles , nous avons discuté de l'importance des oracles pour la blockchain. Les applications décentralisées ne peuvent pas accéder aux données en dehors de la blockchain. Ce problème est résolu en utilisant des oracles.

L'enjeu est assez simple. Si l'exécution d'une dApp nécessite des données externes, elles doivent être stockées sur la blockchain. Pour y parvenir, de petits programmes appelés oracles sont créés, qui accèdent aux données pertinentes du monde extérieur et les enregistrent dans la blockchain.

Selon le type de source de données extérieure, tous les oracles peuvent être divisés en trois catégories: oracles logiciels, oracles matériels et oracles humains.

Les logiciels oracles obtiennent des données sur Internet, telles que la température, les prix des biens et services ou les retards de vol et de train. Les informations proviennent de sources en ligne, telles que les API. Un oracle extrait les données pertinentes et les enregistre dans la blockchain. Vous pouvez apprendre comment créer un oracle logiciel simple ici .

Les oracles matériels tracent des objets du monde réel à l'aide d'appareils et de capteurs. Par exemple, une caméra vidéo calibrée pour franchir une ligne trace des véhicules entrant dans une certaine zone. Un oracle enregistre le fait d'entrer dans la zone de la blockchain. Sur la base des données de cet oracle, le script d'une dApp peut, par exemple, émettre un ticket et déduire des jetons du compte d'un propriétaire de véhicule.

Les oracles humains fonctionnent avec des données saisies par les humains et sont considérés comme les plus avancés car ils offrent une vue indépendante du résultat d'un événement.
Récemment, nous avons introduit un outil qui permet d'écrire des données dans la blockchain sous une spécification définie.

L'outil est très simple. Vous enregistrez une carte Oracle en remplissant la spécification et pouvez ensuite enregistrer les transactions de données dans la blockchain sous cette spécification. En savoir plus sur l'outil dans notre documentation .

image

Des outils et des interfaces standardisés de ce type facilitent la vie des développeurs et des utilisateurs de services basés sur la blockchain. Cet outil est particulièrement utile pour les oracles humains dans des domaines tels que l'enregistrement des certificats ou les droits d'auteur sur certains objets.

Cependant, les données fournies par oracles doivent être fiables. L'utilisation d'un seul oracle peut entraîner des problèmes. Il est essentiel de savoir si vous pouvez faire confiance à la source et si les données sont à jour. Sinon, il y a un risque qu'un oracle puisse tromper les utilisateurs en fournissant délibérément de fausses informations afin de réaliser un profit.

Prenons l'exemple d'un oracle fournissant des informations sur les résultats d'un événement sportif à un marché de prédiction décentralisé.

L'événement en question est un combat UFC 242 entre Khabib Nurmagomedov et Dustin Poirier. Selon les bookmakers, Nurmagomedov était le favori avec une cote de 1,24, correspondant à une probabilité de victoire de 76%. Poirier a obtenu une cote de 4,26 (22%). Les chances d'un match nul étaient de 51,0 (2%).

image

Un script accepte les paris sur les trois résultats jusqu'à ce qu'il reçoive des informations sur le résultat réel d'un oracle. Cette information est le seul déclencheur pour distribuer les gains.

Nous savons que Nurmagomedov a gagné le combat. Mais supposons qu'un propriétaire d'oracle malhonnête ait planifié une fraude et placé un pari substantiel sur le résultat le plus rentable, un nul. Une fois qu'une grande somme de paris a été accumulée, le propriétaire d'oracle malhonnête lance l'enregistrement de fausses informations sur un tirage dans la blockchain. Le script de l'échange décentralisé n'est pas en mesure de vérifier l'exactitude des données et ne peut que l'accepter. Par la suite, le script répartit les gains entre les parieurs en fonction des données de résultat qu'il a reçues.

Une fraude de ce type pourrait potentiellement être très rentable pour un créateur d'oracle malhonnête. Si le bénéfice escompté est supérieur aux revenus prévus d'un honnête oracle et que le risque de conséquences juridiques est faible, le risque de fraude pourrait augmenter considérablement.

Une façon de résoudre ce problème consiste à demander des données à plusieurs oracles et à établir un consensus sur les résultats obtenus.

Il pourrait y avoir plusieurs types de consensus:

  • Tous les oracles ont fourni les mêmes informations.
  • La majorité des oracles ont fourni les mêmes informations (2 sur 3, 3 sur 4, etc.).
  • La médiane des données des oracles est calculée (les résultats maximum et minimum pourraient être écartés avant de calculer la médiane).
  • Tous les oracles ont fourni les mêmes informations dans un écart préalablement convenu. Par exemple, les taux de change provenant de différentes sources pourraient différer de 0,00001, et obtenir exactement les mêmes données serait impossible.
  • Seuls les résultats uniques sont sélectionnés.

Appliquons cela à notre exemple. Si un type de consensus «3 sur 4» est utilisé, de fausses informations sur les résultats sur Nurmagomedov vs. Le combat de Poirier depuis un oracle n'aurait pas d'impact sur l'exécution du script. Il serait exécuté sur la base d'informations sur la victoire de Nurmagomedov, les gains étant distribués sur la base de ces données.
Cependant, si une personne malhonnête possédait 3 oracles sur 4, il serait toujours possible de truquer les données de résultat.

Pour maintenir l'intégrité des oracles, divers concepts de classement des oracles ou des amendes pour avoir fourni de fausses informations, ainsi que des incitations à fournir des informations exactes, pourraient être introduits. Mais aucun d'entre eux ne serait protégé du gréement de classement ou d'une majorité malhonnête.

Alors, avons-nous vraiment besoin de concepts plus compliqués, ou serait-il préférable d'avoir simplement un outil de consensus qui nous permet de prendre cinq oracles fournissant des données pertinentes - comme si sur une étagère de supermarché - définir le type de consensus et obtenir un résultat?

Par exemple, une application décentralisée a besoin de données de température Celsius. Nous trouverons quatre oracles fournissant ces données dans le répertoire oracle, définissons le type de consensus comme «médian» et faisons une demande.

Les oracles fournissent des valeurs de 18, 17, 19 et 21 degrés. Il existe une divergence apparente dans les données, et une différence de trois degrés pourrait avoir un impact sur l'exécution du script. Le service traite les données reçues et propose une médiane de 18,75 degrés, qui est envoyée au script de la dApp.

image

Dans tous les cas, la décision de faire confiance aux données d'un seul oracle ou de construire un consensus à partir de plusieurs oracles appartient à l'utilisateur.

Dans l'ensemble, les oracles de données sont un nouveau domaine. Ceci est actuellement à un stade où les utilisateurs peuvent avoir un impact sur la direction dans laquelle il se développera. Nous aimerions donc avoir de vos nouvelles. Dites-nous si vous pensez qu'un outil de consensus décrit ci-dessus est nécessaire et partagez vos idées sur les directions dans lesquelles le domaine oracle évolue.

Donnez votre avis dans les commentaires et dans notre groupe officiel Telegram .

Source: https://habr.com/ru/post/fr471962/


All Articles