La technologie Les crypto-monnaies alimentées par la blockchain ont acquis la planète car il s'agit de la forme de monnaie la plus sûre et la plus décentralisée, aucune banque n'agissant en tant qu'intermédiaire. Le World Wide Web étant la seule ressource pour le trading de crypto-monnaie, les échanges de crypto-monnaie basés sur le Web produisent toujours beaucoup de données pour les entreprises de conseil en blockchain . Ces informations sont accessibles au public pour tous - attendant patiemment d'être utilisées pour les investissements prévus.
Cependant, les prix d'échange des crypto-monnaies restent très volatils en raison de leur nature basée sur le volume des échanges. Lorsque cela soulève des questions sur la validité des crypto-monnaies, à l'heure actuelle, cela crée également des opportunités commerciales pour:
- Agrégateurs de données,
- Analystes d'échange de crypto-monnaie
- et sociétés de conseil en blockchain
Leur tâche, suivre et examiner les cours de change des crypto-monnaies afin de prédire ses performances en bourse. Dans leurs efforts pour innover leur entreprise et convertir les investisseurs en crypto-monnaie en clients, les analystes boursiers s'appuient fréquemment sur des applications Web qui regroupent automatiquement les données de ces transactions et les traitent sous une forme exploitable.
Le CISIN a récemment eu l'opportunité de travailler dans une société de crypto-monnaie renommée basée aux États-Unis, une entreprise comparable d'évaluation des taux de change de crypto-monnaie. Notre collaboration a suivi avec une application Web basée sur SailsJS capable d'agréger les informations d'échange de 20 bourses de crypto-monnaie différentes et de créer des index de marché sur liste blanche pour valoriser l'industrie de la crypto-monnaie.
Avec cet article, nous visons à partager les aventures de nos programmeurs JavaScript avancés ensemble:
- Utilisation du framework SailsJS pour créer une application NodeJS
- Intégration des données d'échange de crypto-monnaie à l'aide de 20 services tiers différents
- Les défis auxquels ils ont été confrontés au cours du cycle de vie du développement
Si vous envisagez de créer un programme net d'agrégateur d'informations sur les crypto-monnaies, lisez la suite pour savoir exactement à quoi ressemble le processus d'évolution pour obtenir un programme similaire.
Commençons par jeter un œil aux caractéristiques essentielles de cette application web que nous avons développée.
Principales caractéristiques de l'agrégateur de données de crypto-monnaie
Pour comprendre les fonctionnalités clés de cette application, il est essentiel d'avoir une compréhension fondamentale d'un échange de crypto-monnaie et des informations générées à partir de celui-ci.
Que savons-nous de l'échange de crypto-monnaie?
L'échange de crypto-monnaie fonctionne de la même manière que nos bureaux de change fiduciaires dans une banque ou dans un aéroport. Vous entrez et échangez votre argent natif avec tout autre argent. Pour les crypto-monnaies, ces échanges sont effectués en ligne sur un site portail Web où vous pouvez convertir votre crypto-monnaie en d'autres personnes (par exemple: Bitcoin en Ethereum) ou la changer en une devise fiduciaire (par exemple: Bitcoin en USD).
Il existe plusieurs échanges de crypto-monnaie qui peuvent être trouvés sur le net dans le monde entier, quelques échanges majeurs comprennent GDAX, Bittrex, CoinEgg et Binance.
Le simple fait que chaque marché de crypto-monnaie ait son propre taux de change, il n'est pas facile pour les revendeurs de crypto-monnaie de déduire l'indicateur du secteur d'une monnaie ou à quel échange il peut obtenir les meilleurs taux.
C'est là que l'application Internet Totalcryptos aide les traders en récupérant des informations d'échange dans 20 bourses de crypto-monnaie différentes et en générant un indice de marché de crypto-monnaie.
Méthode de récupération des données d'échange de devises
L'approche la plus fiable pour importer légalement des informations provenant de toute fourniture tierce consiste à utiliser leurs API. Étant des échanges d'argent, les API sont généralement disponibles car elles offrent non seulement des données sur le taux de change de l'argent, mais fournissent également la capacité d'effectuer des échanges via leur API.
Pour notre cas d'utilisation, nous n'avions besoin que des informations en temps réel et du taux de change historique des crypto-monnaies.
Au fur et à mesure que les données d'échange de devises se mettent à jour en temps réel toutes les quelques minutes, nous avons constaté qu'un travail CRON personnalisé était chargé de déclencher la requête PULL de données à partir de l'API toutes les quelques minutes.
Liste blanche des données d'échange brutes à l'aide de visualisations
Les données agrégées sont ensuite utilisées pour créer nos propres ensembles de données en calculant les informations d'échange moyennes par argent. Les données extraites sont évaluées et évaluées sous forme de tableau et de graphique:
i) Affichage des données sous forme de tableau
Affichage d'une liste de crypto-monnaies élevées reposant sur les principaux acteurs de la crypto-monnaie sur le marché USD, des principaux acteurs de la crypto-monnaie sur le marché de la crypto-monnaie et éventuellement d'une liste complète de toutes les crypto-monnaies.
Toutes les différentes colonnes que vous voyez dans la capture d'écran suivante sont extraites de l'API du fournisseur d'échange de données, sauf que les graphiques.
ii) Affichage des données avec des graphiques
Nous avons également incorporé deux bibliothèques de graphiques distinctes: les graphiques C3 et les graphiques Sparkline pour représenter la fonctionnalité de crypto-monnaie individuelle.
Les graphiques C3 ont été utilisés pour afficher la fluctuation du prix d'achat du taux de change d'une crypto-monnaie.
Des graphiques Sparkline ont été utilisés pour montrer l'indice TC100 (coût des 100 principales devises cryptographiques par capitalisation boursière) et la façon dont il a varié tout au long de l'après-midi.
Développement d'une API REST personnalisée
En fin de compte, tous les indicateurs de marché en liste blanche générés seront également accessibles en tant que flux d'informations JSON via une API REST personnalisée. L'API REST de Total Cryptos donne accès aux informations de leur base de données, car un flux JSON permet à tout le monde de recréer une plate-forme identique avec n'importe quelle plate-forme de développement Internet en utilisant les données de Total Cryptos.
Maintenant que nous avons une brève vision de tout ce que toutes les fonctionnalités ont été construites, regardons la pile technologique qui a été utilisée.
Pile technologique: un agrégateur de données de crypto-monnaie
Le programme d'agrégation de données a été construit en utilisant SailsJS (une trame NodeJS basée sur MVC). Le modèle frontal a été construit dans Bootstrap et a été configuré dans Sails Views à l'aide de moteurs de modèle EJS (Embedded JavaScript).
À la fin de la base de données, les opérations CRUD ont été gérées à l'aide de MySQL.
SailsJS: Framework NodeJS
SailsJS est l'un de ces très rares frameworks NodeJS qui utilise une version de développement MVC. Cela nous a permis de maintenir la logique du programme séparée du code de l'interface utilisateur et de gérer les connexions entre eux dans une couche différente.
En plus de Sails, JS offre la possibilité de basculer la couche de stockage via son ORM Waterline avec lequel nous pourrions utiliser Mysql et ses méthodes puissantes de production et d'optimisation des requêtes de base de données.
La seule vraie raison d'utiliser SailsJS était qu'il a coordonné le flux de travail de développement et d'installation sans couper les coins ronds sur la fonctionnalité de l'application.
EJS: modèles JavaScript intégrés
Outre le fait qu'EJS est votre moteur de template officiel pris en charge par SailsJS, nous l'avons utilisé en raison de sa propre syntaxe HTML établie. Même si nous avions la possibilité d'utiliser divers frameworks d'interface utilisateur avancés tels que Angular ou Jade, EJS est tout simplement le vocabulaire le plus approprié pour la création de modèles frontaux chez SailsJS.
Nous pourrions utiliser un modèle Bootstrap prêt à l'emploi pour lancer l'avancement du backend et en un rien de temps, nous avons écrit le code du contrôleur pour afficher les données dans les points de vue.
Défis rencontrés:
Préserver l'uniformité des informations d'échange
L'ensemble de l'application de crypto a été programmé pour récupérer les données d'échange dans 20 fournisseurs d'échange de crypto-monnaie différents. Le problème avec l'extraction d'informations dans une application à partir de différentes sources est le fait que chaque support Web d'échange de données a sa propre terminologie, sa structure de flux de données et sa nature d'appel.
Cela rend les informations brutes non homogènes et inutilisables car nos perspectives frontales ne peuvent accepter que des informations sous une forme linéaire. Pour cette raison, il n'est jamais simple de récupérer les informations et de les enregistrer dans la base de données.
Notre solution:
Pour surmonter ce défi, nous avons commencé par créer notre propre tableau qui traitera les données de tous les échanges. Nous avons défini notre propre structure qui sera utilisée par différentes vues sur le site.
Ensuite, pour conserver les informations de crypto-monnaie extraites à l'intérieur du tableau en fonction de notre disposition, nous avons créé plusieurs instances SWITCH, chaque cas étant alimenté en utilisant une boucle foreach pour convertir les données brutes en la structure de notre tableau.
La boucle Foreach traite la conversion pour chaque variable fournie par le service Internet d'échange particulier et à la fin du cas Switch, nous avons créé un tableau personnalisé d'informations d'échange qui est linéaire et homogène.
Optimisation du temps de chargement des données
Maintenir le temps de chargement sous contrôle est toujours l'une des grandes priorités pour pratiquement toutes les applications Internet que nous développons car cela affecte directement l'efficacité d'un programme. Pour un programme Web riche en données comme TotalCrypto, le temps de chargement était une préoccupation anticipée, car le site Web gère les données d'environ 20 sites distincts.
Le chargement de toutes les informations d'échange lors du chargement de la page de manière traditionnelle n'était pas le moyen idéal pour charger les informations et nous l'avons également expérimenté de première main. L'application Web a immédiatement révélé des temps de chargement élevés en raison du nombre de données chargées lors du chargement de la page.
Notre solution:
La réparation a été déployée en utilisant un mécanisme de chargement d'informations asynchrone avec AJAX. De cette manière, chaque fois que la page était chargée, un appel asynchrone était effectué dans la base de données pendant que la page était chargée et que les composants HTML / CSS étaient laissés.
Par conséquent, à ce moment-là, le chargement de la page est terminé, les informations étaient presque chargées et il n'a fallu que quelques secondes de plus pour charger complètement les données.
C'était comme une approche de direction du temps pour charger le contenu de l'application Web qui a immédiatement abouti à un taux de chargement optimisé pour le programme.
Conclusion
En utilisant l'API développée publiquement, nous avons également étendu les efforts de développement d'un plugin WordPress qui fournit toutes les données d'échange de crypto-monnaie et des indicateurs de marché uniques comme un widget WordPress. Avec l'ensemble du programme développé dans SailsJS où les éléments visuels sont séparés de la logique de base, alors ce programme Node.JS est aussi adaptable qu'il le reçoit.
Le futur proche offre des opportunités de développement intéressantes pour les personnes travaillant en tant que partenaires de développement pour Totalcryptos. Restez à l'écoute de notre site Web pour plus d'informations sur les développements les plus récents.
Jusque-là, contactez-nous avec vos demandes concernant cet article ou si vous cherchez à employer un développeur Web pour créer et établir votre application Web. Adios!