Move est un langage de contrat intelligent conçu pour l'environnement blockchain, capable de fonctionner sur des chaînes prenant en charge MoveVM. Sa conception prend en compte les problèmes de sécurité liés à la blockchain et aux contrats intelligents, en s'inspirant de certains principes de conception de sécurité de Rust. Cet article analysera la sécurité du langage Move sous trois aspects : les caractéristiques linguistiques, le mécanisme d'exécution et les outils de vérification.
1. Les caractéristiques de sécurité du langage Move
Le langage Move améliore la sécurité en renonçant à une certaine flexibilité, ne prend pas en charge la dispatch dynamique et les appels externes récursifs, mais utilise des concepts tels que les génériques, le stockage global, les ressources, etc., pour réaliser un mode de programmation alternatif.
Les principaux composants de Move incluent :
Module : composé de types de structures et de définitions de processus
Structure: peut être défini comme un type de ressource, stocké dans un stockage clé-valeur global.
Processus : définir la logique du contrat
Le stockage global de Move permet la persistance des données, qui ne peuvent être lues et écrites de manière programmatique que par le module propriétaire, mais qui peuvent être consultées dans le grand livre public.
Move garantit la sécurité de la compilation du code par deux mécanismes :
Invariant Reduction : utilisé pour le contrôle statique, définit la conservation de l'état du système
Vérificateur de bytecode : impose des types de sécurité et une linéarisation, empêche les opérations illégales
2. Mécanisme de fonctionnement de Move
Le programme Move s'exécute dans une machine virtuelle et ne peut pas accéder directement à la mémoire système. Il adopte un modèle d'exécution basé sur une pile, divisant le stockage global en mémoire (, pile ) et variables globales (.
L'état du Move est composé de la pile d'appels, de la mémoire, des variables globales et des opérations. Pendant l'exécution, la pile d'appels conserve les informations de contexte, et les sauts statiques évitent la distribution dynamique, ce qui prévient les attaques par réentrance.
MoveVM sépare le stockage de données et la pile d'appels, contrairement à EVM. Cette conception améliore la sécurité et l'efficacité d'exécution.
![Analyse de la sécurité de Move : le changeur de jeu du langage de contrat intelligent])https://img-cdn.gateio.im/webp-social/moments-372ff914a241634ca57784dc9685a03d.webp(
) 3. Déplacer Prover
Move Prover est un outil de vérification formelle qui utilise des algorithmes de vérification inductive pour valider l'exactitude des programmes. Son flux de travail est le suivant :
Recevoir le fichier source Move et les spécifications
Compiler en bytecode et vérifier le modèle d'objet
Convertir en langage intermédiaire Boogie
Générer des conditions de vérification
Utiliser le solveur Z3 pour vérifier
Générer un rapport de diagnostic
Le langage de spécification Move est utilisé pour décrire les spécifications des programmes, et peut être écrit indépendamment du code métier.
4. Résumé
Move prend en compte de manière exhaustive la conception du langage, l'exécution de la machine virtuelle et les outils de sécurité. Il sacrifie une certaine flexibilité, mais améliore la sécurité et la vérifiabilité. Les vulnérabilités courantes de l'EVM, telles que la réentrance, le dépassement de capacité, etc., peuvent être efficacement évitées, mais il est toujours nécessaire de prêter attention aux problèmes d'authentification, de logique et de dépassement de capacité des grands entiers.
Bien que Move offre plusieurs garanties de sécurité, il est toujours conseillé aux développeurs d'utiliser des services d'audit de sécurité tiers et de confier la rédaction et la validation des normes à des entreprises de sécurité professionnelles.
![Analyse de la sécurité de Move : le changeur de jeu des langages de contrats intelligents]###https://img-cdn.gateio.im/webp-social/moments-f7cd11fef1c66709b219e1a1e8d2e4da.webp(
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
26 J'aime
Récompense
26
8
Reposter
Partager
Commentaire
0/400
CountdownToBroke
· 08-04 13:47
Encore un plagiat de rust, c'est à peu près équivalent à ce que l'ami a écrit une version édulcorée.
Voir l'originalRépondre0
TerraNeverForget
· 08-03 01:26
On recommence à se battre, n'est-ce pas ? Alors je me bats aussi.
Voir l'originalRépondre0
DuckFluff
· 08-02 19:38
Et Rust a emprunté une partie, ça fait vraiment mal à la tête.
Voir l'originalRépondre0
SurvivorshipBias
· 08-01 22:52
Move est trop sûr, les requins n'auront plus à manger.
Voir l'originalRépondre0
Ser_This_Is_A_Casino
· 08-01 22:50
On a l'impression que move est un peu trop rigide, encore plus que rust.
Voir l'originalRépondre0
SchrodingerAirdrop
· 08-01 22:50
Je ne peux vraiment plus apprendre, c'est vraiment ennuyeux.
Voir l'originalRépondre0
MetaverseMigrant
· 08-01 22:49
Écrire en move n'est pas aussi rapide que de courir...
Voir l'originalRépondre0
GasFeeDodger
· 08-01 22:45
Il vaut mieux écrire en solidity, c'est vraiment pénible.
Analyse complète de la sécurité de Move : caractéristiques du langage, mécanisme d'exécution et outils de validation
Analyse de la sécurité du langage Move
Introduction
Move est un langage de contrat intelligent conçu pour l'environnement blockchain, capable de fonctionner sur des chaînes prenant en charge MoveVM. Sa conception prend en compte les problèmes de sécurité liés à la blockchain et aux contrats intelligents, en s'inspirant de certains principes de conception de sécurité de Rust. Cet article analysera la sécurité du langage Move sous trois aspects : les caractéristiques linguistiques, le mécanisme d'exécution et les outils de vérification.
1. Les caractéristiques de sécurité du langage Move
Le langage Move améliore la sécurité en renonçant à une certaine flexibilité, ne prend pas en charge la dispatch dynamique et les appels externes récursifs, mais utilise des concepts tels que les génériques, le stockage global, les ressources, etc., pour réaliser un mode de programmation alternatif.
Les principaux composants de Move incluent :
Le stockage global de Move permet la persistance des données, qui ne peuvent être lues et écrites de manière programmatique que par le module propriétaire, mais qui peuvent être consultées dans le grand livre public.
Move garantit la sécurité de la compilation du code par deux mécanismes :
Invariant Reduction : utilisé pour le contrôle statique, définit la conservation de l'état du système
Vérificateur de bytecode : impose des types de sécurité et une linéarisation, empêche les opérations illégales
2. Mécanisme de fonctionnement de Move
Le programme Move s'exécute dans une machine virtuelle et ne peut pas accéder directement à la mémoire système. Il adopte un modèle d'exécution basé sur une pile, divisant le stockage global en mémoire (, pile ) et variables globales (.
L'état du Move est composé de la pile d'appels, de la mémoire, des variables globales et des opérations. Pendant l'exécution, la pile d'appels conserve les informations de contexte, et les sauts statiques évitent la distribution dynamique, ce qui prévient les attaques par réentrance.
MoveVM sépare le stockage de données et la pile d'appels, contrairement à EVM. Cette conception améliore la sécurité et l'efficacité d'exécution.
![Analyse de la sécurité de Move : le changeur de jeu du langage de contrat intelligent])https://img-cdn.gateio.im/webp-social/moments-372ff914a241634ca57784dc9685a03d.webp(
) 3. Déplacer Prover
Move Prover est un outil de vérification formelle qui utilise des algorithmes de vérification inductive pour valider l'exactitude des programmes. Son flux de travail est le suivant :
Le langage de spécification Move est utilisé pour décrire les spécifications des programmes, et peut être écrit indépendamment du code métier.
4. Résumé
Move prend en compte de manière exhaustive la conception du langage, l'exécution de la machine virtuelle et les outils de sécurité. Il sacrifie une certaine flexibilité, mais améliore la sécurité et la vérifiabilité. Les vulnérabilités courantes de l'EVM, telles que la réentrance, le dépassement de capacité, etc., peuvent être efficacement évitées, mais il est toujours nécessaire de prêter attention aux problèmes d'authentification, de logique et de dépassement de capacité des grands entiers.
Bien que Move offre plusieurs garanties de sécurité, il est toujours conseillé aux développeurs d'utiliser des services d'audit de sécurité tiers et de confier la rédaction et la validation des normes à des entreprises de sécurité professionnelles.
![Analyse de la sécurité de Move : le changeur de jeu des langages de contrats intelligents]###https://img-cdn.gateio.im/webp-social/moments-f7cd11fef1c66709b219e1a1e8d2e4da.webp(