Fonctionnement du langage de programmation Move
Comprendre le logiciel derrière Diem
Le mois dernier, Meta a annoncé la vente de son stablecoin Diem à Silvergate, la première banque dans le 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 24h/24 et 7j/7 utilisé par de nombreux grands échangeurs cryptographiques. Silvergate prévoit d'utiliser l'infrastructure Diem qu'ils ont acquise pour introduire un stablecoin adossé au dollar pour le SEN.
Un élément crucial 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 chez 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 d'aller plus loin, nous devons définir un vocabulaire clé. Attention, cet article devient 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 de futures applications 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 ne soient enregistrées.
Blockchain Trilemma: La difficulté à assurer la sécurité (résistance aux attaques), l'évolutivité (capacité de croissance) et la décentralisation (répartie sur 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 chaînes de blocs, telles que 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 sur 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ù limiter une formule à une ressource au lieu de la traiter en tant que vérité universelle permet d’obtenir 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, seulement déplacée entre des emplacements de stockage de 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 créer 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 la Diem Association, un consortium technologique soutenu par Meta. Récemment, le projet Diem, incluant 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é sur chaîne pour la sécurité de ressource, 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 tentant de résoudre le trilemme grâce à sa conception.
Ressources : Ce qui fait bouger Move
Le principal facteur qui sépare Move des autres langages de programmation est son utilisation de 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, uniquement déplacée entre des emplacements de stockage de programme". 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 (fournis 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 “pièce Diem, le traitement des transactions et la gestion du validateur” sont tous encodés en tant que ressources avec Move.
Les ambitions de Move
Le livre blanc de Move dresse 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. Ceci 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 il existe plusieurs niveaux) et la transparence est très limitée vis-à-vis des autres utilisateurs.
Mais dans une blockchain, "tous les participants sont sur un même 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 pour résoudre ces problèmes de rareté et d'accès.
L'équipe d'ingénieurs a répertorié trois problèmes clés qu'ils ont trouvé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
Étant donné que 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» l'écriture de 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 principale crypto-monnaie. 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 soutien des langues. Move a cherché à changer cela.
3. Contrôle d'accès inflexible
Comme pour 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 n'est pas facilement étendu à d'autres éléments, et le niveau ou les moyens d'accès ne peuvent pas non plus être personnalisés. Comme pour 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 à jour sur notre travail, assurez-vous de suivre Pontem sur Twitter, abonnez-vous sur Medium et connectez-vous avec nous sur Telegram.