Skycoin Francophone
9 min readSep 7, 2019

CX : Le langage de programmation de la prochaine génération de blockchaine

Le projet Skycoin se compose de plusieurs éléments clés avec de multiples solutions pour créer un écosystème équilibré. CX est le langage de spécification et de programmation de Skycoin. Contrairement à d'autres projets de blockchaine qui se vantent d'utiliser des contrats intelligents pour appliquer automatiquement les accords numériques, Skycoin utilise CX, un langage de programmation complet avec la capacité de servir d'intermédiaire numérique contractuel et de contenir des fonctions simples et complexes. Les rapports d'erreurs, les instructions de flux de contrôle telles que si/d'autres, pour les boucles, les tableaux, les tranches, les pointeurs et les packages sont toutes des fonctionnalités standard dans le langage de programmation CX. En tant que langage de programmation général, CX sera utilisé pour créer n'importe quoi, des sites Web aux applications mobiles, en passant par les applications de bureau. CX est en développement continu.

CX vs contrats intelligents

Si les contrats intelligents sont la technique la plus récente pour l'exécution d'accords de blockchaines, CX est le langage complet pour créer des cas d'utilisation étendue de la technologie numérique, grâce à des contrats intelligents ainsi que des méthodologies plus avancées. Les contrats intelligents sont une technique révolutionnaire pour faire des affaires sans avoir recours à des intermédiaires. Les contrats intelligents sont l'équivalent numérique d'un contrat physique, où le logiciel peut négocier les règles d'un accord et vérifier numériquement que les obligations sont remplies. Ils ont cependant leurs limites. Lors du déploiement de contrats intelligents, un programmeur doit s'assurer de maintenir précis un code précis. Si des erreurs sont trouvées dans le contrat intelligent, que ce soit de manière logique ou programmatique, il est difficile de modifier les termes du contrat pendant son utilisation. Vous pouvez considérer les contrats intelligents comme une méthode bidirectionnelle d'exécution d'accords semblable à un appel entre deux utilisateurs de téléphone cellulaire. CX est le réseau de langage qui peut communiquer et créer de la logique avec une pléthore d'applications utilisées dans tous les téléphones cellulaires aux systèmes informatiques standard en passant par les vêtements.

Principales caractéristiques de CX

CX possède plusieurs caractéristiques clés qui distinguent sa capacité à fournir un cas d'utilisation convaincant pour de futures applications de blockchaine. Bitcoin est écrit en C++ qui a le problème inhérent de ne pas être en sécurité mémoire, ce qui le rend sensible aux erreurs de codage qui peuvent conduire à des attaques. C'est pourquoi le code de Bitcoin ne peut être travaillé que par quelques développeurs à la fois. CX pour Skycoin utilise Golang qui résiste à l'exécution de code arbitraire, à une vulnérabilité ou à un bug logiciel. Cela empêche les erreurs de codage d'entraîner des problèmes plus vastes de sécurité des applications de la blockchaine.

Bibliothèques OpenGL et OpenGLFW

Actuellement, CX peut être utilisé pour créer des applications et des jeux en ligne de commande en utilisant Open Graphics Library (OpenGL), une interface de programmation d'applications (API) multilingue et multiplateforme pour rendre des graphiques vectoriels 2D et 3D, et GLFW une bibliothèque multi-plateforme pour OpenGL. CX n'a besoin que d'importer "gl" et "glfw" pour avoir un accès complet aux fonctions disponibles dans les deux bibliothèques.

Kittycash est l'exemple parfait d'une application qui fonctionne sur CX. Chaque personnage Kittycash représentera un personnage in-game qui sera jouable par des applications construites sur CX. Auparavant, la création d'applications et de jeux sur la blockchaine s'est avérée irréalisable avec des mises à jour d'état de la blockchaine se produisant entre 30 secondes et plus de 15 minutes. Imaginez que vous essayez de jouer à un jeu où chaque interaction prend un minimum de 30 secondes. L'expérience de l'utilisateur s'ennuierait et les acteurs potentiels, même avec des incitations économiques, finiraient par s'ennuyer et passeraient à autre chose.

Actuellement, aucune des plates-formes existantes n'a de solution tangible. Le CX de Skycoin sera la première plate-forme qui disposera de mises à jour d'état de la blockchaine de 300 ms, permettant une expérience beaucoup plus conviviale. Les développeurs seront en mesure de créer des applications avec les incitations du marché, tout en offrant une expérience utilisateur souhaitable.

CX est un langage déterministe

Les applications des langages non déterministes dans l'espace de la blockchaine sont devenues discutables ; un langage non déterministe ne produit pas toujours le même résultat pour chaque entrée. Un processeur AMD peut ne pas avoir la même sortie qu'un processeur Intel, et l'entrée d'un ordinateur 32 bits peut ne pas toujours produire la même sortie que son équivalent 64 bits. Les langages non déterministes peuvent devenir gênants pour les applications de blockchaine où une sortie incorrecte due aux spécifications du système peut entraîner des bogues de sécurité dans une blockchaine. Les langues non déterministes peuvent avoir une influence directe sur les biens corporels lorsque des exploits multiples peuvent entraîner la perte de millions de dollars de biens. CX résout ce problème en tant que langage déterministe, ce qui signifie que pour chaque entrée, l'algorithme produira toujours la même sortie quelle que soit la machine sous-jacente.

Langage compilé et interprété

CX peut fonctionner comme un langage compilé et interprété. Cette fonctionnalité donne à CX l'avantage d'avoir la vitesse et l'efficacité de la mémoire comme un langage compilé, tout en étant capable d'avoir la flexibilité d'un langage interprété. Les langages compilés prennent le code source lisible et appliquent les conversions vers un équivalent binaire ; les langages compilés peuvent envoyer les fichiers binaires pour n'importe quel ordinateur à exécuter. Les langues interprétées envoient le code source à n'importe quel ordinateur, et cette machine doit utiliser un interprète pour traduire le code lisible dans sa langue binaire pendant l'exécution.

Le code compilé et interprété peut être considéré comme la traduction de différentes langues. Dans une langue compilée, vous êtes le traducteur, capable de parler plusieurs langues, du texte lisible par l'homme et le langage binaire des ordinateurs. Lors de l'exécution de langages interprétés, le compilateur a besoin d'un traducteur pour convertir le texte lisible par l'homme en son code machine équivalent. Puisque CX est à la fois un langage compilé et interprété, il peut tirer parti de ses fonctionnalités avancées telles que l'abordabilité, la sérialisation et l'avancement du programme. Tout en permettant un développement rapide, une interactivité et une programmation flexible.

Abordances pour une sécurité accrue

Dans CX il y a des ensembles de revendications appelées Affordances, qui indiquent quelles entités individuelles peuvent demander des fonctions et des objets. Affordance fonctionne comme un processus pour isoler les paquets d'ordinateur tout en fournissant également des mesures de sécurité qui limitent les fonctions qui permettent à des utilisateurs spécifiques d'accéder à des emplacements mémoire spécifiques du langage de programmation. Lors du piratage d'Ethereum DAO en 2016, les pirates ont utilisé des appels récursifs pour drainer efficacement les fonds du DAO pour un montant total de plus de 70 millions USD ; ceci était dû aux lacunes trouvées dans le contrat intelligent. Avec CX Affordance, les appels de fonction sont formalisés pour des utilisateurs spécifiques, éliminant les appels d'être utilisés par des entités non spécifiées, neutralisant ainsi efficacement la capacité des pirates comme le DAO de se produire.

Imaginez la création d'un objet qui est une clé numérique pour une usine. Affordance vous permet de définir les utilisateurs qui ont accès à cette clé et quand ils peuvent l'utiliser. Tout en dictant également quels utilisateurs ont accès aux zones sécurisées de l'usine. Si un programmeur voulait changer la clé et les zones auxquelles un utilisateur peut avoir accès, Affordance permet à l'utilisateur de restreindre ou d'accorder l'accès à une zone donnée. Si chaque zone de l'usine donne accès à un environnement de codage différent, Affordance est la possibilité que cet objet soit utilisé dans un environnement spécifique.

Affordance peut agir au niveau du programme en créant et modifiant des structures existantes dans un programme. CX utilise les affordances pour dicter comment les fonctions sont utilisées et par qui, rendant le langage assez puissant pour avoir des programmes qui créent des programmes en lui-même.

Programmation génétique (GP)

CX utilise les moyens financiers pour effectuer des programmes génétiques. La programmation génétique est une méthode d'évolution des programmes informatiques à l'aide d'algorithmes évolutifs. GP peut modifier les fonctions jusqu'à ce qu'il crée automatiquement la sortie souhaitée. En tant qu'outil d'apprentissage machine et moteur de résolution automatique de problèmes, GP se spécialise dans la résolution de problèmes où la structure exacte de la solution n'est pas connue. Les modèles prédictifs tels que l'ajustement des courbes, la modélisation des données et la classification sont tous des applications robustes de la programmation génétique.

Système de typage strict

