Sui.

Publication

Partagez vos connaissances.

article banner.
Meaning.Sui.
Jul 08, 2025
Article

Analyse approfondie des détails techniques de Move VM

Sui : analyse approfondie des détails techniques de Move VM

Dans le domaine actuel de la technologie blockchain,Move VM, en tant que composant technique clé, joue un rôle important dansSui. Cet article fournit uneanalyse approfondiedes détails techniques de Move VM, notamment :

  • Processus d'initialisation
  • Mécanisme de mise en cache du code
  • Publication de modules et de scripts
  • Exécution des fonctions
  • Analyse des formats binaires

##1. Déplacer l'initialisation de la machine virtuelle

L'initialisation de Move VM estsimple et efficace. LoaderIl ne nécessite qu'une seule Mutexinstance, essentiellement quelques HashMaptables vides protégées comme Vecet.

Ce processus est peu coûteux et jette les bases de toutes les opérations de machine virtuelle.

Move VM utilise lechargement de code à la demande. Le code n'est pas préchargé ; au lieu de cela, il est récupéré lors de l'exécution de la fonction ou du script.

Une fois chargés, les modules/scripts sontmis en cache et réutilisés, ce qui améliore considérablement les performances.


##2. Mécanisme de mise en cache du code

2.1 Premier chargement

Lorsque la machine virtuelle charge un module pour la première fois :

  1. Vec<u8>Interroge le magasin de données pour récupérer des données binaires ()
  2. Désérialise et vérifie l'exactitude et l'intégrité des données
  3. Charge toutes les dépendances avec le même processus
  4. Lie le module à ses dépendances
  5. Met en cache le module via Loaderpour le réutiliser pendant le cycle de vie de la machine virtuelle

2.2 Cohérence du cache

-Les transactions système(comme les mises à niveau matérielles) peuvent perturber la cohérence du cache de code.

  • Le client doitsuspendre le traitement des transactionset redémarrer la machine virtuelle lorsque cela se produit.
  • Les clients doivent aligner leur DataStorevue sur le code chargé et réinstancier la machine virtuelle si nécessaire.

#3. Processus de publication des modules

Pour publier un module, le client appelle publish_moduleavec :

  • Octets de module sérialisés
  • Adresse de l'expéditeur
  • Une référence à GasMeter

Étapes :

1.Désérialisation

  • En cas d'échec → renvoie une erreur.

2.Validation de l'adresse

  • L'adresse du module doit correspondre à l'adresse de l'expéditeur → sinonMODULE_ADDRESS_DOES_NOT_MATCH_SENDER.

3.Contrôle de dupliquation DUPLICATE_MODULE_NAME- Republication du module du même nom → erreur.

4.Vérification du chargement

  • Garantit que le module peut être chargé ultérieurement. Échoue ? Erreur de retour.

5.Écrire dans Storage

  • Une fois vérifié, le module sérialisé est enregistré et considéré comme valide.

N° 4. Mécanisme d'exécution des scripts

Un script dans Move est essentiellement une fonction ponctuelle, souvent utilisée pour exécuter des transactions.

Étapes :

1.Charger le script et la fonction principale

  • Calculez le sha3_256hachage du script.
  • Utilisez le hachage pour vérifier s'il se trouve dans le cache.
  • S'il n'est pas mis en cache → chargez et vérifiez.
  • Vérifiez les paramètres du type de fonction principal.

2.Liste des paramètres de construction

  • Signervaleurs basées sur les comptes des expéditeurs. TYPE_MISMATCH- Les autres arguments doivent correspondre aux types autorisés → else.

3.Exécuter le script

  • La machine virtuelle appelle un interpréteur.
  • En cas d'erreur → la transaction échoue et l'erreur est renvoyée.
  • Sinon → retour réussi.

N° 5. Exécution de fonctions de script

Introduit dans Move VM v2.0.

  • Fonctionne comme un script normal
  • La source est une scriptfonction visible à l'intérieur d'un module en chaîne

Étapes :

  1. Chargez la fonction en utilisant un ModuleIdnom de fonction
  2. Vérifier la visibilité (script)
  • Le script n'est pas visible ? → EXECUTE_SCRIPT_FUNCTION_CALLED_ON_NON_SCRIPT_VISIBLE
  1. Exécute le même script que le script normal

N° 6. Exécution générale des fonctions

Move VM vous permet d'exécuternimporte quelle fonctiondans un module par son nom.

Les noms de fonctions sontuniquesdans un module → aucune signature n'est requise.

Étapes d'exécution :

1.Module de charge

  • En cas d'erreur → échec du retour

2.Fonction de résolution

  • S'il n'est pas trouvé → FUNCTION_RESOLUTION_FAILURE
  • Vérifiez que les paramètres de type correspondent → sinon erreur

3.Liste des paramètres de construction

  • Faites correspondre tous les paramètres aux types autorisés → sinon TYPE_MISMATCH

4.Exécuter

  • L'interpréteur exécute la fonction
  • La machine virtuelle renvoie le résultat

N° 7. Analyse des formats binaires

7.1 Architecture globale

  • Tous les modules/scripts existent sousforme binaire
  • Modules = collections de fonctions et de structures
  • Scripts = points d'entrée simples (aucune valeur de retour)

UtiliseULEB128pour la compression des entiers et lepréfixe de taillepour les vecteurs.

7.2 En-tête binaire

3 composants :

-Magie : 4 octets fixes → 0xA1, 0x1C, 0xEB, 0x0B -Version : entier little-endian sur 4 octets -Nombre de tableaux : ULEB128

7.3 En-têtes de tableau

Chaque en-tête comprend :

  • TableKind(1 octet)
  • TableOffset(ARTICLE 128)
  • TableLength(ARTICLE 128)

Les tables doivent êtrecontigueset ne pas se chevaucher.

7.4 Détails du tableau

Les tableaux décrivent :

MODULE_HANDLES: emplacements des modules via index -ADDRESS_IDENTIFIERS,, IDENTIFIERS``STRUCT_HANDLESFUNCTION_HANDLES: métadonnées de type et de fonction -FUNCTION_INSTANTIATIONS,SIGNATURESCONSTANT_POOL: instanciations et constantes

7.5 Définitions auxiliaires

Type Parameter KindALL: 1 octet →COPYABLE,, RESOURCESignatureToken: 1 octet pour représenter les types (U8``U64,STRUCT, etc.) Bytecodes``POPRET: opcode 1 octet + charge utile optionnelle → par exemple,, BR_TRUE

7.6 Données binaires spécifiques au script

  • Manque de scripts FUNCTION_DEFINITIONS
  • Au lieu de cela, ils intègrent directement les informations d'entrée :
  • Nombre et types de paramètres de type
  • Index des types de paramètres
  • Longueur et corps du bytecode

✅ Conclusion

Move VMoffre un environnementpuissant, sécurisé et efficacepour l'exécution de la blockchain. En comprenant :

  • Initialisation de la machine virtuelle
  • Stratégies de mise en cache
  • Exécution des fonctions/modules
  • Structure binaire

Les développeurs peuventoptimiser leurs applications basées sur Moveet résoudre les problèmes efficacement, contribuant ainsi à l'évolution de l'écosystème Sui.

  • Sui
  • Architecture
1
Partager
Commentaires
.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

1170Publications3665Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesAoût