Le nouveau Sui Weather Oracle fournit aux constructeurs des données météorologiques pour plus de 1 000 villes à travers le monde et sert de générateur aléatoire unique, adapté aux jeux et aux applications de paris nécessitant un résultat aléatoire fiable. Composé d'un contrat intelligent basé sur Sui et d'un service backend extrayant les données météorologiques de l'API OpenWeather, n'importe qui peut intégrer des données météorologiques dans son application.

Le SUI Weather Oracle fournit des informations telles que la tempĂ©rature, l'humiditĂ© et le vent pour chacune de ses villes prises en charge. L'oracle peut ĂȘtre utilisĂ© par d'autres contrats ou applications intelligents qui ont besoin d'informations mĂ©tĂ©orologiques fiables et dĂ©centralisĂ©es Ă  diverses fins, telles que les voyages, les assurances, l'agriculture, les jeux de hasard ou les jeux.

Sui Weather Oracle permet le suivi météorologique et d'autres applications utilisant les données de l'API OpenWeather.

Cependant, utiliser la mĂ©tĂ©o pour son caractĂšre alĂ©atoire prĂ©sente un cas d’utilisation intrigant. La mĂ©tĂ©o est l’un des phĂ©nomĂšnes naturels les plus imprĂ©visibles et les plus complexes. Les prĂ©visionnistes font un travail admirable en prĂ©disant la pluie ou le ciel ensoleillĂ©, pour la plupart, mais les dĂ©tails, tels que les tempĂ©ratures spĂ©cifiques ou la vitesse du vent, sont au-delĂ  de la science actuelle.

En tant que concept fondamental dans de nombreux domaines scientifiques, mathĂ©matiques et techniques, le hasard peut ĂȘtre utilisĂ© pour gĂ©nĂ©rer des clĂ©s cryptographiques sĂ©curisĂ©es, tester des hypothĂšses ou simuler des systĂšmes complexes. Cependant, gĂ©nĂ©rer un vĂ©ritable caractĂšre alĂ©atoire n’est pas facile, car la plupart des processus physiques ou informatiques sont dĂ©terministes ou biaisĂ©s d’une maniĂšre ou d’une autre. L’utilisation de donnĂ©es mĂ©tĂ©orologiques comme entrĂ©e Oracle fournit des sorties alĂ©atoires uniformĂ©ment distribuĂ©es et indĂ©pendantes de toute sortie prĂ©cĂ©dente.

Données Oracle dans les applications

Les oracles sur Sui et d'autres blockchains servent de conduits aux donnĂ©es hors chaĂźne, notamment les rĂ©sultats sportifs, les cours des actions et la mĂ©tĂ©o. L'affichage de ces donnĂ©es directement dans une application, l'utilisation la plus Ă©vidente, permet aux constructeurs de crĂ©er des outils de gestion de portefeuille d'actions, des suivis mĂ©tĂ©orologiques et des classements de football en temps rĂ©el. L’utilisation des donnĂ©es de cette maniĂšre peut bien sĂ»r devenir plus complexe, avec par exemple les applications utilisant les rĂ©sultats sportifs pour informer les ligues fantastiques.

Les jeux peuvent ĂȘtre basĂ©s directement sur des donnĂ©es Oracle. Par exemple, un oracle peut fournir les cotes et les rĂ©sultats de divers paris sur des compĂ©titions telles que des matchs sportifs, des Ă©lections politiques ou des tirages de loterie. Les joueurs peuvent ensuite parier sur les rĂ©sultats en fonction des cotes fournies par l'oracle.

Les choses deviennent plus intĂ©ressantes lorsque les constructeurs utilisent des oracles offrant des donnĂ©es imprĂ©visibles pour gĂ©nĂ©rer du hasard. Par exemple, un oracle peut utiliser des Ă©vĂ©nements du monde rĂ©el, tels que des donnĂ©es mĂ©tĂ©orologiques, des rĂ©sultats sportifs ou le cours des actions, pour crĂ©er des rĂ©sultats alĂ©atoires pour un jeu. Alternativement, un oracle peut utiliser des mĂ©thodes cryptographiques, telles que des fonctions de hachage ou des signatures numĂ©riques, pour produire des nombres alĂ©atoires sĂ©curisĂ©s et prouvables. Le fait que les donnĂ©es Oracle proviennent d’une source vĂ©rifiable indĂ©pendante de l’application rend les rĂ©sultats alĂ©atoires dignes de confiance.

Les donnĂ©es mĂ©tĂ©orologiques peuvent ĂȘtre utilisĂ©es comme source de hasard pour dĂ©terminer les rĂ©sultats des actions des personnages dans un jeu. (Source de l'image : RPGMaker)

Le hasard basĂ© sur des donnĂ©es imprĂ©visibles provenant d’un oracle pourrait ĂȘtre intĂ©grĂ© aux mĂ©canismes de jeu. Par exemple, dans un jeu de rĂŽle, un oracle peut dĂ©terminer le succĂšs ou l'Ă©chec d'une action d'un personnage, comme lancer un sort, pirater un ordinateur ou persuader un PNJ. L'oracle peut Ă©galement affecter le monde du jeu, comme changer la mĂ©tĂ©o, faire apparaĂźtre des ennemis ou dĂ©clencher des Ă©vĂ©nements. Le jeu peut utiliser les donnĂ©es de l'oracle pour crĂ©er un caractĂšre alĂ©atoire juste et cohĂ©rent qui n'est pas influencĂ© par le dĂ©veloppeur du jeu ou le joueur.

L’Oracle mĂ©tĂ©orologique Sui

Oracles permettra une nouvelle génération d'applications sur Sui, reliant les données du monde réel à sa plate-forme haute performance. Compte tenu de l'accessibilité de l'API OpenWeather et de l'utilité de ses données, un oracle météo constitue un bon complément à Sui.

Cas d'utilisation

Le Sui Weather Oracle est utile pour de nombreuses applications nécessitant des données météorologiques, telles que :

  • CaractĂšre alĂ©atoire : les donnĂ©es mĂ©tĂ©orologiques peuvent ĂȘtre utilisĂ©es comme source de caractĂšre alĂ©atoire Ă  diverses fins, telles que gĂ©nĂ©rer des nombres alĂ©atoires, sĂ©lectionner des gagnants ou crĂ©er des NFT uniques. Par exemple, un gĂ©nĂ©rateur de nombres alĂ©atoires. peut utiliser la tempĂ©rature, l’humiditĂ© ou la vitesse du vent d’un endroit spĂ©cifique Ă  un moment prĂ©cis comme graine.

  • Paris et jeux : les applications peuvent utiliser les donnĂ©es Sui Weather Oracle pour activer les paris sur les prĂ©visions mĂ©tĂ©orologiques, les jeux sur le thĂšme de la mĂ©tĂ©o ou les rĂ©compenses basĂ©es sur la mĂ©tĂ©o. Par exemple, un jeu pourrait permettre aux utilisateurs de parier sur la mĂ©tĂ©o d'une ville, ou une application pourrait proposer aux utilisateurs des NFT basĂ©s sur la mĂ©tĂ©o de diffĂ©rents endroits.

  • Autres cas d'utilisation : les applications destinĂ©es Ă  l'assurance, aux voyages, Ă  l'Ă©ducation ou Ă  la recherche peuvent utiliser des donnĂ©es mĂ©tĂ©orologiques. Par exemple, les applications pourraient prendre en compte les donnĂ©es mĂ©tĂ©orologiques pour calculer le risque de catastrophe naturelle, planifier un itinĂ©raire de voyage, enseigner aux Ă©tudiants les conditions mĂ©tĂ©orologiques ou aider Ă  mettre en place des expĂ©riences scientifiques.

Structure

Le Sui Weather Oracle, qui fournit des informations météorologiques à jour pour 1 000 villes à travers le monde, se compose de trois éléments : un service externe, un service interne et un contrat intelligent. Le service externe, l'API OpenWeather, fournit des données météorologiques actuelles provenant de diverses sources. Le service interne est le back-end de Weather Oracle, qui récupÚre les données météorologiques de l'API OpenWeather toutes les 10 minutes et met à jour les conditions météorologiques pour chaque ville. Le contrat intelligent est le contrat Sui Weather Oracle, qui stocke les données météorologiques sur la blockchain Sui et permet aux utilisateurs d'y accéder de maniÚre sécurisée et transparente. Les utilisateurs peuvent également exploiter les données météorologiques pour diverses applications décentralisées qui dépendent de la météo, telles que les jeux.

Bénéficier de remises sur le stockage

Sui Weather Oracle atténue le coût de stockage de ses données en temps réel sur le réseau grùce au mécanisme de remise de stockage. Sui prend en charge le stockage en chaßne dans son modÚle d'infrastructure et de tokenomics en ajoutant des frais de stockage à ses frais de gaz. Le fonds créé à partir des frais de stockage permet de rembourser les opérateurs de réseaux pour la maintenance du matériel permettant de stocker les données et de traiter les transactions. Afin de garder sous contrÎle la quantité de données en chaßne, la suppression des données en chaßne donne lieu à une remise sur les fonds de stockage.

Le Sui Weather Oracle stocke et met Ă  jour les donnĂ©es mĂ©tĂ©orologiques sur la blockchain. L'administrateur paie des frais uniques pour crĂ©er la liste initiale des objets CityWeatherOracle et reçoit une remise pour la mise Ă  jour des donnĂ©es mĂ©tĂ©orologiques de chaque ville. La remise est proportionnelle Ă  la quantitĂ© de donnĂ©es mises Ă  jour et Ă  la frĂ©quence des mises Ă  jour. De cette façon, l’administrateur peut stocker et mettre Ă  jour les donnĂ©es mĂ©tĂ©orologiques sur la blockchain Ă  faible coĂ»t.

Tirer parti de l'affichage des objets Sui

Le Sui Weather Oracle utilise la norme Sui Object Display pour mettre Ă  jour dynamiquement l'icĂŽne de chaque ville en fonction des conditions mĂ©tĂ©orologiques actuelles, affichant des nuages ​​de pluie ou un soleil, par exemple. Le standard Sui Object Display est un moteur de template qui permet la gestion onchain de l'affichage offchain pour tout type d'objet. Il utilise une chaĂźne de modĂšle qui peut ĂȘtre remplacĂ©e par les donnĂ©es de l'objet, telles que l'identifiant mĂ©tĂ©o de la ville. L'affichage hors chaĂźne est gĂ©rĂ© par un service back-end qui fournit une icĂŽne pour chacune des villes prises en charge Ă  l'explorateur Sui. L'icĂŽne est choisie parmi un ensemble prĂ©dĂ©fini d'icĂŽnes qui reprĂ©sentent diffĂ©rentes conditions mĂ©tĂ©orologiques, telles que ensoleillĂ©, nuageux, pluvieux et enneigĂ©.

La norme Sui Object Display peut ĂȘtre exploitĂ©e pour servir des icĂŽnes reprĂ©sentant diffĂ©rentes conditions mĂ©tĂ©orologiques. (Image de coolvector sur Freepik) Contrat intelligent Sui Weather Oracle

Le contrat intelligent Sui Weather Oracle fournit des données météorologiques historiques et en temps réel pour 1 000 emplacements dans le monde et prend en charge la création de NFT météorologiques basés sur les données météorologiques d'une ville. Le contrat intelligent utilise également le standard Sui Object Display, permettant l'affichage dynamique et personnalisable des données météorologiques et des NFT météo sur la blockchain. Le contrat intelligent a quatre fonctions principales :

ajouter_ville

, remove_city, update et mint.

Le

oracle :: météo

Le module définit les éléments suivants :

Cap Administrateur

, une structure qui représente la capacité d'administrateur du propriétaire d'Oracle.

struct AdminCap a la clé, stocke { id : UID }

MÉTÉO

, une structure qui configure un Ă©diteur.

struct WEATHER a drop {}

MétéoOracle

, une structure, reprĂ©sente l'oracle lui-mĂȘme. Il contient des champs identifiant, adresse, nom et description qui stockent respectivement l'identifiant de l'oracle, l'adresse, le nom et la description du propriĂ©taire.

struct WeatherOracle a la clé {     id : UID,     adresse : adresse,     nom : chaßne,     description : chaßne, }

VilleMétéoOracle

, une structure qui reprĂ©sente les donnĂ©es mĂ©tĂ©orologiques d'une ville spĂ©cifique. Il contient des champs id, geoname_id, nom, pays, latitude, positive_latitude, longitude, positive_longitude, Weather_id, temp, pression, humiditĂ©, visibilitĂ©, vent_vitesse, vent_deg, vent_gust, nuages ​​et dt qui stockent l'identifiant unique de la ville, l'identifiant de gĂ©onom, le nom. , pays, latitude, longitude, identifiant mĂ©tĂ©o, tempĂ©rature, pression, humiditĂ©, visibilitĂ©, vitesse du vent, direction du vent, rafale de vent, nĂ©bulositĂ© et horodatage respectivement.

struct CityWeatherOracle a la clé, stocker {     id : UID,     geoname_id : u32,     name : String,     country : String,     latitude: u32,     positive_latitude: bool,     longitude : u32,     positive_longitude: bool,     weather_id : u16,      température : u32,    pression : u32 ,     humidité : u8,     visibilité : u16,     vitesse_vent : u16,     deg_vent : u16,     rafale_vent : Option<u16>,     nuages : u8,     dt : u32 }

Un

chaleur

fonction qui initialise le contrat lors du déploiement, créant une nouvelle instance de WeatherOracle et la partageant publiquement, et créant une nouvelle instance d'AdminCap et la transférant à l'expéditeur.

fun init(otw : WEATHER, ctx : &mut TxContext) {     package::claim_and_keep(otw, ctx); let cap = AdminCap { id: object::new(ctx) }; transfer::share_object(WeatherOracle {         id: object::new(ctx),         adresse : tx_context::sender(ctx),         nom : string::utf8(b"SuiMeteo"),         description : string::utf8(b"A) Oracle météo pour publier des mises à jour météorologiques (température, pression, humidité, visibilité, mesures du vent et état des nuages) pour les grandes villes du monde. Actuellement, les données sont extraites de https://openweathermap.org et fournissent les meilleures informations disponibles, mais. il ne garantit pas son exactitude, son exhaustivité, sa fiabilité, son adéquation ou sa disponibilité. Utilisez-le à vos propres risques et discrétion."),    } ); transfer::public_transfer(cap, tx_context::sender(ctx)); }

Le

ajouter_ville

fonction publique, qui permet au propriétaire d'AdminCap d'ajouter une nouvelle ville au service Oracle en fournissant son geoname_ID, son nom, son pays, sa latitude et sa longitude. La fonction crée une nouvelle instance de CityWeatherOracle avec les données météorologiques par défaut et l'ajoute à l'oracle en tant que champ dynamique, en utilisant le geoname_ID comme clé.

public fun add_city(     _ : &AdminCap,      oracle : &mut WeatherOracle,       geoname_id : u32,     name: String,     country: String,     latitude: u32,     positive_latitude: bool,     longitude : u32,     positive_longitude: bool     ctx, : &mut TxContext ) {     dof:: add(&mut oracle.id, geoname_id,          CityWeatherOracle {             id: object::new(ctx),             geoname_id,             nom,              pays,              latitude,             latitude_positive,              longitude,               longitude_positive,             weather_id : 0,             temp : 0,             pression : 0,             humide ville : 0 ,             visibilité : 0,             vitesse du vent : 0,             wind_deg : 0,             wind_gust: option::none(),             nuages : 0,             dt : 0        }     ); }

Le

supprimer_ville

fonction publique, qui permet au propriétaire d'AdminCap de supprimer une ville existante du service Oracle en fournissant son geoname_ID. La fonction supprime l'instance correspondante de CityWeatherOracle des champs dynamiques de l'oracle et supprime l'objet.

public fun remove_city(_ : &AdminCap, oracle : &mut WeatherOracle, geoname_id : u32) {     let CityWeatherOracle { id, geoname_id : _, nom : _, pays : _, latitude : _, positive_latitude : _, longitude : _, positive_longitude : _ , Weather_id : _, temp : _, pression : _, humidité : _, visibilité : _, vitesse_vent : _, vent_deg : _, vent_gust : _, nuages : _, dt : _ } = dof::remove(&mut oracle. id, geoname_id); objet :: supprimer (identifiant); }

Le

mise Ă  jour

fonction publique, qui permet au propriétaire de l'oracle de mettre à jour les données météorologiques d'une ville existante en fournissant son geoname_ID et les nouvelles données météorologiques. La fonction mute l'instance correspondante de CityWeatherOracle avec les nouvelles données météorologiques.

mise à jour publique amusante (     _ : &AdminCap,     oracle : &mut WeatherOracle,     geoname_id : u32,     weather_id : u16,     temp: u32,     pression : u32,     humidité : u8,     visibilité : u16,     wind_speed : u16,     wind_ deg : u16,    wind_gust : Option<u16 >,     nuages : u8,     dt : u32 ) {     let city_weather_oracle_mut = dof::borrow_mut<u32, CityWeatherOracle>(&mut oracle.id, geoname_id); city_weather_oracle_mut.weather_id = météo_id; city_weather_oracle_mut.temp = temp; city_weather_oracle_mut.pression = pression ; city_weather_oracle_mut.humidity = humidité ; city_weather_oracle_mut.visibility = visibilité ; city_weather_oracle_mut.wind_speed = vent_speed; city_weather_oracle_mut.wind_deg = vent_deg; city_weather_oracle_mut.wind_gust = vent_gust; city_weather_oracle_mut.clouds = nuages ; city_weather_oracle_mut.dt = dt; }

Intégration de l'Oracle Météo Sui

L'utilisation de Sui Weather Oracle dans un projet Move nécessite de l'ajouter en tant que dépendance dans le fichier du projet.

DĂ©placer.toml

déposer:

[package] name = "..."version = "..." [dépendances] Sui = { git = "<https://github.com/MystenLabs/sui.git>", subdir = "crates/sui- framework/packages/sui-framework", rev = "..." } oracle = { git = "<https://github.com/MystenLabs/apps>", subdir = "weather-oracle", rev = "db04fbd17d6ba91ade45c32f609b949fb47d209b " } [adresses] ... oracle = "0x8378b3bd39931aa74a6aa3a820304c1109d327426e4275183ed0b797eb6660a8"

La création de cette dépendance permet aux constructeurs d'importer le

oracle :: météo

module dans le code Move et utilisez Weather Oracle et ses fonctions. Le Sui Weather Oracle fournit des données météorologiques en temps réel, telles que la température, l'humidité et la vitesse du vent, pour différentes villes du monde. La fonction city_weather_oracle_temp récupÚre la température d'une ville en Kelvin multipliée par 1 000, compte tenu de son geoname_ID.

Par exemple, le code suivant récupÚre la température actuelle de Paris, France (2988507) :

utilisez oracle::weather::{WeatherOracle} ; fun get_temp(weather_oracle: &WeatherOracle): u32 {     let geoname_id = 2988507; // Paris, France     oracle::weather::city_weather_oracle_temp(weather_oracle, geoname_id) }

Relier les données à Sui

L’essor du Big Data au cours des derniĂšres dĂ©cennies a crĂ©Ă© de vastes rĂ©fĂ©rentiels reprĂ©sentant toutes sortes de phĂ©nomĂšnes et d’activitĂ©s du monde rĂ©el, des courants ocĂ©aniques aux flux de circulation Ă  Manhattan. L'utilisation responsable de ces donnĂ©es donne naissance Ă  des applications qui ont un impact positif sur la vie des gens, qu'il s'agisse d'aider Ă  prĂ©dire le danger d'incendie de forĂȘt ou de rendre disponibles des billets de concert populaires dans une distribution Ă©quitable.

La diffusion des oracles sur Sui augmentera la pertinence des applications dans la vie quotidienne des gens, faisant du réseau un élément indispensable de l'infrastructure numérique moderne.