|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Déplacer (langage de programmation)
Qu'est-ce que Move (langage de programmation) ?
Le langage de programmation Move a été initialement utilisé pour construire la blockchain Diem. Il a été créé par la Diem Association, un consortium technologique soutenu par Meta. Bien que la blockchain ait finalement été abandonnée, Move est toujours utilisée aujourd’hui.
Le langage de programmation Move est un langage de bytecode exécutable. Il met en œuvre des contrats intelligents et des transactions personnalisées. Move vise à remédier aux problèmes découlant d’autres langages de programmation blockchain, comme Solidity. Cependant, les objectifs fondamentaux visant à parvenir à la rareté numérique et au contrôle des actifs numériques restent les mêmes. En particulier, il vise également à éviter les doubles dépenses et permet aux détenteurs d’actifs numériques de conserver les informations de propriété.
Ce faisant, Move maximise la sécurité tout en conservant une conception simplifiée et des coûts de gaz nettement inférieurs à ceux des blockchains non construites sur Move.
Comment fonctionne le langage de programmation Move ?
Move utilise une logique linéaire, ce qui signifie que les ressources ne peuvent être utilisées qu'une seule fois et ne sont jamais copiées ou implicitement supprimées. Cela permet aux développeurs d'encoder des types de ressources personnalisés qui ne peuvent pas être effacés ou dupliqués et qui sont mieux traités que les autres.
Le système de types statiques de Move est l'endroit où les variables doivent être définies comme un type (un nombre/un mot). Il protège les ressources prioritaires. Néanmoins, ils peuvent être utilisés comme des éléments normaux et stockés dans des structures de données ou fournis comme valeurs dans les calculs. Les ressources sont également transparentes dans les modules et ne peuvent pas être appelées par des sources externes.
De plus, les modules de Move sont flexibles et sûrs puisque la relation entre les modules, les ressources et les procédures est similaire à la relation entre les classes, les objets et les méthodes dans la programmation orientée objet.
Move peut également vérifier tous les traits de sécurité en chaîne et prendre en charge les outils de vérification statique hors chaîne. Cela réduit considérablement les complexités liées à la vérification en chaîne. Sa conception repose sur trois décisions fondamentales :
L'absence de répartition dynamique évite la construction de graphiques d'appels et permet une détermination statique du site d'appel. Cela permet à Move d’identifier les effets d’un appel de procédure plus facilement et sans complexités supplémentaires.
Grâce à sa modularité, les modules peuvent être isolés pour une vérification fonctionnelle, et ils aident à extraire les données et à localiser les opérations critiques sur les ressources. La sécurité est garantie en encapsulant le module aux côtés du système de types du langage, ce qui signifie que le code en dehors d'un module ne peut pas violer ses types. De plus, en examinant les modules isolés, il fournira une vérification fonctionnelle approfondie des invariants significatifs des modules.
Enfin, sa mutabilité limitée permet d'utiliser des types référence similaires au C++. Les références sont essentielles pour muter chaque valeur de déplacement, et généralement les valeurs temporaires sont créées et détruites dans un script de transcription. Semblable à Rust, le vérificateur de bytecode de Move « emprunte des contrôles » pour confirmer au moins une référence mutable.
Enfin, Move rejette les programmes ne respectant pas la sécurité des types, la sécurité de la mémoire et la sécurité des ressources. Au lieu de cela, un langage de programmation de haut niveau avec un compilateur, chargé de vérifier les propriétés, peut être utilisé. L'alternative est un assemblage non typé de bas niveau avec des contrôles de sécurité.
En quoi le langage de programmation Move est-il différent ?
Le langage de programmation Move se distingue des autres langages de programmation blockchain de plusieurs manières :
Il n'y a pas de limites dans la définition de types de données personnalisés de procédures.
Il intègre les politiques de contrôle d’accès dans la sémantique du langage.
Il supprime un système de type par défaut pour les actifs numériques (contrairement à Bitcoin ou Ethereum).
Il permet de trouver des actifs uniques avec représentation dans le langage de programmation. Les actifs personnalisés doivent être examinés pour leurs propriétés de sécurité par leur développeur.
Cela permet à Move de créer facilement de nouveaux actifs rares, sans obliger les développeurs à les concevoir eux-mêmes. De plus, il permet aux développeurs de modifier et de personnaliser le contrôle d'accès, rendant le langage de programmation plus polyvalent et évolutif que ses concurrents.
Composants du langage de programmation Move
Le langage de programmation Move comporte plusieurs composants qui constituent sa base.
Les types
Il peut s'agir d'entiers booléens non signés (64 bits), de tableaux d'octets de taille fixe et de types de données d'adresse (256 bits).
Structure
Deux types spécifiques : gentil et sans restriction. Le premier fait référence aux structures de ressources et le second aux structures générales.
Procédures
Méthodes publiques ou internes. La dépendance acyclique du module aide à parer toute attaque de ré-entrée.
Vérificateur de bytecode
Se concentre sur la vérification des caractéristiques de sécurité avant la publication du module. Avant que les programmes ne soient mis en ligne sur le réseau, ils passent par le vérificateur et passent plusieurs étapes de vérification telles que :
Vérification du type
Vérification du solde de la pile
Vérification des références
Développement de graphiques de contrôle
Lien de référence
Vérification des ressources
Interpréteur de bytecode
Il fait suite à la vérification et est similaire à Ethereum utilisant du gaz. Ainsi, il garantit des exécutions de boucles infinies.
Déplacer la machine virtuelle
Semblable à d’autres blockchains, avec des blocs contenant plusieurs transactions et chaque transaction exécutée pour créer un effet de transaction. L'effet génère l'état global mis à jour de la blockchain, avec une séparation entre les effets et les transitions d'état.
Quelles blockchains utilisent le langage de programmation Move ?
Move a été utilisé dans la blockchain Diem abandonnée par Meta. Les blockchains actuelles construites sur Move incluent la blockchain Aptos et la blockchain Sui.
Couche de consensus
La couche de consensus est l’épine dorsale de tout réseau blockchain, jouant le rôle essentiel de faciliter l’accord entre les nœuds sur le véritable état de la blockchain. |
Pièces IA
Les pièces d'IA sont conçues pour rationaliser les transactions et les interactions liées à l'IA, tout en garantissant la transparence et la sécurité grâce à la technologie blockchain. |
Preuve de participation louée (LPoS)
Leased Proof of Stake (LPoS) est un mécanisme de consensus qui permet aux détenteurs de crypto-monnaie de louer leurs pièces à des nœuds d'un réseau. |