CX a un système de dactylographie strict avec une fonte de type explicite. Les langages informatiques qui n'utilisent pas de fonte de type explicite peuvent être sujets à des erreurs. Ces erreurs peuvent être le résultat d'une fonte de type implicite effectuée par le compilateur. Dans le moulage de type implicite, contrairement aux types de données sont combinés et reçus automatiquement comme un seul type de données par le compilateur. L'utilisation de la fonte de type explicite permet aux utilisateurs d'avoir un contrôle absolu des types de données qui sont fournis au compilateur. Un nombre de 32 bits et un nombre de 64 bits ont chacun une distinction spécifique en CX, tout comme les nombres entiers et les nombres flottants, ainsi que les autres types de données. L'implémentation de ce système de dactylographie fait de CX un langage intrinsèquement plus sûr que les autres langages de programmation.

Le débogage devient plus simple car la plupart des erreurs que vous rencontreriez sont détectées au moment de la compilation.

Collecteur de déchets

CX est un langage de collecte des déchets, alors que d'autres langages utilisent une gestion manuelle de la mémoire qui nécessite que le programmeur identifie et désaffecte les objets non utilisés. Les langues avec collecte automatique des déchets utilisent des algorithmes pour récupérer les objets ou la mémoire qui ne sont plus utilisés par le programme. CX utilise l'algorithme mark-compact pour itérer et balayer chaque pointeur de la pile afin de trouver quels objets sont utilisés. L'algorithme mark-compact est efficace en mémoire et permet une expérience de programmation méthodique.

Explorateur d'objets

Dans un langage de programmation typique, l'utilisateur exécute un programme, et il devient ambigu pour un utilisateur de réaliser ce qui se passe pendant l'exécution. L'explorateur d'objets CX est une API qui peut être interrogée pour obtenir une liste des objets présents et vivants dans le tas. L'explorateur d'objets présentera une vue graphique de tous les objets, combien de mémoire ils prennent, et ce qu'ils font actuellement dans cet état. Cette fonctionnalité est avantageuse pour le débogage dans un environnement de programmation standard et précieuse pour les applications en blockchaine où l'utilisateur a besoin de savoir combien de mémoire chaque application réserve à chaque état d'un programme.

Sérialisation

Un avantage significatif de la programmation en CX est la sérialisation, la sérialisation en conjonction avec la fonction pas à pas de CX permet au programmeur d'avancer dans l'exécution d'un programme et d'arrêter le programme dans son état, un programmeur peut alors avancer dans un nombre quelconque de pas de programme. Dans CX, chaque objet a une méthode standard de sérialisation, ce qui permet à l'utilisateur d'arrêter le programme à son état actuel, de créer une sauvegarde ou de livrer du code à un nouveau système et de reprendre à l'état d'exécution qu'il a observé en dernier. La sérialisation est un outil précieux pour une programmation productive, permettant aux utilisateurs de tester et de déboguer activement des sections de programmes pendant toute la durée de son exécution. La sérialisation est utile pour la mise en réseau et l'envoi de données sur le Web ; CX rend cela facile en ayant un protocole de sérialisation standardisé. CX peut utiliser ses fonctions de programmation génétique pour automatiser les solutions de débogage tout en autorisant un débogueur à revenir à un état précédemment sauvegardé si la solution ne répond pas aux exigences de sortie.

Programmation interactive

En tant que langage robuste et polyvalent, CX offre aux programmeurs un moyen efficace de créer du code utilisable à partir de la plate-forme Skycoin. CX est le premier du genre dans le domaine de la blockchaine, offrant aux utilisateurs la vitesse et la confidentialité du code source d’un langage compilé, tout en bénéficiant de la flexibilité offerte par un langage interprété. L’inclusion d’Affordances permet aux utilisateurs de CX de fournir des méthodes de programmation sécurisées, tout en combinant également la modélisation prédictive d’une telle programmation génétique pour développer de nouvelles solutions aux problèmes.

Les structures des programmes sont modifiées à la volée de façon bien supervisée. Contrairement aux contrats intelligents d'Ethereum, l'abordabilité permet une mise à jour dynamique des contrats tout au long de la vie du programme.

CX - une solution d’application Blockchaine

"Quand nous avons conçu le CX, nous avons examiné les problèmes rencontrés avec Ethereum et Bitcoin et les avons résolus." -Synth

CX sera assez simple à apprendre, n’importe quel programmeur avec le désir peut commencer à construire des applications décentralisées avec une formation minimale, tout en étant assez résilient pour s’attaquer à certains des problèmes les plus difficiles associés à l’intégration des applications sur la blockchaine . D’un point de vue pratique, il est important que les projets puissent évoluer et pivoter avec une technologie en constante évolution. La Blockchaine étant l’émergence d’une technologie relativement nouvelle, le CX de Skycoin s’est placé dans la position la plus appropriée pour se développer et évoluer dans cet environnement technologique en évolution rapide.