Qu'est-ce que le langage de programmation Move?
Comprendre le logiciel derrière Diem
Le mois dernier, Meta a annoncé la vente de sa cryptomonnaie stable Diem à Silvergate, la première banque du secteur des crypto-monnaies. (Pour un aperçu détaillé de cette vente et de Silvergate, consultez notre rapport récent.) Silvergate exploite le Silvergate Exchange Network (SEN), un système de transfert d'actifs 24/7 utilisé par de nombreux top des échanges cryptographiques. Silvergate prévoit d'utiliser l'infrastructure Diem qu'ils ont acquise pour introduire une cryptomonnaie stable adossé au dollar pour le SEN.
Une partie cruciale du package Diem pour lequel Silvergate a payé près de 200 millions de dollars est le langage de programmation Move. Une grande partie de la raison pour laquelle le projet Diem (anciennement Libra) a pris si longtemps à Meta était la création d'un langage de programmation propriétaire pour la crypto-monnaie. Dans cet article, nous examinerons les points forts de Move et ses utilisations futures alors que Silvergate trace l'avenir de Diem.
Mots clés
Avant de continuer, nous devons définir un vocabulaire clé. Attention, cet article va devenir assez technique.
Langage de programmation - "Un ensemble de commandes, d'instructions et d'autres syntaxes utilisées pour créer un programme logiciel." Move est le langage de programmation de Diem, qui permet à la fois les fonctionnalités de base de la crypto-monnaie et la création d’applications futures pour Diem.
Blockchain - "Une base de données numérique contenant des informations (telles que des enregistrements de transactions financières) qui peuvent être simultanément utilisées et partagées au sein d'un vaste réseau décentralisé et accessible au public." Les blockchains alimentent les crypto-monnaies, créant des registres immuables des transactions qui ont lieu. Un consensus doit être atteint avant que les transactions soient enregistrées.
Trilemme Blockchain - La difficulté à atteindre la sécurité (résistance aux attaques), l'évolutivité (capacité de croissance) et la décentralisation (répartie entre la géographie et les utilisateurs) pour les réseaux blockchain. Jusqu'à présent, les blockchains ont eu du mal à atteindre ces trois objectifs. Aujourd'hui, bon nombre des principales blockchains, telles qu'Ethereum, sont sécurisées et décentralisées. Cependant, cela entraîne des vitesses lentes et des frais de transaction élevés, ce qui affecte négativement leur évolutivité. Diem, comme la plupart des blockchains, vise à résoudre le trilemme. Le déménagement est une grande partie de cette solution
Logique linéaire - Un système de logique mathématique créé par Jean-Yves Girad en 1987 qui met l'accent sur les formules comme ressources, plutôt que des vérités complètes ou nécessitant des preuves complètes. Le changement clé est que les ressources ne peuvent être utilisées qu'une seule fois, plutôt que traitées comme vraies en permanence. (c'est-à-dire « Si vous me donnez A une fois, je vous donnerai B une fois », au lieu de « A peut être échangé contre B.») Cela rend la logique linéaire utile en informatique, où confiner une formule à une ressource au lieu de traiter elle en tant que vérité universelle permet des systèmes plus polyvalents.
Ressource - L'unité de base des systèmes logiques linéaires. Dans Move, "une ressource ne peut jamais être copiée ou implicitement supprimée, mais seulement déplacée entre des emplacements de stockage du programme". La nécessité pour les jetons, les registres et autres éléments de la blockchain d'être permanents est la raison pour laquelle la logique linéaire, en particulier les ressources, a été utilisée pour construire le langage Move.
C'est quoi Move?
Move est le langage de programmation conçu pour la Diem Blockchain. Move et Diem ont été créés par l’Association Diem, un consortium technologique soutenu par Meta. Récemment, le projet Diem, y compris le langage Move, a été vendu à Silvergate.
Le format exécutable de Move est ” un bytecode de niveau supérieur à l'assemblage mais de niveau inférieur à celui d'un langage source. Le bytecode est vérifié en chaîne pour la sécurité des ressources, du type et de la mémoire par un vérificateur de bytecode, puis exécuté directement par un interpréteur de bytecode”. Ce mécanisme a été conçu pour maximiser la sécurité, sans ajouter le coût de la compilation aux transactions, en minimisant les frais de gaz par rapport à Ethereum. Ceci est un exemple de Move essayant de résoudre le trilemme à travers sa conception.
Ressources : quels sont les traits distinctifs de Move
Le principal facteur qui sépare Move des autres langages de programmation est son utilisation des ressources, qui est tirée de l'idée mathématique de la logique linéaire. Dans la logique linéaire, les formules sont traitées comme des ressources fondamentales qui ne peuvent être utilisées qu'une seule fois. Ensuite, dans Move, "une ressource ne peut jamais être copiée ou implicitement supprimée, mais uniquement déplacée entre des emplacements de stockage". Move permet aux développeurs d'encoder des types de ressources personnalisés qui sont traités comme "de première classe" et ne peuvent pas être dupliqués ou effacés.
Ceci est activé par le système de type statique de Move. Cela signifie que les variables dans le langage de programmation doivent être définies comme un certain type (c'est-à-dire un nombre ou un mot). Dans Move, ce système protège la nature de première classe des ressources. Cependant, les ressources peuvent toujours être utilisées de la même manière que tout autre élément moins protégé. Ils peuvent être stockés dans des structures de données ou transmis comme arguments à des procédures (fournies comme valeurs à utiliser pour un calcul).
Tout cela signifie que les ressources de Move bénéficient d'un haut niveau de sécurité et d'expressivité. Ils sont protégés dans le code, mais peuvent également être utilisés librement pour toutes sortes d'opérations. Cette combinaison est parfaite pour la programmation blockchain, car elle aborde à la fois les aspects de sécurité et d'évolutivité du trilemme. Actuellement, la «cryptomonnaie Diem, le traitement des transactions et la gestion des validateurs» sont tous encodés comme des ressources avec Move.
Les ambitions de Move
Le livre blanc de Move établit une liste claire des motivations du langage qui a inspiré sa conception. Ils notent également les défis de la création de systèmes de blockchain publics, qui affectent non seulement Move, mais tous les langages de programmation de blockchain.
Ils notent principalement que Diem (Libra) doit être un "système ouvert", où n'importe qui peut voir l'état de la blockchain et soumettre des transactions. C’est radicalement différent des logiciels traditionnels de gestion d'actifs, comme un service bancaire numérique, car ce sont des systèmes profondément fermés. L'accès n'est possible qu'avec des autorisations spéciales (dont les plusieurs niveaux existent) et la transparence à l'égard des autres utilisateurs est très limitée.
Mais dans un blockchain, "tous les participants sont sur un pied d'égalité". Cela introduit un certain nombre de défis. L'un des principaux consiste à empêcher la soumission de transactions non valides, telles qu'un utilisateur tentant de transférer les actifs d'un autre. De plus, les blockchains doivent capturer deux aspects de la monnaie traditionnelle qui sont difficiles à exécuter dans un logiciel. La première est la rareté; la duplication d'actifs doit être interdite et la création de nouveaux actifs doit être privilégiée. (La mise en œuvre de ce privilège dans un système égalitaire et ouvert est particulièrement difficile et limite considérablement la décentralisation d'un tel système.) Deuxièmement, l'accès ; la capacité d'un utilisateur à contrôler et à protéger ses actifs est d'une importance primordiale. L'utilisation de ressources protégées de première classe dans Move est en grande partie une tentative de résoudre ces problèmes de rareté et d'accès.
L'équipe d'ingénieurs a répertorié trois problèmes clés rencontrés avec les langages de blockchain existants, en particulier Bitcoin Script et la machine virtuelle Ethereum (les principaux langages de programmation pour Bitcoin et Ethereum respectivement).
1. Encodage indirect des actifs
Puisque la programmation est exécutée mathématiquement, de nombreux éléments différents sont représentés sous forme de nombres entiers. Cela inclut les actifs de la blockchain comme une crypto-monnaie, ce qui est le cas dans Bitcoin et Ethereum. Les ingénieurs de Move ont estimé que cela rendait «maladroit et sujet aux erreurs» pour écrire des programmes basés sur des actifs cryptographiques. C'est pourquoi Move représente Diem comme une ressource.
2. Rareté inextensible
Le langage de Bitcoin et Ethereum fait un bon travail pour protéger la rareté de leur crypto-monnaie principale. Cependant, les langages ne sont pas bien construits pour créer de nouveaux actifs avec des qualités rares. C'est un problème particulier pour la machine virtuelle Ethereum, qui permet la création de jetons ERC-20 basés sur la blockchain Ethereum. Dans ces cas, les développeurs doivent gérer eux-mêmes la rareté sans le support du langage. Move a cherché à changer cela.
3. Contrôle d'accès inflexible
De la même manière qu'avec la rareté, Bitcoin et Ethereum contrôlent étroitement l'accès à leurs principales crypto-monnaies, de sorte que la propriété et le transfert ne puissent être altérés. Cependant, cela ne s'étend pas facilement à d'autres éléments, et le niveau ou les moyens d'accès ne peuvent pas non plus être personnalisés. De la même manière qu'avec la rareté, les ingénieurs de Move ont cherché à rendre ces fonctionnalités plus extensibles et personnalisables pour rendre le langage plus polyvalent et évolutif.
Pour rester au courant de notre travail, assurez-vous de suivre Pontem sur Twitter, abonnez-vous sur Medium et connectez-vous avec nous sur Telegram.